about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:36 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-07 02:18:47 +0000
commit36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch)
treeb3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/applications/misc
parent4e31070265257dc67d120c27e0f75c2344fdfa9a (diff)
parentabf060725d7614bd3b9f96764262dfbc2f9c2199 (diff)
downloadnixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst
nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs
git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a
git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/applications/misc')
-rw-r--r--nixpkgs/pkgs/applications/misc/1password/default.nix44
-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/airspy/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/airtame/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/misc/alacritty/default.nix121
-rw-r--r--nixpkgs/pkgs/applications/misc/albert/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/aminal/default.nix75
-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/apvlv/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/misc/archiver/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/archiver/deps.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/artha/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/audio/sox/default.nix44
-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/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/barrier/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/bashSnippets/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/batti/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/bb/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/bibletime/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/bitcoinarmory/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/misc/bleachbit/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/blender/default.nix92
-rw-r--r--nixpkgs/pkgs/applications/misc/blender/fix-include.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/buku/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/calcurse/default.nix38
-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/cataract/build.nix39
-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.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/cdrtools/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/cdrtools/fix-paths.patch32
-rw-r--r--nixpkgs/pkgs/applications/misc/cgminer/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/cheat/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/cherrytree/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/cherrytree/subprocess.patch14
-rw-r--r--nixpkgs/pkgs/applications/misc/chirp/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/cli-visualizer/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/clipit/default.nix21
-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.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/cointop/deps.nix3
-rw-r--r--nixpkgs/pkgs/applications/misc/colort/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/confclerk/default.nix28
-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.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/cpp-ethereum/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/misc/ctodo/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/lulzbot.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/cura/numpy-cast.patch12
-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.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/deco/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/devilspie2/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/dfilemanager/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/diff-pdf/default.nix32
-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.nix145
-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.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/djvulibre/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/dmensamenu/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/dmenu/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/dmenu2/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/dmrconfig/default.nix42
-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.nix31
-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.nix24
-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/dump1090/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/dunst/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/eaglemode/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/ebook2cw/configfile.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/ebook2cw/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/electron-cash/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/dash.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/misc/electrum/ltc.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/emem/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/epdfview/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/ephemeralpg/default.nix20
-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/eureka-editor/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/evilvte/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/evopedia/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/evtest/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/exercism/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/exercism/deps.nix201
-rw-r--r--nixpkgs/pkgs/applications/misc/extract_url/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/far2l/default.nix85
-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.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/flamerobin/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/fllog/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/flmsg/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/flrig/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/flwrap/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/fme/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/font-manager/default.nix69
-rw-r--r--nixpkgs/pkgs/applications/misc/freemind/default.nix42
-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/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.nix55
-rw-r--r--nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/gcal/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/gcalcli/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/get_iplayer/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/getxbook/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/girara/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/gkrellm/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/gksu/default.nix54
-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.nix81
-rw-r--r--nixpkgs/pkgs/applications/misc/glom/default.nix132
-rw-r--r--nixpkgs/pkgs/applications/misc/gmrun/default.nix40
-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.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-recipes/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome-usage/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/gnome15/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/gnss-sdr/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/ais.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/default.nix122
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/gsm.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/limesdr.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/nacl.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/osmosdr.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/rds.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/gnuradio/wrapper.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/go-jira/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/goldendict/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock68
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/gollum/gemset.nix230
-rw-r--r--nixpkgs/pkgs/applications/misc/googleearth/default.nix97
-rw-r--r--nixpkgs/pkgs/applications/misc/googler/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/gosmore/default.nix37
-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.nix34
-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/clang-4.patch22
-rw-r--r--nixpkgs/pkgs/applications/misc/gpsbabel/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix50
-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/gpxsee/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/gqrx/default.nix47
-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.nix26
-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.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/gummi/default.nix41
-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.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/hackrf/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/hamster-time-tracker/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/haxor-news/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/hdate/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/misc/hello-unfree/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/hello/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/hivemind/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/houdini/default.nix14
-rw-r--r--nixpkgs/pkgs/applications/misc/houdini/runtime.nix86
-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.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/hubstaff/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/hugo/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/hugo/deps.nix722
-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/img2pdf/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/inspectrum/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/ipmicfg/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/ipmiview/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/iterm2/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/iterm2/disable_updates.patch11
-rw-r--r--nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile10
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock99
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix326
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile30
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock155
-rw-r--r--nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix538
-rwxr-xr-xnixpkgs/pkgs/applications/misc/jekyll/update.sh15
-rw-r--r--nixpkgs/pkgs/applications/misc/jgmenu/default.nix40
-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/josm/default.nix44
-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.nix119
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/k2pdfopt.patch99
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/load-jpx.patch29
-rw-r--r--nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/kanboard/default.nix25
-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.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/default.nix115
-rwxr-xr-xnixpkgs/pkgs/applications/misc/keepass/extractWinRscIconsToStdFreeDesktopDir.sh61
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch87
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch1
-rw-r--r--nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/2.0.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/community.nix106
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/darwin.patch52
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/qt511.patch15
-rw-r--r--nixpkgs/pkgs/applications/misc/keepassx/random.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/khal/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/khard/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch27
-rw-r--r--nixpkgs/pkgs/applications/misc/kiwix/default.nix110
-rw-r--r--nixpkgs/pkgs/applications/misc/krename/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/krusader/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/kupfer/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/misc/latte-dock/default.nix31
-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.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/lighthouse/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/lilyterm/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/misc/limesuite/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/llpp/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch88
-rw-r--r--nixpkgs/pkgs/applications/misc/loxodo/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/lxterminal/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/lxterminal/respect-xml-catalog-files-var.patch15
-rw-r--r--nixpkgs/pkgs/applications/misc/lyx/default.nix53
-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/Use-rm-from-PATH.patch43
-rw-r--r--nixpkgs/pkgs/applications/misc/makeself/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/mako/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix53
-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/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.nix27
-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/milu/default.nix40
-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/mlterm/default.nix94
-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/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/mucommander/default.nix84
-rw-r--r--nixpkgs/pkgs/applications/misc/multibootusb/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/multimon-ng/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/darwin.patch30
-rw-r--r--nixpkgs/pkgs/applications/misc/mupdf/default.nix90
-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.nix109
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/fix-gdal-includes.patch47
-rw-r--r--nixpkgs/pkgs/applications/misc/mysql-workbench/hardcode-paths.patch187
-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.nix76
-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/libnsutils/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libparserutils/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix30
-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.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/noice/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/notejot/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/notify-osd/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/nrsc5/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/nut/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/ocropus/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch175
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/plugins.nix111
-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.nix157
-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.nix62
-rw-r--r--nixpkgs/pkgs/applications/misc/orca/default.nix76
-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.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/osmctools/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/osmium-tool/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/misc/overmind/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/pbpst/default.nix49
-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/pdfdiff/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfmod/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/pdfpc/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/pell/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/perkeep/default.nix32
-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/phwmon/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/pinfo/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/plank/default.nix51
-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.nix104
-rw-r--r--nixpkgs/pkgs/applications/misc/plover/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/pmenu/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/polar-bookshelf/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/misc/polybar/default.nix80
-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/pstree/default.nix25
-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.lock45
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/misc/pt/gemset.nix164
-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/pwsafe/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/misc/pytrainer/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/misc/pytrainer/fix-test-tz.patch45
-rw-r--r--nixpkgs/pkgs/applications/misc/pytrainer/pytrainer-webkit.patch14
-rw-r--r--nixpkgs/pkgs/applications/misc/qdirstat/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/qlcplus/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/qmapshack/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/qmetro/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/qpdfview/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/qradiolink/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/qsstv/default.nix54
-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/qtbitcointrader/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/qtpass/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/qtpass/hidpi.patch13
-rw-r--r--nixpkgs/pkgs/applications/misc/quicksynergy/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/ranger/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift/575.patch51
-rw-r--r--nixpkgs/pkgs/applications/misc/redshift/default.nix93
-rw-r--r--nixpkgs/pkgs/applications/misc/regextester/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/misc/rescuetime/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/robo3t/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/misc/robomongo/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi/config.patch54
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi/wrapper.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/roxterm/default.nix61
-rw-r--r--nixpkgs/pkgs/applications/misc/rsibreak/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/rtl-sdr/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/rtl_433/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/rtv/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt/default.nix39
-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-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-tabbedex/default.nix23
-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.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt_unicode/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-256-color-resources.patch255
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch21
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-makefile-phony.patch10
-rw-r--r--nixpkgs/pkgs/applications/misc/rxvt_unicode/wrapper.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/safeeyes/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/misc/sakura/default.nix36
-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.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/sequelpro/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/sigal/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/simplenote/default.nix64
-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.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/slic3r/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/misc/slic3r/prusa3d.nix132
-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/soapyairspy/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/soapybladerf/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/soapyhackrf/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/soapyremote/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/soapyrtlsdr/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/soapysdr/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/misc/soapyuhd/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/solaar/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/spacefm/default.nix53
-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/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/stupidterm/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/stupidterm/stupidterm.desktop9
-rw-r--r--nixpkgs/pkgs/applications/misc/styx/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/misc/subsurface/default.nix111
-rw-r--r--nixpkgs/pkgs/applications/misc/super_user_spark/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/sweethome3d/default.nix101
-rw-r--r--nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix96
-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/synergy/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/openssl-1.1.patch18
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/respect_macos_arch.patch61
-rw-r--r--nixpkgs/pkgs/applications/misc/synergy/update_gtest_gmock.patch158
-rw-r--r--nixpkgs/pkgs/applications/misc/tabula/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/tangogps/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/taskell/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix76
-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/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/termdown/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/terminator/default.nix39
-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.nix42
-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/teseq/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/thinking-rock/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tilda/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/tilix/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/timewarrior/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/tint2/default.nix41
-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/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.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/toot/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/tootle/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/misc/topydo/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/tpmmanager/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/tqsl/cmake_lib_path.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/tqsl/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/translate-shell/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/tthsum/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix56
-rw-r--r--nixpkgs/pkgs/applications/misc/twmn/default.nix35
-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.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/unixcw/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/unixcw/remove-use-of-dlopen.patch677
-rw-r--r--nixpkgs/pkgs/applications/misc/urh/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/urlscan/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/misc/urlview/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/misc/usync/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/misc/valentina/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/misc/vcal/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/misc/veracrypt/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/misc/verbiste/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/misc/vifm/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/viking/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/misc/visidata/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/vit/default.nix36
-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.nix34
-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/wego/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/misc/wego/deps.nix38
-rw-r--r--nixpkgs/pkgs/applications/misc/welle-io/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/wikicurses/default.nix25
-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/wordnet/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/misc/worker/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/misc/workrave/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/misc/wsjtx/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/wsjtx/wsjtx.patch12
-rw-r--r--nixpkgs/pkgs/applications/misc/wtf/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/xastir/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/misc/xautoclick/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/xca/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/misc/xchm/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/misc/xcruiser/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix39
-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.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/xkbmon/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/xlog/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/misc/xmind/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/misc/xmr-stak/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/misc/xmrig/default.nix34
-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.nix51
-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.nix24
-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/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/yaft/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/misc/yakuake/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/misc/yarssr/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/misc/yate/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/misc/yokadi/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/core/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/ps/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/wrapper.nix32
-rw-r--r--nixpkgs/pkgs/applications/misc/zk-shell/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/misc/zola/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/misc/zscroll/default.nix27
640 files changed, 29310 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/misc/1password/default.nix b/nixpkgs/pkgs/applications/misc/1password/default.nix
new file mode 100644
index 000000000000..a25d40e29bd0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/1password/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  name = "1password-${version}";
+  version = "0.5.4";
+  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 = "0wni2hk5b1qfr24vi24jiprpi08k3qgaw9lqp61k41a1sjp3izv0";
+        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 = "169d5fl3cfw3xrlpm9nlmwbnp0xgh0la9qybzf8ragp0020nlyih";
+        stripRoot = false;
+      }
+    else if stdenv.hostPlatform.system == "x86_64-darwin" then
+      fetchzip {
+        url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.zip";
+        sha256 = "1scikv7v33kzg9rqsrz97yklxaskvif84br13zg8annm43k5vlma";
+        stripRoot = false;
+      }
+    else throw "Architecture not supported";
+
+  installPhase = ''
+    install -D op $out/bin/op
+  '';
+  postFixup = stdenv.lib.optionalString stdenv.isLinux ''
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      $out/bin/op
+  '';
+
+  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 ];
+    license      = licenses.unfree;
+    platforms    = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/abook/default.nix b/nixpkgs/pkgs/applications/misc/abook/default.nix
new file mode 100644
index 000000000000..f87bd4c11ec4
--- /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..0ca12a0096ed
--- /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/airspy/default.nix b/nixpkgs/pkgs/applications/misc/airspy/default.nix
new file mode 100644
index 000000000000..2042f1047b22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/airspy/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub
+, cmake , pkgconfig, libusb
+}:
+
+let
+  version = "1.0.9";
+in
+  stdenv.mkDerivation {
+    name = "airspy-${version}";
+
+    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 = [ libusb ];
+
+    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/misc/airtame/default.nix b/nixpkgs/pkgs/applications/misc/airtame/default.nix
new file mode 100644
index 000000000000..3e5bf8df4a7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/airtame/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
+, alsaLib, atk, cairo, cups, curl, dbus, expat, ffmpeg, 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 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";
+  name = "${pname}-${version}";
+  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..5d1e43769b7e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/alacritty/default.nix
@@ -0,0 +1,121 @@
+{ stdenv,
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+  cmake,
+  makeWrapper,
+  ncurses,
+  expat,
+  pkgconfig,
+  freetype,
+  fontconfig,
+  libX11,
+  gzip,
+  libXcursor,
+  libXxf86vm,
+  libXi,
+  libXrandr,
+  libGL,
+  xclip,
+  # Darwin Frameworks
+  cf-private,
+  AppKit,
+  CoreFoundation,
+  CoreGraphics,
+  CoreServices,
+  CoreText,
+  Foundation,
+  OpenGL }:
+
+with rustPlatform;
+
+let
+  rpathLibs = [
+    expat
+    freetype
+    fontconfig
+    libX11
+    libXcursor
+    libXxf86vm
+    libXrandr
+    libGL
+    libXi
+  ];
+in buildRustPackage rec {
+  name = "alacritty-${version}";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "jwilm";
+    repo = "alacritty";
+    rev = "v${version}";
+    sha256 = "1mf0x8dc196qf08lqpm0n4a5954cx9qfb09dq8ab7mp3xnyrnqzx";
+  };
+
+  cargoSha256 = "0p3bygvmpmy09h7972nhmma51lxp8q91cdlaw3s6p35i79hq3bmp";
+
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+    pkgconfig
+    ncurses
+    gzip
+  ];
+
+  buildInputs = rpathLibs
+    ++ lib.optionals stdenv.isDarwin [
+      AppKit CoreFoundation CoreGraphics CoreServices CoreText Foundation OpenGL
+      # Needed for CFURLResourceIsReachable symbols.
+      cf-private
+    ];
+
+  outputs = [ "out" "terminfo" ];
+
+  # https://github.com/NixOS/nixpkgs/issues/49693
+  doCheck = !stdenv.isDarwin;
+
+  postPatch = ''
+    substituteInPlace copypasta/src/x11.rs \
+      --replace Command::new\(\"xclip\"\) Command::new\(\"${xclip}/bin/xclip\"\)
+  '';
+
+  postBuild = lib.optionalString stdenv.isDarwin "make app";
+
+  installPhase = ''
+    runHook preInstall
+
+    install -D target/release/alacritty $out/bin/alacritty
+
+  '' + (if stdenv.isDarwin then ''
+    mkdir $out/Applications
+    cp -r target/release/osx/Alacritty.app $out/Applications/Alacritty.app
+  '' else ''
+    install -D alacritty.desktop $out/share/applications/alacritty.desktop
+    patchelf --set-rpath "${stdenv.lib.makeLibraryPath rpathLibs}" $out/bin/alacritty
+  '') + ''
+
+    install -D alacritty-completions.zsh "$out/share/zsh/site-functions/_alacritty"
+    install -D alacritty-completions.bash "$out/etc/bash_completion.d/alacritty-completions.bash"
+    install -D alacritty-completions.fish "$out/share/fish/vendor_completions.d/alacritty.fish"
+
+    install -dm 755 "$out/share/man/man1"
+    gzip -c alacritty.man > "$out/share/man/man1/alacritty.1.gz"
+
+    install -dm 755 "$terminfo/share/terminfo/a/"
+    tic -x -o "$terminfo/share/terminfo" alacritty.info
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+
+    runHook postInstall
+  '';
+
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "GPU-accelerated terminal emulator";
+    homepage = https://github.com/jwilm/alacritty;
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ mic92 ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/albert/default.nix b/nixpkgs/pkgs/applications/misc/albert/default.nix
new file mode 100644
index 000000000000..39dae0db1250
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/albert/default.nix
@@ -0,0 +1,52 @@
+{ mkDerivation, lib, fetchFromGitHub, makeWrapper, qtbase,
+  qtdeclarative, qtsvg, qtx11extras, muparser, cmake, python3,
+  qtcharts }:
+
+mkDerivation rec {
+  pname = "albert";
+  version = "0.15.0";
+
+  src = fetchFromGitHub {
+    owner  = "albertlauncher";
+    repo   = "albert";
+    rev    = "v${version}";
+    sha256 = "063z9yq6bsxcsqsw1n93ks5dzhzv6i252mjz1d5mxhxvgmqlfk0v";
+    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\"," \
+      lib/albertcore/src/core/albert.cpp
+  '';
+
+  preBuild = ''
+    mkdir -p "$out/"
+    ln -s "$PWD/lib" "$out/lib"
+  '';
+
+  postBuild = ''
+    rm "$out/lib"
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/albert \
+      --prefix XDG_DATA_DIRS : $out/share
+  '';
+
+  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/aminal/default.nix b/nixpkgs/pkgs/applications/misc/aminal/default.nix
new file mode 100644
index 000000000000..e80921f46ebd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/aminal/default.nix
@@ -0,0 +1,75 @@
+{ buildGoPackage
+, Carbon
+, Cocoa
+, Kernel
+, cf-private
+, fetchFromGitHub
+, lib
+, mesa_glu
+, stdenv
+, xorg
+}:
+
+buildGoPackage rec {
+  name = "aminal-${version}";
+  version = "0.7.12";
+
+  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
+      cf-private  /* Needed for NSDefaultRunLoopMode */
+    ];
+
+  src = fetchFromGitHub {
+    owner = "liamg";
+    repo = "aminal";
+    rev = "v${version}";
+    sha256 = "1ak5g2i4ggi00b4q7qigfwsrwb5rvswjjbr2hp9kyxd45nycb0g4";
+  };
+
+  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..f21438dfcec5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/antfs-cli/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  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..37d140e19ba3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ape/clex.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "attempto-clex-${version}";
+  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..e78ba2df9993
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ape/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, swiProlog, makeWrapper,
+  fetchFromGitHub,
+  lexicon ? "lexicon/clex_lexicon.pl",
+  pname ? "ape",
+  description ? "Parser for Attempto Controlled English (ACE)",
+  license ? with stdenv.lib; licenses.lgpl3
+  }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  version = "6.7-131003";
+
+  buildInputs = [ swiProlog makeWrapper ];
+
+  src = fetchFromGitHub {
+     owner = "Attempto";
+     repo = "APE";
+     rev = version;
+     sha256 = "0cw47qjg4896kw3vps6rfs02asvscsqvcfdiwgfmqb3hvykb1sdx";
+  };
+
+  patchPhase = ''
+    # We move the file first to avoid "same file" error in the default case
+    cp ${lexicon} new_lexicon.pl
+    rm lexicon/clex_lexicon.pl
+    cp new_lexicon.pl lexicon/clex_lexicon.pl
+  '';
+
+  buildPhase = ''
+    make 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/apvlv/default.nix b/nixpkgs/pkgs/applications/misc/apvlv/default.nix
new file mode 100644
index 000000000000..2d9ea5e3574b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/apvlv/default.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, pkgconfig, pcre, libxkbcommon, epoxy
+, gtk3, poppler, freetype, libpthreadstubs, libXdmcp, libxshmfence, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.1.5";
+  name = "apvlv-${version}";
+
+  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";
+    })
+  ];
+
+  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/archiver/default.nix b/nixpkgs/pkgs/applications/misc/archiver/default.nix
new file mode 100644
index 000000000000..25fafb604c33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/archiver/default.nix
@@ -0,0 +1,28 @@
+{ buildGoPackage
+, fetchFromGitHub
+, lib
+}:
+
+buildGoPackage rec {
+  name = "archiver-${version}";
+  version = "3.0.0";
+
+  goPackagePath = "github.com/mholt/archiver";
+
+  src = fetchFromGitHub {
+    owner = "mholt";
+    repo = "archiver";
+    rev = "v${version}";
+    sha256 = "1wngv51333h907mp6nbzd9dq6r0x06mag2cij92912jcbzy0q8bk";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Easily create and extract .zip, .tar, .tar.gz, .tar.bz2, .tar.xz, .tar.lz4, .tar.sz, and .rar (extract-only) files with Go";
+    homepage = https://github.com/mholt/archiver;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/archiver/deps.nix b/nixpkgs/pkgs/applications/misc/archiver/deps.nix
new file mode 100644
index 000000000000..4b14fd47711b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/archiver/deps.nix
@@ -0,0 +1,56 @@
+[
+  {
+    goPackagePath = "github.com/dsnet/compress";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dsnet/compress";
+      rev = "cc9eb1d7ad760af14e8f918698f745e80377af4f";
+      sha256 = "159liclywmyb6zx88ga5gn42hfl4cpk1660zss87fkx31hdq9fgx";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/snappy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/snappy";
+      rev = "2e65f85255dbc3072edf28d6b5b8efc472979f5a";
+      sha256 = "05w6mpc4qcy0pv8a2bzng8nf4s5rf5phfang4jwy9rgf808q0nxf";
+    };
+  }
+  {
+    goPackagePath = "github.com/nwaples/rardecode";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nwaples/rardecode";
+      rev = "197ef08ef68c4454ae5970a9c2692d6056ceb8d7";
+      sha256 = "0vvijw7va283dbdvnf4bgkn7bjngxqzk1rzdpy8sl343r62bmh4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/pierrec/lz4";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pierrec/lz4";
+      rev = "623b5a2f4d2a41e411730dcdfbfdaeb5c0c4564e";
+      sha256 = "1hhf7vyz5irrqs7ixdmvsvzmy9izv3ha8jbyy0cs486h61nzqkki";
+    };
+  }
+  {
+    goPackagePath = "github.com/ulikunitz/xz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ulikunitz/xz";
+      rev = "590df8077fbcb06ad62d7714da06c00e5dd2316d";
+      sha256 = "07mivr4aiw3b8qzwajsxyjlpbkf3my4xx23lv0yryc4pciam5lhy";
+    };
+  }
+  {
+    goPackagePath = "github.com/xi2/xz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xi2/xz";
+      rev = "48954b6210f8d154cb5f8484d3a3e1f83489309e";
+      sha256 = "178r0fa2dpzxf0sabs7dn0c8fa7vs87zlxk6spkn374ls9pir7nq";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/artha/default.nix b/nixpkgs/pkgs/applications/misc/artha/default.nix
new file mode 100644
index 000000000000..f69152820e43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/artha/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, dbus-glib, gtk2, pkgconfig, wordnet }:
+
+stdenv.mkDerivation rec {
+  name = "artha-${version}";
+  version = "1.0.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/artha/1.0.3/artha-1.0.3.tar.bz2";
+    sha256 = "0qr4ihl7ma3cq82xi1fpzvf74mm9vsg0j035xvmcp3r6rmw2fycx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ dbus-glib gtk2 wordnet ];
+
+  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/audio/sox/default.nix b/nixpkgs/pkgs/applications/misc/audio/sox/default.nix
new file mode 100644
index 000000000000..2585b5545482
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/audio/sox/default.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, fetchurl
+, enableAlsa ? true, alsaLib ? null
+, enableLibao ? true, libao ? null
+, enableLame ? false, lame ? null
+, enableLibmad ? true, libmad ? null
+, enableLibogg ? true, libogg ? null, libvorbis ? 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";
+  };
+
+  buildInputs =
+    optional (enableAlsa && stdenv.isLinux) alsaLib ++
+    optional enableLibao libao ++
+    optional enableLame lame ++
+    optional enableLibmad libmad ++
+    optionals enableLibogg [ libogg libvorbis ] ++
+    optional enableFLAC flac ++
+    optional enablePNG libpng ++
+    optional enableLibsndfile libsndfile ++
+    optionals enableAMR [ amrnb amrwb ] ++
+    optional enableLibpulseaudio libpulseaudio;
+
+  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..7c4e6ff8c3d7
--- /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:"`pwd`/build/src
+  '' else ''
+    export 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..0add5ed78cc5
--- /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..09b75e27d46a
--- /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/autospotting/default.nix b/nixpkgs/pkgs/applications/misc/autospotting/default.nix
new file mode 100644
index 000000000000..2f38307ca1e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/autospotting/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "autospotting-${version}";
+  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.linux;
+  };
+
+}
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..1144d5152847
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/avrdudess/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, unzip, mono, avrdude, gtk2, xdg_utils }:
+
+stdenv.mkDerivation rec {
+  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__
+    #!${stdenv.shell}
+    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/barrier/default.nix b/nixpkgs/pkgs/applications/misc/barrier/default.nix
new file mode 100644
index 000000000000..6151b3d55ab7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/barrier/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchpatch, fetchurl, cmake, curl, xorg, avahi, qt5,
+  avahiWithLibdnssdCompat ? avahi.override { withLibdnssdCompat = true; }
+}:
+
+stdenv.mkDerivation rec {
+  name = "barrier-${version}";
+  version = "2.1.1";
+  src = fetchurl {
+    url = "https://github.com/debauchee/barrier/archive/v${version}.tar.gz";
+    sha256 = "0x17as5ikfx2r5hawr368a9risvcavyc8zv5g724s709nr6m0pbp";
+  };
+
+  buildInputs = [ cmake curl xorg.libX11 xorg.libXext xorg.libXtst avahiWithLibdnssdCompat ];
+  propagatedBuildInputs = with qt5; [ qtbase ];
+
+  patches = [
+    # Fix compilation on Qt 5.11
+    # Patch should be removed on next version bump from 2.1.1!
+    (fetchpatch {
+      url = "https://github.com/debauchee/barrier/commit/a956cad0da23f544b874888c6c3540dc7f8f22cf.patch";
+      sha256 = "0x5045bdks1f9casp0v7svx9ml1gxhkhw5sqc7xk36h184m24a21";
+    })
+  ];
+
+  postFixup = ''
+    substituteInPlace "$out/share/applications/barrier.desktop" --replace "Exec=barrier" "Exec=$out/bin/barrier"
+  '';
+
+  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..fc5fa4d03006
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bashSnippets/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper
+, curl, python, bind, iproute, bc, gitMinimal }:
+let
+  version = "1.17.3";
+  deps = lib.makeBinPath [
+    curl
+    python
+    bind.dnsutils
+    iproute
+    bc
+    gitMinimal
+  ];
+in
+stdenv.mkDerivation {
+  name = "bashSnippets-${version}";
+
+  src = fetchFromGitHub {
+    owner = "alexanderepstein";
+    repo = "Bash-Snippets";
+    rev = "v${version}";
+    sha256 = "1xdjk8bjh7l6h7gdqrra1dh4wdq89wmd0jsirsvqa3bmcsb2wz1r";
+  };
+
+  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/batti/default.nix b/nixpkgs/pkgs/applications/misc/batti/default.nix
new file mode 100644
index 000000000000..283e7f199071
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/batti/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl
+, pkgconfig, gettext, pythonPackages
+, gtk2, gdk_pixbuf, upower
+, makeWrapper }:
+
+let
+  inherit (pythonPackages) dbus-python pygtk python;
+in stdenv.mkDerivation rec {
+
+  name = "batti-${version}";
+  version = "0.3.8";
+
+  src = fetchurl {
+    url = "https://batti-gtk.googlecode.com/files/${name}.tar.gz";
+    sha256 = "072d92gpsiiin631589nj77i2w1425p6db0qxyml7myscfy9jgx6";
+  };
+
+  buildInputs = with stdenv.lib;
+  [ pkgconfig gettext python gtk2 pygtk dbus-python gdk_pixbuf upower makeWrapper ];
+
+  configurePhase = "true";
+
+  buildPhase = ''
+    python setup.py build
+  '';
+
+  installPhase = ''
+    python setup.py install --prefix $out
+    wrapProgram "$out/bin/batti" \
+      --set PYTHONPATH "$PYTHONPATH:$(toPythonPath $out)" \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+      --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+
+  meta = with stdenv.lib; {
+    description = "An {UPower,GTK}-based battery monitor for the system tray";
+    longDescription = ''
+      Batti is a simple battery monitor for the system tray. Batti
+      uses UPower, and if that is missing DeviceKit.Power, for it's
+      power information.
+    '';
+    homepage = http://batti-gtk.googlecode.com/;
+    license = licenses.lgpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+    broken = true;  # see https://github.com/NixOS/nixpkgs/pull/4031#issuecomment-56283520 
+  };
+}
+
+# TODO: fix the "icon not found" problems...
diff --git a/nixpkgs/pkgs/applications/misc/bb/default.nix b/nixpkgs/pkgs/applications/misc/bb/default.nix
new file mode 100644
index 000000000000..f085e4bd7dd5
--- /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 {
+  name    = "bb-${version}";
+  version = "1.3rc1";
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/aa-project/bb/${version}/${name}.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/bibletime/default.nix b/nixpkgs/pkgs/applications/misc/bibletime/default.nix
new file mode 100644
index 000000000000..41184d6e9492
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bibletime/default.nix
@@ -0,0 +1,34 @@
+{stdenv, fetchurl, cmake, sword, qt4, boost, clucene_core}:
+
+stdenv.mkDerivation rec {
+
+  version = "2.10.1";
+
+  name = "bibletime-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bibletime/${name}.tar.xz";
+    sha256 = "14fayy5h1ffjxin669q56fflxn4ij1irgn60cygwx2y02cwxbll6";
+  };
+
+  prePatch = ''
+    patchShebangs .;
+  '';
+
+  preConfigure =  ''
+    export CLUCENE_HOME=${clucene_core};
+    export SWORD_HOME=${sword};
+  '';
+
+  buildInputs = [ cmake sword qt4 boost clucene_core ];
+
+  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/bitcoinarmory/default.nix b/nixpkgs/pkgs/applications/misc/bitcoinarmory/default.nix
new file mode 100644
index 000000000000..3245a56e9de3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bitcoinarmory/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchFromGitHub, pythonPackages
+, pkgconfig, autoreconfHook, rsync
+, swig, qt4, fcgi
+, bitcoin, procps, utillinux
+}:
+let
+
+  version = "0.96.1";
+  inherit (pythonPackages) buildPythonApplication pyqt4 psutil twisted;
+
+in buildPythonApplication {
+
+  name = "bitcoinarmory-${version}";
+
+  src = fetchFromGitHub {
+    owner = "goatpig";
+    repo = "BitcoinArmory";
+    rev = "v${version}";
+    #sha256 = "023c7q1glhrkn4djz3pf28ckd1na52lsagv4iyfgchqvw7qm7yx2";
+    sha256 = "0pjk5qx16n3kvs9py62666qkwp2awkgd87by4karbj7vk6p1l14h"; fetchSubmodules = true;
+  };
+
+  format = "other";
+
+  # FIXME bitcoind doesn't die on shutdown. Need some sort of patch to fix that.
+  #patches = [ ./shutdown-fix.patch ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    autoreconfHook
+    swig
+    qt4
+    fcgi
+    rsync # used by silly install script (TODO patch upstream)
+  ];
+
+  propagatedBuildInputs = [
+    pyqt4
+    psutil
+    twisted
+  ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  makeWrapperArgs = [
+    "--prefix            PATH : ${bitcoin}/bin"   # for `bitcoind`
+    "--prefix            PATH : ${procps}/bin"    # for `free`
+    "--prefix            PATH : ${utillinux}/bin" # for `whereis`
+    "--suffix LD_LIBRARY_PATH : $out/lib"         # for python bindings built as .so files
+    "--run    cd\\ $out/lib/armory"               # so that GUI resources can be loaded
+  ];
+
+  # auditTmpdir runs during fixupPhase, so patchelf before that
+  preFixup = ''
+    newRpath=$(patchelf --print-rpath $out/bin/ArmoryDB | sed -r 's|(.*)(/tmp/nix-build-.*libfcgi/.libs:?)(.*)|\1\3|')
+    patchelf --set-rpath $out/lib:$newRpath $out/bin/ArmoryDB
+  '';
+
+  # fixupPhase of mkPythonDerivation wraps $out/bin/*, so this needs to come after
+  postFixup = ''
+    wrapPythonProgramsIn $out/lib/armory "$out $pythonPath"
+    ln -sf $out/lib/armory/ArmoryQt.py $out/bin/armory
+  '';
+
+  meta = {
+    description = "Bitcoin wallet with cold storage and multi-signature support";
+    longDescription = ''
+      Armory is the most secure and full featured solution available for users
+      and institutions to generate and store Bitcoin private keys. This means
+      users never have to trust the Armory team and can use it with the Glacier
+      Protocol. Satoshi would be proud!
+
+      Users are empowered with multiple encrypted Bitcoin wallets and permanent
+      one-time ‘paper backups’. Armory pioneered cold storage and distributed
+      multi-signature. Bitcoin cold storage is a system for securely storing
+      Bitcoins on a completely air-gapped offline computer.
+
+      Maintainer's note: The original authors at https://bitcoinarmory.com/
+      discontinued development. I elected instead to package GitHub user
+      @goatpig's fork, as it's the most active, at time of this writing.
+    '';
+    homepage = https://github.com/goatpig/BitcoinArmory;
+    license = stdenv.lib.licenses.agpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ elitak ];
+    platforms = [ "i686-linux" "x86_64-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..f0dce54675cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/bleachbit/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, pythonPackages, fetchurl }:
+pythonPackages.buildPythonApplication rec {
+  name = "bleachbit-${version}";
+  version = "2.0";
+
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/bleachbit/${name}.tar.bz2";
+    sha256 = "0ps98zx4n13q92bq7ykqi6hj3i7brdqgm87i9gk6ibvljp1vxdz9";
+  };
+
+  buildInputs = [  pythonPackages.wrapPython ];
+
+  doCheck = false;
+
+  postInstall = ''
+    mkdir -p $out/bin
+    cp bleachbit.py $out/bin/bleachbit
+    chmod +x $out/bin/bleachbit
+
+    substituteInPlace $out/bin/bleachbit --replace "#!/usr/bin/env python" "#!${pythonPackages.python.interpreter}"
+  '';
+
+  propagatedBuildInputs = with pythonPackages; [ pygtk ];
+
+  meta = {
+    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 = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ leonardoce ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/blender/default.nix b/nixpkgs/pkgs/applications/misc/blender/default.nix
new file mode 100644
index 000000000000..b9d4b83e4f1f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/blender/default.nix
@@ -0,0 +1,92 @@
+{ stdenv, lib, fetchurl, boost, cmake, ffmpeg, gettext, glew
+, ilmbase, libXi, libX11, libXext, libXrender
+, libjpeg, libpng, libsamplerate, libsndfile
+, libtiff, libGLU_combined, openal, opencolorio, openexr, openimageio, openjpeg_1, pythonPackages
+, zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd
+, jackaudioSupport ? false, libjack2
+, cudaSupport ? false, cudatoolkit
+, colladaSupport ? true, opencollada
+, enableNumpy ? false, makeWrapper
+}:
+
+with lib;
+
+let python = pythonPackages.python; in
+
+stdenv.mkDerivation rec {
+  name = "blender-2.79b";
+
+  src = fetchurl {
+    url = "https://download.blender.org/source/${name}.tar.gz";
+    sha256 = "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c";
+  };
+
+  buildInputs =
+    [ boost cmake ffmpeg gettext glew ilmbase
+      libXi libX11 libXext libXrender
+      freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU_combined openal
+      opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc
+      (opensubdiv.override { inherit cudaSupport; })
+      makeWrapper
+    ]
+    ++ optional jackaudioSupport libjack2
+    ++ optional cudaSupport cudatoolkit
+    ++ optional colladaSupport opencollada;
+
+  postPatch =
+    ''
+      substituteInPlace doc/manpage/blender.1.py --replace /usr/bin/python ${python}/bin/python3
+      substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"'
+    '';
+
+  cmakeFlags =
+    [ "-DWITH_MOD_OCEANSIM=ON"
+      "-DWITH_CODEC_FFMPEG=ON"
+      "-DWITH_CODEC_SNDFILE=ON"
+      "-DWITH_INSTALL_PORTABLE=OFF"
+      "-DWITH_FFTW3=ON"
+      #"-DWITH_SDL=ON"
+      "-DWITH_GAMEENGINE=ON"
+      "-DWITH_OPENCOLORIO=ON"
+      "-DWITH_SYSTEM_OPENJPEG=ON"
+      "-DWITH_PLAYER=ON"
+      "-DWITH_OPENSUBDIV=ON"
+      "-DPYTHON_LIBRARY=python${python.majorVersion}m"
+      "-DPYTHON_LIBPATH=${python}/lib"
+      "-DPYTHON_INCLUDE_DIR=${python}/include/python${python.majorVersion}m"
+      "-DPYTHON_VERSION=${python.majorVersion}"
+      "-DWITH_PYTHON_INSTALL=OFF"
+      "-DWITH_PYTHON_INSTALL_NUMPY=OFF"
+    ]
+    ++ optional jackaudioSupport "-DWITH_JACK=ON"
+    ++ optionals cudaSupport
+      [ "-DWITH_CYCLES_CUDA_BINARIES=ON"
+        # Disable architectures before sm_30 to support new CUDA toolkits.
+        "-DCYCLES_CUDA_BINARIES_ARCH=sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61"
+      ]
+    ++ optional colladaSupport "-DWITH_OPENCOLLADA=ON";
+
+  NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}m";
+
+  # 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;
+
+  postInstall = optionalString enableNumpy
+    ''
+      wrapProgram $out/bin/blender \
+        --prefix PYTHONPATH : ${pythonPackages.numpy}/lib/python${python.majorVersion}/site-packages
+    '';
+
+  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" ];
+    maintainers = [ maintainers.goibhniu ];
+  };
+}
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/buku/default.nix b/nixpkgs/pkgs/applications/misc/buku/default.nix
new file mode 100644
index 000000000000..dacfa908b516
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/buku/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, python3, fetchFromGitHub, fetchpatch }:
+
+with python3.pkgs; buildPythonApplication rec {
+  version = "3.8";
+  pname = "buku";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "buku";
+    rev = "v${version}";
+    sha256 = "0gv26c4rr1akcaiff1nrwil03sv7d58mfxr86pgsw6nwld67ns0r";
+  };
+
+  checkInputs = [
+    pytestcov
+    hypothesis
+    pytest
+    pylint
+    flake8
+    pyyaml
+  ];
+
+  propagatedBuildInputs = [
+    cryptography
+    beautifulsoup4
+    requests
+    urllib3
+    flask
+    flask-api
+    flask-bootstrap
+    flask-paginate
+    flask_wtf
+    arrow
+    werkzeug
+    click
+  ];
+
+  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')" ""
+  '';
+
+  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; [ 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..fd65fcd22606
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calcurse/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, ncurses, gettext, python3, python3Packages, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "calcurse-${version}";
+  version = "4.3.0";
+
+  src = fetchurl {
+    url = "https://calcurse.org/files/${name}.tar.gz";
+    sha256 = "16jzg0nasnxdlz23i121x41pq5kbxmjzk52c5d863rg117fc7v1i";
+  };
+
+  buildInputs = [ ncurses gettext python3 ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  # Build Python environment with httplib2 for calcurse-caldav
+  pythonEnv = python3Packages.python.buildEnv.override {
+    extraLibs = [ python3Packages.httplib2 ];
+  };
+  propagatedBuildInputs = [ pythonEnv ];
+
+  postInstall = ''
+    substituteInPlace $out/bin/calcurse-caldav --replace /usr/bin/python3 ${pythonEnv}/bin/python3
+  '';
+
+  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..6da1cdefa700
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/calibre/default.nix
@@ -0,0 +1,178 @@
+{ stdenv, fetchurl, poppler_utils, pkgconfig, libpng
+, imagemagick, libjpeg, fontconfig, podofo, qtbase, qmake, icu, sqlite
+, makeWrapper, unrarSupport ? false, chmlib, python2Packages, libusb1, libmtp
+, xdg_utils, makeDesktopItem, wrapGAppsHook, removeReferencesTo
+}:
+
+stdenv.mkDerivation rec {
+  version = "3.36.0";
+  name = "calibre-${version}";
+
+  src = fetchurl {
+    url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz";
+    sha256 = "0fbf4b29vkka3gg8c5n9dc7qhv43jpw6naz6w83jkz7andypikb8";
+  };
+
+  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
+  ] ++ stdenv.lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
+
+  prePatch = ''
+    sed -i "/pyqt_sip_dir/ s:=.*:= '${python2Packages.pyqt5}/share/sip/PyQt5':"  \
+      setup/build_environment.py
+
+    # Remove unneeded files and libs
+    rm -rf resources/calibre-portable.* \
+           src/odf
+  '';
+
+  dontUseQmakeConfigure = true;
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ makeWrapper pkgconfig qmake removeReferencesTo ];
+
+  buildInputs = [
+    poppler_utils libpng imagemagick libjpeg
+    fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils wrapGAppsHook
+  ] ++ (with python2Packages; [
+    apsw cssselect cssutils dateutil dnspython html5-parser lxml mechanize netifaces pillow
+    python pyqt5 sip
+    regex msgpack
+    # the following are distributed with calibre, but we use upstream instead
+    odfpy
+  ]);
+
+  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=${python2Packages.sip}/bin/sip
+    ${python2Packages.python.interpreter} setup.py install --prefix=$out
+
+    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
+
+    for a in $out/bin/*; do
+      wrapProgram $a --prefix PYTHONPATH : $PYTHONPATH \
+                     --prefix PATH : ${poppler_utils.out}/bin
+    done
+
+    # Replace @out@ by the output path.
+    mkdir -p $out/share/applications/
+    cp {$calibreDesktopItem,$ebookEditDesktopItem,$ebookViewerDesktopItem}/share/applications/* $out/share/applications/
+    for entry in $out/share/applications/*.desktop; do
+      substituteAllInPlace $entry
+    done
+
+    mkdir -p $out/share
+    cp -a man-pages $out/share/man
+
+    runHook postInstall
+  '';
+
+  # 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
+  '';
+
+  disallowedReferences = [ podofo.dev ];
+
+  calibreDesktopItem = makeDesktopItem {
+    name = "calibre";
+    desktopName = "calibre";
+    exec = "@out@/bin/calibre --detach %F";
+    genericName = "E-book library management";
+    icon = "@out@/share/calibre/images/library.png";
+    comment = "Manage, convert, edit, and read e-books";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "application/x-mobipocket-subscription"
+      "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
+      "text/html"
+      "application/x-cbc"
+      "application/ereader"
+      "application/oebps-package+xml"
+      "image/vnd.djvu"
+      "application/x-sony-bbeb"
+      "application/vnd.ms-word.document.macroenabled.12"
+      "text/rtf"
+      "text/x-markdown"
+      "application/pdf"
+      "application/x-cbz"
+      "application/x-mobipocket-ebook"
+      "application/x-cbr"
+      "application/x-mobi8-ebook"
+      "text/fb2+xml"
+      "application/vnd.oasis.opendocument.text"
+      "application/epub+zip"
+      "text/plain"
+      "application/xhtml+xml"
+    ];
+    categories = "Office";
+    extraEntries = ''
+      Actions=Edit;Viewer;
+
+      [Desktop Action Edit]
+      Name=Edit E-book
+      Icon=@out@/share/calibre/images/tweak.png
+      Exec=@out@/bin/ebook-edit --detach %F
+
+      [Desktop Action Viewer]
+      Name=E-book Viewer
+      Icon=@out@/share/calibre/images/viewer.png
+      Exec=@out@/bin/ebook-viewer --detach %F
+    '';
+  };
+
+  ebookEditDesktopItem = makeDesktopItem {
+    name = "calibre-edit-ebook";
+    desktopName = "Edit E-book";
+    genericName = "E-book Editor";
+    comment = "Edit e-books";
+    icon = "@out@/share/calibre/images/tweak.png";
+    exec = "@out@/bin/ebook-edit --detach %F";
+    categories = "Office;Publishing";
+    mimeType = "application/epub+zip";
+    extraEntries = "NoDisplay=true";
+  };
+
+  ebookViewerDesktopItem = makeDesktopItem {
+    name = "calibre-ebook-viewer";
+    desktopName = "E-book Viewer";
+    genericName = "E-book Viewer";
+    comment = "Read e-books in all the major formats";
+    icon = "@out@/share/calibre/images/viewer.png";
+    exec = "@out@/bin/ebook-viewer --detach %F";
+    categories = "Office;Viewer";
+    mimeType = "application/epub+zip";
+    extraEntries = "NoDisplay=true";
+  };
+
+  meta = with stdenv.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/cataract/build.nix b/nixpkgs/pkgs/applications/misc/cataract/build.nix
new file mode 100644
index 000000000000..f2aac4326cbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cataract/build.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, fetchgit
+, autoreconfHook
+, glib
+, pkgconfig
+, libxml2
+, exiv2
+, imagemagick
+, version
+, sha256
+, rev }:
+
+stdenv.mkDerivation rec {
+  inherit version;
+  name = "cataract-${version}";
+
+  src = fetchgit {
+    url = "git://git.bzatek.net/cataract";
+    inherit sha256 rev;
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ glib libxml2 exiv2 imagemagick ];
+
+  installPhase = ''
+    mkdir $out/{bin,share} -p
+    cp src/cgg{,-dirgen} $out/bin/
+  '';
+
+  meta = {
+    homepage = http://cgg.bzatek.net/;
+    description = "a simple static web photo gallery, designed to be clean and easily usable";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.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..75f5ab406fe0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/catclock/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, xlibsWrapper, motif }:
+
+stdenv.mkDerivation rec {
+  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..f4ba30080f71
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cbatticon/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, libnotify }:
+
+stdenv.mkDerivation rec {
+
+  name = "cbatticon-${version}";
+  version = "1.6.8";
+
+  src = fetchFromGitHub {
+    owner = "valr";
+    repo = "cbatticon";
+    rev = version;
+    sha256 = "16g26vin1693dbdr9qsnw36fdchx394lp79gvp7gcbw0w1ny9av6";
+  };
+
+  patchPhase = ''
+    sed -i -e 's/ -Wno-format//g' Makefile
+  '';
+
+  makeFlags = "PREFIX=$(out)";
+
+  nativeBuildInputs = [ pkgconfig gettext ];
+
+  buildInputs =  [ glib gtk3 libnotify ];
+
+  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;
+    maintainers = [ maintainers.domenkozar ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cdrtools/default.nix b/nixpkgs/pkgs/applications/misc/cdrtools/default.nix
new file mode 100644
index 000000000000..a46565eb76ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cdrtools/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, acl, libcap }:
+
+stdenv.mkDerivation rec {
+  name = "cdrtools-${version}";
+  version = "3.02a06";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/cdrtools/${name}.tar.bz2";
+    sha256 = "1cayhfbhj5g2vgmkmq5scr23k0ka5fsn0dhn0n9yllj386csnygd";
+  };
+
+  patches = [ ./fix-paths.patch ];
+
+  buildInputs = [ acl libcap ];
+
+  postPatch = ''
+    sed "/\.mk3/d" -i libschily/Targets.man
+    substituteInPlace man/Makefile --replace "man4" ""
+  '';
+
+  configurePhase = "true";
+
+  GMAKE_NOWARN = true;
+
+  makeFlags = [ "INS_BASE=/" "INS_RBASE=/" "DESTDIR=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://sourceforge.net/projects/cdrtools/;
+    description = "Highly portable CD/DVD/BluRay command line recording software";
+    license = with licenses; [ gpl2 lgpl2 cddl ];
+    platforms = platforms.linux;
+    # Licensing issues: This package contains code licensed under CDDL, GPL2
+    # and LGPL2. There is a debate regarding the legality of distributing this
+    # package in binary form.
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cdrtools/fix-paths.patch b/nixpkgs/pkgs/applications/misc/cdrtools/fix-paths.patch
new file mode 100644
index 000000000000..f4a541210880
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cdrtools/fix-paths.patch
@@ -0,0 +1,32 @@
+diff -ru3 cdrtools-3.01-old/DEFAULTS/Defaults.linux cdrtools-3.01/DEFAULTS/Defaults.linux
+--- cdrtools-3.01-old/DEFAULTS/Defaults.linux	2015-12-11 17:37:21.505848835 +0300
++++ cdrtools-3.01/DEFAULTS/Defaults.linux	2015-12-11 17:37:32.155828925 +0300
+@@ -57,7 +57,8 @@
+ # Installation config stuff
+ #
+ ###########################################################################
+-INS_BASE=	/opt/schily
++#INS_BASE=	/opt/schily
++INS_BASE=	$(out)
+ INS_KBASE=	/
+ INS_RBASE=	/
+ #
+Only in cdrtools-3.01/DEFAULTS: Defaults.linux.orig
+diff -ru3 cdrtools-3.01-old/RULES/rules.prg cdrtools-3.01/RULES/rules.prg
+--- cdrtools-3.01-old/RULES/rules.prg	2015-12-11 17:37:21.500848844 +0300
++++ cdrtools-3.01/RULES/rules.prg	2015-12-11 17:38:29.890720987 +0300
+@@ -43,10 +43,10 @@
+ #
+ #SHELL=		/bin/sh
+ 
+-LN=		/bin/ln
+-SYMLINK=	/bin/ln -s
+-RM=		/bin/rm
+-MV=		/bin/mv
++LN=		ln
++SYMLINK=	ln -s
++RM=		rm
++MV=		mv
+ LORDER=		lorder
+ TSORT=		tsort
+ CTAGS=		vctags
diff --git a/nixpkgs/pkgs/applications/misc/cgminer/default.nix b/nixpkgs/pkgs/applications/misc/cgminer/default.nix
new file mode 100644
index 000000000000..ee3e2a955d32
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cgminer/default.nix
@@ -0,0 +1,49 @@
+{ fetchgit, stdenv, pkgconfig, libtool, autoconf, automake
+, curl, ncurses, amdappsdk, amdadlsdk, xorg, jansson }:
+
+stdenv.mkDerivation rec {
+  version = "3.7.2";
+  name = "cgminer-${version}";
+
+  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 amdappsdk amdadlsdk
+    xorg.libX11 xorg.libXext xorg.libXinerama jansson
+  ];
+  configureScript = "./autogen.sh";
+  configureFlags = [ "--enable-scrypt" "--enable-opencl" ];
+  NIX_LDFLAGS = "-lgcc_s -lX11 -lXext -lXinerama";
+
+  preConfigure = ''
+    ln -s ${amdadlsdk}/include/* ADL_SDK/
+  '';
+
+  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..1a162aca0d76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cheat/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+with python3Packages;
+buildPythonApplication rec {
+  name = "${pname}-${version}";
+  pname = "cheat";
+  version = "2.3.1";
+
+  propagatedBuildInputs = [ docopt pygments ];
+
+  src = fetchFromGitHub {
+    owner = "chrisallenlane";
+    repo = "cheat";
+    rev = version;
+    sha256 = "1dcpjvbv648r8325qjf30m8b4cyrrjbzc2kvh40zy2mbjsa755zr";
+  };
+  # no tests available
+  doCheck = false;
+
+  postInstall = ''
+    install -D man1/cheat.1.gz $out/share/man/man1/cheat.1.gz
+  '';
+
+  meta = with stdenv.lib; {
+    description = "cheat allows you to create and view interactive cheatsheets on the command-line";
+    maintainers = with maintainers; [ mic92 ];
+    license = with licenses; [gpl3 mit];
+    homepage = https://github.com/chrisallenlane/cheat;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cherrytree/default.nix b/nixpkgs/pkgs/applications/misc/cherrytree/default.nix
new file mode 100644
index 000000000000..cf93096c7873
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cherrytree/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, pythonPackages, gettext }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  name = "cherrytree-${version}";
+  version = "0.38.6";
+
+  src = fetchurl {
+    url = "https://www.giuspen.com/software/${name}.tar.xz";
+    sha256 = "0b83ygv0y4lrclsyagmllkwiia62xkwij14i6z53avba191jvhma";
+  };
+
+  buildInputs = with pythonPackages;
+  [ python gettext wrapPython pygtk dbus-python pygtksourceview ];
+
+  pythonPath = with pythonPackages;
+  [ pygtk dbus-python pygtksourceview ];
+
+  patches = [ ./subprocess.patch ];
+
+  installPhase = ''
+    python setup.py install --prefix="$out"
+
+    for file in "$out"/bin/*; do
+        wrapProgram "$file" \
+            --prefix PYTHONPATH : "$(toPythonPath $out):$PYTHONPATH"
+    done
+  '';
+
+  doCheck = false;
+
+  meta = {
+    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;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.AndersonTorres ];
+  };
+}
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/chirp/default.nix b/nixpkgs/pkgs/applications/misc/chirp/default.nix
new file mode 100644
index 000000000000..db67514cd077
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/chirp/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, libxml2Python, libxslt, makeWrapper
+, pyserial, pygtk }:
+
+stdenv.mkDerivation rec {
+  name = "chirp-daily-${version}";
+  version = "20181018";
+
+  src = fetchurl {
+    url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${name}.tar.gz";
+    sha256 = "0jd7xi6q09b3djn1k7pj1sbqvw24kn7dcp9r6abvxily4pc1xhdr";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    pyserial pygtk libxml2Python libxslt pyserial
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/chirp
+    cp -r . $out/share/chirp/
+    ln -s $out/share/chirp/chirpw $out/bin/chirpw
+
+    for file in "$out"/bin/*; do
+      wrapProgram "$file" \
+        --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out")
+    done
+  '';
+
+  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;
+    maintainers = [ maintainers.the-kenny ];
+  };
+}
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..7aecc8f823ee
--- /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.7";
+  name = "cli-visualizer-${version}";
+
+  src = fetchFromGitHub {
+    owner = "dpayne";
+    repo = "cli-visualizer";
+    rev = version;
+    sha256 = "06z6vj87xjmacppcxvgm47wby6mv1hnbqav8lpdk9v5s1hmmp1cr";
+  };
+
+  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 = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clipit/default.nix b/nixpkgs/pkgs/applications/misc/clipit/default.nix
new file mode 100644
index 000000000000..4477cbbcc06a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clipit/default.nix
@@ -0,0 +1,21 @@
+{ fetchurl, stdenv, intltool, pkgconfig, gtk2, xdotool, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  name = "clipit-${version}";
+  version = "1.4.2";
+
+  src = fetchurl {
+    url = "https://github.com/downloads/shantzu/ClipIt/${name}.tar.gz";
+    sha256 = "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool gtk2 xdotool hicolor-icon-theme ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight GTK+ Clipboard Manager";
+    homepage    = "http://clipit.rspwn.com";
+    license     = licenses.gpl3;
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/clipmenu/default.nix b/nixpkgs/pkgs/applications/misc/clipmenu/default.nix
new file mode 100644
index 000000000000..6dd68123b132
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/clipmenu/default.nix
@@ -0,0 +1,33 @@
+{ clipnotify, makeWrapper, xsel, dmenu2, utillinux, gawk, stdenv, fetchFromGitHub, lib }:
+let
+  runtimePath = lib.makeBinPath [ clipnotify xsel dmenu2 utillinux gawk ];
+in
+stdenv.mkDerivation rec {
+  name = "clipmenu-${version}";
+  version = "5.5.0";
+
+  src = fetchFromGitHub {
+    owner  = "cdown";
+    repo   = "clipmenu";
+    rev    = version;
+    sha256 = "15if7bwqviyynbrcwrn04r418cfnxf2mkmq112696np24bggvljg";
+  };
+
+  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..28f14cc1435f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cmatrix/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, ncurses }:
+
+let
+  version = "1.2a";
+in with stdenv.lib;
+stdenv.mkDerivation rec {
+
+  name = "cmatrix-${version}";
+
+  src = fetchurl{
+    url = "http://www.asty.org/cmatrix/dist/${name}.tar.gz";
+    sha256 = "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "Simulates the falling characters theme from The Matrix movie";
+    longDescription = ''
+      CMatrix simulates the display from "The Matrix" and is based
+      on the screensaver from the movie's website.  
+    '';
+    homepage = http://www.asty.org/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..23d76afff0ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cointop/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name    = "cointop-unstable-${version}";
+  version = "2018-05-03";
+  rev     = "08acd96082682347d458cd4f861e2debd3255745";
+
+  goPackagePath = "github.com/miguelmota/cointop";
+
+  src = fetchgit {
+    inherit rev;
+    url    = "https://github.com/miguelmota/cointop";
+    sha256 = "14savz48wzrfpm12fgnnndpl3mpzx7wsch4jrnm3rmrfdabdx7mi";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    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;
+    platforms = stdenv.lib.platforms.linux; # cannot test others
+    maintainers = [ ];
+    license = stdenv.lib.licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cointop/deps.nix b/nixpkgs/pkgs/applications/misc/cointop/deps.nix
new file mode 100644
index 000000000000..3ba1d12a8048
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cointop/deps.nix
@@ -0,0 +1,3 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+]
diff --git a/nixpkgs/pkgs/applications/misc/colort/default.nix b/nixpkgs/pkgs/applications/misc/colort/default.nix
new file mode 100644
index 000000000000..554c7d8c78bb
--- /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..3851730c4596
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/confclerk/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, qt4, qmake4Hook }:
+
+let version = "0.6.4"; in
+stdenv.mkDerivation {
+  name = "confclerk-${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..1c2045f4141e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cool-retro-term/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget
+, qtquickcontrols, qtgraphicaleffects, qmake }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.1";
+  name = "cool-retro-term-${version}";
+
+  src = fetchFromGitHub {
+    owner = "Swordfish90";
+    repo = "cool-retro-term";
+    rev = version;
+    sha256 = "1ah54crqv13xsg9cvlwmgyhz90xjjy3vy8pbn9i0vc0ljmpgkqd5";
+  };
+
+  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..fa5a9b466673
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/copyq/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, qtbase, qtscript, qtwebkit, libXfixes, libXtst
+, qtx11extras, git
+, webkitSupport ? true
+}:
+
+stdenv.mkDerivation rec {
+  name = "CopyQ-${version}";
+  version = "3.7.1";
+
+  src  = fetchFromGitHub {
+    owner = "hluk";
+    repo = "CopyQ";
+    rev = "v${version}";
+    sha256 = "0b3lrhrffvq46n9xc0lzbxhhn1lzmq2lrijjdwizc52458d6h90y";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    git qtbase qtscript libXfixes libXtst qtx11extras
+  ] ++ stdenv.lib.optional webkitSupport qtwebkit;
+
+  meta = with stdenv.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..a6afee13e47b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/coursera-dl/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, glibcLocales, pandoc, python3 }:
+
+let
+  pythonPackages = python3.pkgs;
+
+in pythonPackages.buildPythonApplication rec {
+  pname = "coursera-dl";
+  version = "0.11.4";
+
+  src = fetchFromGitHub {
+    owner = "coursera-dl";
+    repo = "coursera-dl";
+    rev = version;
+    sha256 = "0dn7a6s98dwba62r0dyabq8pryzga4b2wpx88i9bmp7ja1b1f92f";
+  };
+
+  nativeBuildInputs = with pythonPackages; [ pandoc ];
+
+  buildInputs = with pythonPackages; [ glibcLocales ];
+
+  propagatedBuildInputs = with pythonPackages; [ attrs beautifulsoup4 ConfigArgParse keyring pyasn1 requests six urllib3 ];
+
+  checkInputs = with pythonPackages; [ pytest mock ];
+
+  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..4d9975192461
--- /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_combined
+, extraCmakeFlags ? []
+}:
+stdenv.mkDerivation rec {
+  name = "cpp-ethereum-${version}";
+  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_combined
+  ];
+
+  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/ctodo/default.nix b/nixpkgs/pkgs/applications/misc/ctodo/default.nix
new file mode 100644
index 000000000000..f8927319a011
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ctodo/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, cmake, fetchurl, ncurses, readline }:
+
+stdenv.mkDerivation rec {
+  name = "ctodo-${version}";
+  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 = with stdenv.lib.maintainers; [ ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/default.nix b/nixpkgs/pkgs/applications/misc/cura/default.nix
new file mode 100644
index 000000000000..f7907746d107
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/default.nix
@@ -0,0 +1,53 @@
+{ mkDerivation, lib, fetchFromGitHub, cmake, python3, qtbase, qtquickcontrols2, curaengine }:
+
+mkDerivation rec {
+  name = "cura-${version}";
+  version = "3.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "Cura";
+    rev = version;
+    sha256 = "0wzkbqdd1670smw1vnq634rkpcjwnhwcvimhvjq904gy2fylgr90";
+  };
+
+  materials = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "fdm_materials";
+    rev = version;
+    sha256 = "0g2dkph0ll7d9109n17vmfwb4fpc8lhyb1z1q68j8vblyvg08d12";
+  };
+
+  buildInputs = [ qtbase qtquickcontrols2 ];
+  propagatedBuildInputs = with python3.pkgs; [
+    libsavitar numpy-stl pyserial requests uranium zeroconf
+  ];
+  nativeBuildInputs = [ cmake python3.pkgs.wrapPython ];
+
+  cmakeFlags = [
+    "-DURANIUM_DIR=${python3.pkgs.uranium.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
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/cura/resources/materials
+    cp ${materials}/*.fdm_material $out/share/cura/resources/materials/
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+  '';
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/cura/lulzbot.nix b/nixpkgs/pkgs/applications/misc/cura/lulzbot.nix
new file mode 100644
index 000000000000..f3f1972f6e6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/cura/lulzbot.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchurl, dpkg, bash, python27Packages }:
+
+let
+  py = python27Packages;
+in
+stdenv.mkDerivation rec {
+  name = "cura-lulzbot-${version}";
+  version = "15.02.1-1.03-5064";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://download.alephobjects.com/ao/aodeb/dists/jessie/main/binary-amd64/cura_${version}_amd64.deb";
+        sha256 = "1gsfidg3gim5pjbl82vkh0cw4ya253m4p7nirm8nr6yjrsirkzxg";
+      }
+    else if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "http://download.alephobjects.com/ao/aodeb/dists/jessie/main/binary-i386/cura_${version}_i386.deb";
+        sha256 = "0xd3df6bxq4rijgvsqvps454jkc1nzhxbdzzj6j2w317ppsbhyc1";
+      }
+    else throw "${name} is not supported on ${stdenv.hostPlatform.system}";
+
+  python_deps = with py; [ pyopengl pyserial numpy wxPython30 power setuptools ];
+  pythonPath = python_deps;
+  propagatedBuildInputs = python_deps;
+  buildInputs = [ dpkg bash py.wrapPython ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+  unpackPhase = "dpkg-deb -x ${src} ./";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r usr/share $out/share
+    find $out/share -type f -exec sed -i 's|/usr/share/cura|$out/share/cura|g' "{}" \;
+
+    cat <<EOT > $out/bin/cura
+    #!${bash}/bin/bash
+    PYTHONPATH=$PYTHONPATH:$out/share/cura ${py.python}/bin/python $out/share/cura/cura.py "\$@"
+    EOT
+
+    chmod 555 $out/bin/cura
+  '';
+
+  meta = with stdenv.lib; {
+    description = "3D printing host software for the Lulzbot";
+
+     longDescription = ''
+       Cura LulzBot Edition is a fork of the 3D printing/slicing
+       software from Ultimaker, with changes to support 3D printers
+       from Aleph Objects.
+     '';
+
+    homepage = https://www.lulzbot.com/cura/;
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pjones ];
+  };
+}
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/stable.nix b/nixpkgs/pkgs/applications/misc/cura/stable.nix
new file mode 100644
index 000000000000..a53b001b0e98
--- /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 {
+  name = "cura-${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;
+    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix b/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix
new file mode 100644
index 000000000000..439b0fc25684
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curabydagoma/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, 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 {
+  name = "curabydagoma-${version}";
+  # 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
+    #!/bin/sh
+    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..22215a7e2c68
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curaengine/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, libarcus, stb }:
+
+stdenv.mkDerivation rec {
+  name = "curaengine-${version}";
+  version = "3.6.0";
+
+  src = fetchFromGitHub {
+    owner = "Ultimaker";
+    repo = "CuraEngine";
+    rev = version;
+    sha256 = "1iwmblvs3qw57698i8bbazyxha18bj9irnkcscdb0596g8q93fcm";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libarcus stb ];
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/curaengine/stable.nix b/nixpkgs/pkgs/applications/misc/curaengine/stable.nix
new file mode 100644
index 000000000000..ce743a008798
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/curaengine/stable.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+let
+  version = "15.04.6";
+in
+stdenv.mkDerivation {
+  name = "curaengine-${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;
+    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dbeaver/default.nix b/nixpkgs/pkgs/applications/misc/dbeaver/default.nix
new file mode 100644
index 000000000000..e90fccefb065
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dbeaver/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, makeDesktopItem, makeWrapper
+, fontconfig, freetype, glib, gtk2
+, jdk, libX11, libXrender, libXtst, zlib }:
+
+# The build process is almost like eclipse's.
+# See `pkgs/applications/editors/eclipse/*.nix`
+
+stdenv.mkDerivation rec {
+  name = "dbeaver-ce-${version}";
+  version = "5.3.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 gtk2
+    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 = "1gn52bffjn2fw9yhi1rv4iy9dfdn5qxc51gv6qri5g0c8pblvh7m";
+  };
+
+  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 gtk2 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.samueldr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix b/nixpkgs/pkgs/applications/misc/dbvisualizer/default.nix
new file mode 100644
index 000000000000..fbeb965df380
--- /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..ca7e332cc286
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ddgr/default.nix
@@ -0,0 +1,46 @@
+{stdenv, fetchpatch, fetchFromGitHub, python3Packages}:
+
+stdenv.mkDerivation rec {
+  version = "1.1";
+  name = "ddgr-${version}";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "ddgr";
+    rev = "v${version}";
+    sha256 = "1q66kwip5y0kfkfldm1x54plz85mjyvv1xpxjqrs30r2lr0najgf";
+  };
+
+  buildInputs = [
+    (python3Packages.python.withPackages (ps: with ps; [
+      requests
+    ]))
+  ];
+
+  patches = [
+    (fetchpatch {
+     sha256 = "1rxr3biq0mk4m0m7dsxr70dhz4fg5siil5x5fy9nymcmhvcm1cdc";
+     name = "Fix-zsh-completion.patch";
+     url = "https://github.com/jarun/ddgr/commit/10c1a911a3d5cbf3e96357c932b0211d3165c4b8.patch";
+    })
+  ];
+
+  makeFlags = "PREFIX=$(out)";
+
+  postInstall = ''
+    mkdir -p "$out/share/bash-completion/completions/"
+    cp "auto-completion/bash/ddgr-completion.bash" "$out/share/bash-completion/completions/"
+    mkdir -p "$out/share/fish/vendor_completions.d/"
+    cp "auto-completion/fish/ddgr.fish" "$out/share/fish/vendor_completions.d/"
+    mkdir -p "$out/share/zsh/site-functions/"
+    cp "auto-completion/zsh/_ddgr" "$out/share/zsh/site-functions/"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/jarun/ddgr;
+    description = "Search DuckDuckGo from the terminal";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ markus1189 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/deco/default.nix b/nixpkgs/pkgs/applications/misc/deco/default.nix
new file mode 100644
index 000000000000..e5dc011d5531
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/deco/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, scsh, feh, xorg }:
+
+stdenv.mkDerivation rec {
+  pname = "deco";
+  version = "0.0.1";
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "ebzzry";
+    repo = pname;
+    rev = "037f473ae4bdce5d3e2f76891785f0f7479cca75";
+    sha256 = "1fv15nc9zqbn3c51vnm50yidj5ivpi61zg55cs46x3gi2x79x43q";
+  };
+
+  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..4fb9ca5fa713
--- /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 {
+  name = "devilspie2-${version}";
+  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 = http://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..eeb7a8ccf526
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dfilemanager/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchgit, cmake, file, qtbase, qttools, solid }:
+
+let
+  version = "git-2016-01-10";
+in
+stdenv.mkDerivation {
+  name = "dfilemanager-${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..467c2b3c2d59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/diff-pdf/default.nix
@@ -0,0 +1,32 @@
+{ 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 {
+  name = "diff-pdf-${version}";
+  version = "2017-12-30";
+
+  src = fetchFromGitHub {
+    owner = "vslavik";
+    repo = "diff-pdf";
+    rev = "c4d67226ec4c29b30a7399e75f80636ff8a6f9fc";
+    sha256 = "1c3ig7ckrg37p5vzvgjnsfdzdad328wwsx0r31lbs1d8pkjkgq3m";
+  };
+
+  nativeBuildInputs = [ autoconf automake pkgconfig ];
+  buildInputs = [ cairo poppler ] ++ wxInputs;
+
+  preConfigure = "./bootstrap";
+
+  meta = with stdenv.lib; {
+    homepage = http://vslavik.github.io/diff-pdf;
+    description = "Simple tool for visually comparing two PDF files";
+    license = licenses.gpl2;
+    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..daea20835c8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/diffpdf/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, fetchpatch, qmake, qttools, qtbase, poppler }:
+
+stdenv.mkDerivation rec {
+  version = "2.1.3";
+  name = "diffpdf-${version}";
+
+  src = fetchurl {
+    url = "http://www.qtrac.eu/${name}.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/${name} $out/share/licenses/${name} $out/share/icons $out/share/pixmaps $out/share/applications
+    install -Dpm644 CHANGES README help.html $out/share/doc/${name}/
+    install -Dpm644 gpl-2.0.txt $out/share/licenses/${name}/
+    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..3e6a6ab53f77
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/digitalbitbox/default.nix
@@ -0,0 +1,145 @@
+{ stdenv
+, autoreconfHook
+, curl
+, fetchFromGitHub
+, git
+, libcap
+, libevent
+, libtool
+, libqrencode
+, udev
+, libusb
+, 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 {
+  name = "digitalbitbox-${version}";
+  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 = [
+    # TODO: remove libcap when pruneLibtoolFiles applies to pulseaudio.
+    libcap
+    libevent
+    libtool
+    udev
+    libusb
+    libqrencode
+
+    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;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ding/default.nix b/nixpkgs/pkgs/applications/misc/ding/default.nix
new file mode 100644
index 000000000000..e76f95b6a50d
--- /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..f1e33ea53571
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/direwolf/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub
+, espeak, alsaLib, perl
+, python }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "direwolf-${version}";
+  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;
+    maintainers = [ maintainers.the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/djvulibre/default.nix b/nixpkgs/pkgs/applications/misc/djvulibre/default.nix
new file mode 100644
index 000000000000..0b685e04a6fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/djvulibre/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, libjpeg, libtiff, librsvg, libiconv }:
+
+stdenv.mkDerivation rec {
+  name = "djvulibre-3.5.27";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/djvu/${name}.tar.gz";
+    sha256 = "0psh3zl9dj4n4r3lx25390nx34xz0bg0ql48zdskhq354ljni5p6";
+  };
+
+  outputs = [ "bin" "dev" "out" ];
+
+  buildInputs = [ libjpeg libtiff librsvg libiconv ];
+
+  meta = with stdenv.lib; {
+    description = "A library and viewer for the DJVU file format for scanned images";
+    homepage = http://djvu.sourceforge.net;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix b/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix
new file mode 100644
index 000000000000..924b95d8b6a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmensamenu/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, requests, dmenu }:
+
+buildPythonApplication rec {
+  name = "dmensamenu-${version}";
+  version = "1.1.1";
+
+  propagatedBuildInputs = [
+    requests
+    dmenu
+  ];
+
+  src = fetchFromGitHub {
+    owner = "dotlambda";
+    repo = "dmensamenu";
+    rev = version;
+    sha256 = "0gc23k2zbv9zfc0v27y4spiva8cizxavpzd5pch5qbawh2lak6a3";
+  };
+
+  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/dmenu/default.nix b/nixpkgs/pkgs/applications/misc/dmenu/default.nix
new file mode 100644
index 000000000000..3ee2006ab0c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmenu/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, libX11, libXinerama, libXft, zlib, patches ? null }:
+
+stdenv.mkDerivation rec {
+  name = "dmenu-4.8";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "0qfvfrj10xlwd9hkvb57wshryan65bl6423h0qhiw1h76rf5lqgy";
+  };
+
+  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
+  '';
+
+  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 ];
+      platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmenu2/default.nix b/nixpkgs/pkgs/applications/misc/dmenu2/default.nix
new file mode 100644
index 000000000000..3d5676033593
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmenu2/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchhg, libX11, libXinerama, libXft, zlib}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "dmenu2-0.3pre-2014-07-08";
+
+  src = fetchhg {
+    url = "https://bitbucket.org/melek/dmenu2";
+    rev = "36cb94a16edf928bdaaa636123392517ed469be0";
+    sha256 = "1b17z5ypg6ij7zz3ncp3irc87raccna10y4w490c872a99lp23lv";
+  };
+
+  buildInputs = [ libX11 libXinerama zlib libXft ];
+
+  postPatch = ''
+    sed -ri -e 's!\<(dmenu|stest)\>!'"$out/bin"'/&!g' dmenu_run
+  '';
+
+  preConfigure = [ ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'' ];
+
+  meta = {
+      description = "A patched fork of the original dmenu - an efficient dynamic menu for X";
+      homepage = https://bitbucket.org/melek/dmenu2;
+      license = licenses.mit;
+      maintainers = [ maintainers.cstrahan ];
+      platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dmrconfig/default.nix b/nixpkgs/pkgs/applications/misc/dmrconfig/default.nix
new file mode 100644
index 000000000000..7125e37f7f95
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dmrconfig/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub
+, libusb1, systemd }:
+
+stdenv.mkDerivation rec {
+  name = "dmrconfig-${version}";
+  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/misc/dockbarx/default.nix b/nixpkgs/pkgs/applications/misc/dockbarx/default.nix
new file mode 100644
index 000000000000..3888c4ce0a0d
--- /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..4d266827415f
--- /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
+   1.14.6
diff --git a/nixpkgs/pkgs/applications/misc/doing/default.nix b/nixpkgs/pkgs/applications/misc/doing/default.nix
new file mode 100644
index 000000000000..0286e38a0edf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doing/default.nix
@@ -0,0 +1,25 @@
+{ lib, bundlerEnv, ruby
+}:
+
+# Bundix:
+# nix-shell -p bundix zlib
+bundlerEnv rec {
+  pname = "doing";
+  version = (import ./gemset.nix).doing.version;
+
+  inherit ruby;
+  gemdir = ./.;
+
+  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    = http://brettterpstra.com/projects/doing/;
+    license     = licenses.mit;
+    maintainers = with maintainers; [ ktf ];
+    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..fd08ed9c3916
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/doomseeker/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, cmake, fetchFromBitbucket, pkgconfig, qtbase, qttools, qtmultimedia, zlib, bzip2, xxd }:
+
+stdenv.mkDerivation rec {
+  name = "doomseeker-${version}";
+  version = "2018-03-05";
+
+  src = fetchFromBitbucket {
+    owner = "Doomseeker";
+    repo = "doomseeker";
+    rev = "c2c7f37b1afb";
+    sha256 = "17fna3a604miqsvply3klnmypps4ifz8axgd3pj96z46ybxs8akw";
+  };
+
+  patches = [ ./fix_paths.patch ./qt_build_fix.patch ];
+
+  buildInputs = [ qtbase qtmultimedia zlib bzip2 ];
+
+  nativeBuildInputs = [ cmake qttools pkgconfig xxd ];
+
+  enableParallelBuilding = true;
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.cc.isClang "-Wno-error=format-security";
+
+  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..1d3c405b7038
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dotfiles/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "dotfiles";
+  name = "${pname}-${version}";
+  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..b5ae9fb567ca
--- /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";
+  name = "dozenal-${version}";
+  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/dump1090/default.nix b/nixpkgs/pkgs/applications/misc/dump1090/default.nix
new file mode 100644
index 000000000000..29f6c6085602
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dump1090/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libusb, rtl-sdr }:
+
+stdenv.mkDerivation rec {
+  name = "dump1090-${version}";
+  version = "2014-10-31";
+
+  src = fetchFromGitHub {
+    owner = "MalcolmRobb";
+    repo = "dump1090";
+    rev = "bff92c4ad772a0a8d433f788d39dae97e00e4dbe";
+    sha256 = "06aaj9gpz5v4qzvnp8xf18wdfclp0jvn3hflls79ly46gz2dh9hy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ libusb rtl-sdr ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  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/MalcolmRobb/dump1090;
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ earldouglas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/dunst/default.nix b/nixpkgs/pkgs/applications/misc/dunst/default.nix
new file mode 100644
index 000000000000..12f1f78acb9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/dunst/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, makeWrapper
+, pkgconfig, which, perl, libXrandr
+, cairo, dbus, systemd, gdk_pixbuf, glib, libX11, libXScrnSaver
+, libXinerama, libnotify, libxdg_basedir, pango, xproto, librsvg, dunstify ? false
+}:
+
+stdenv.mkDerivation rec {
+  name = "dunst-${version}";
+  version = "1.3.2";
+
+  src = fetchFromGitHub {
+    owner = "dunst-project";
+    repo = "dunst";
+    rev = "v${version}";
+    sha256 = "1kqlshaflp306yrjjmc28pghi1y5p24vdx4bxf8i4n9khdawb514";
+  };
+
+  nativeBuildInputs = [ perl pkgconfig which systemd makeWrapper ];
+
+  buildInputs = [
+    cairo dbus gdk_pixbuf glib libX11 libXScrnSaver
+    libXinerama libnotify libxdg_basedir pango xproto 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 = stdenv.lib.optionalString dunstify ''
+    install -Dm755 dunstify $out/bin
+  '' + ''
+    wrapProgram $out/bin/dunst \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  meta = with stdenv.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 = [ maintainers.domenkozar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/eaglemode/default.nix b/nixpkgs/pkgs/applications/misc/eaglemode/default.nix
new file mode 100644
index 000000000000..0404ef8ce220
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/eaglemode/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, perl, libX11, libjpeg, libpng, libtiff, pkgconfig,
+librsvg, glib, gtk2, libXext, libXxf86vm, poppler, xineLib }:
+
+stdenv.mkDerivation rec {
+  name = "eaglemode-0.86.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/eaglemode/${name}.tar.bz2";
+    sha256 = "1a2hzyck95g740qg4p4wd4fjwsmlknh75i9sbx5r5v9pyr4i3m4f";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl libX11 libjpeg libpng libtiff
+    librsvg glib gtk2 libXxf86vm libXext poppler xineLib ];
+
+  # The program tries to dlopen both Xxf86vm and Xext, 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"
+    perl make.pl build
+  '';
+
+  dontPatchELF = true;
+
+  installPhase = ''
+    perl make.pl install dir=$out
+    # I don't like this... but it seems the way they plan to run it by now.
+    # Run 'eaglemode.sh', not 'eaglemode'.
+    ln -s $out/eaglemode.sh $out/bin/eaglemode.sh
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://eaglemode.sourceforge.net;
+    description = "Zoomable User Interface";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ebook2cw/configfile.patch b/nixpkgs/pkgs/applications/misc/ebook2cw/configfile.patch
new file mode 100644
index 000000000000..c7aafe5227a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/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/misc/ebook2cw/default.nix b/nixpkgs/pkgs/applications/misc/ebook2cw/default.nix
new file mode 100644
index 000000000000..cce10258cf3b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ebook2cw/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchsvn, lame, libvorbis }:
+
+stdenv.mkDerivation rec {
+
+  name = "ebook2cw-${version}";
+  version = "0.8.2";
+
+  src = fetchsvn {
+    url = "svn://svn.fkurz.net/ebook2cw/tags/${name}";
+    sha256 = "1mvp3nz3k76v757792n9b7fcm5jm3jcwarl1k7cila9fi0c2rsiw";
+  };
+
+  buildInputs = [ lame libvorbis ];
+
+  patches = [ ./configfile.patch ];
+
+  postPatch = ''
+    substituteInPlace Makefile --replace gcc cc
+  '';
+
+  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/misc/electron-cash/default.nix b/nixpkgs/pkgs/applications/misc/electron-cash/default.nix
new file mode 100644
index 000000000000..fff67b0add62
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electron-cash/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchurl, python3Packages, qtbase, makeWrapper, lib }:
+
+let
+
+  python = python3Packages.python;
+
+in
+
+python3Packages.buildPythonApplication rec {
+  version = "3.3.2";
+  name = "electron-cash-${version}";
+
+  src = fetchurl {
+    url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz";
+    # Verified using official SHA-1 and signature from
+    # https://github.com/fyookball/keys-n-hashes
+    sha256 = "4538044cfaa4f87a847635849e0733f32b183ac79abbd2797689c86dc3cb0d53";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    dnspython
+    ecdsa
+    jsonrpclib-pelix
+    matplotlib
+    pbkdf2
+    pyaes
+    pycrypto
+    pyqt5
+    pysocks
+    qrcode
+    requests
+    tlslite-ng
+
+    # plugins
+    keepkey
+    trezor
+    btchip
+  ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postPatch = ''
+    # Remove pyqt5 check
+    sed -i '/pyqt5/d' setup.py
+  '';
+
+  preBuild = ''
+    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
+  '';
+
+  doCheck = false;
+
+  postInstall = ''
+    # These files are installed under $out/homeless-shelter ...
+    mv $out/${python.sitePackages}/homeless-shelter/.local/share $out
+    rm -rf $out/${python.sitePackages}/homeless-shelter
+
+    substituteInPlace $out/share/applications/electron-cash.desktop \
+      --replace "Exec=electron-cash %u" "Exec=$out/bin/electron-cash %u"
+
+    # Please remove this when #44047 is fixed
+    wrapProgram $out/bin/electron-cash \
+      --prefix QT_PLUGIN_PATH : ${qtbase}/lib/qt-5.${lib.versions.minor qtbase.version}/plugins
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/electron-cash help >/dev/null
+  '';
+
+  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://www.electroncash.org/;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ lassulus ];
+    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..98ed10b0c7cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/dash.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  version = "2.9.3.1";
+  name = "electrum-dash-${version}";
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/electrum/default.nix b/nixpkgs/pkgs/applications/misc/electrum/default.nix
new file mode 100644
index 000000000000..9adcea837735
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, python3, python3Packages, zbar }:
+
+let
+  qdarkstyle = python3Packages.buildPythonPackage rec {
+    pname = "QDarkStyle";
+    version = "2.5.4";
+    src = python3Packages.fetchPypi {
+      inherit pname version;
+      sha256 = "1w715m1i5pycfqcpkrggpn0rs9cakx6cm5v8rggcxnf4p0i0kdiy";
+    };
+    doCheck = false; # no tests
+  };
+in
+
+python3Packages.buildPythonApplication rec {
+  name = "electrum-${version}";
+  version = "3.2.3";
+
+  src = fetchurl {
+    url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
+    sha256 = "139kzapas1l61w1in9f7c6ybricid4fzryfnvsrfhpaqh83ydn2c";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    dnspython
+    ecdsa
+    jsonrpclib-pelix
+    matplotlib
+    pbkdf2
+    protobuf
+    pyaes
+    pycryptodomex
+    pyqt5
+    pysocks
+    qdarkstyle
+    qrcode
+    requests
+    tlslite-ng
+    typing
+
+    # plugins
+    keepkey
+    trezor
+    btchip
+
+    # TODO plugins
+    # amodem
+  ];
+
+  preBuild = ''
+    sed -i 's,usr_share = .*,usr_share = "'$out'/share",g' setup.py
+    pyrcc5 icons.qrc -o electrum/gui/qt/icons_rc.py
+    # Recording the creation timestamps introduces indeterminism to the build
+    sed -i '/Created: .*/d' electrum/gui/qt/icons_rc.py
+    sed -i "s|name = 'libzbar.*'|name='${zbar}/lib/libzbar.so'|" electrum/qrscanner.py
+  '';
+
+  postInstall = ''
+    # 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=electrum %u" "Exec=$out/bin/electrum %u"
+  '';
+
+  doCheck = false;
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/electrum help >/dev/null
+  '';
+
+  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;
+    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..45c448804626
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/electrum/ltc.nix
@@ -0,0 +1,55 @@
+{ stdenv
+, fetchurl
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  name = "electrum-ltc-${version}";
+  version = "3.1.3.1";
+
+  src = fetchurl {
+    url = "https://electrum-ltc.org/download/Electrum-LTC-${version}.tar.gz";
+    sha256 = "0kxcx1xf6h9z8x0k483d6ykpnmfr30n6z3r6lgqxvbl42pq75li7";
+  };
+
+  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; [ asymmetric ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/emem/default.nix b/nixpkgs/pkgs/applications/misc/emem/default.nix
new file mode 100644
index 000000000000..d447e7f50d52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/emem/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, jdk }:
+
+stdenv.mkDerivation rec {
+  pname = "emem";
+  version = "0.2.50";
+  name = "${pname}-${version}";
+
+  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..b6c10dbebcad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/epdfview/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, fetchpatch, pkgconfig, gtk2, poppler }:
+
+stdenv.mkDerivation rec {
+  name = "epdfview-${version}";
+  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/ephemeralpg/default.nix b/nixpkgs/pkgs/applications/misc/ephemeralpg/default.nix
new file mode 100644
index 000000000000..0ade32d99899
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ephemeralpg/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, postgresql, makeWrapper }:
+stdenv.mkDerivation rec {
+  name = "ephemeralpg-${version}";
+  version = "2.5";
+  src = fetchurl {
+    url = "http://ephemeralpg.org/code/${name}.tar.gz";
+    sha256 = "004fcll7248h73adkqawn9bhkqj9wsxyi3w99x64f7s37r2518wk";
+  };
+  buildInputs = [ makeWrapper ];
+  installPhase = ''
+    mkdir -p $out
+    PREFIX=$out make install
+    wrapProgram $out/bin/pg_tmp --prefix PATH : ${postgresql}/bin
+  '';
+  meta = {
+    description = ''Run tests on an isolated, temporary PostgreSQL database.'';
+    license = stdenv.lib.licenses.isc;
+    homepage = http://ephemeralpg.org/;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/et/default.nix b/nixpkgs/pkgs/applications/misc/et/default.nix
new file mode 100644
index 000000000000..4aaaa3339982
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/et/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libnotify, gdk_pixbuf }:
+
+stdenv.mkDerivation rec {
+  name = "et-${version}";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "geistesk";
+    repo = "et";
+    rev = "${version}";
+    sha256 = "167w9qwfpd63rgy0xmkkkh5krmd91q42c3ijy3j099krgdfbb9bc";
+  };
+
+  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..98b47990314d
--- /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 {
+  name = "eterm-${version}";
+  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/eureka-editor/default.nix b/nixpkgs/pkgs/applications/misc/eureka-editor/default.nix
new file mode 100644
index 000000000000..b8bd0a59bea2
--- /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 {
+  name = "eureka-editor-${version}";
+  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..b72fcde4a9ee
--- /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 rec {
+  name = "evilvte-${version}";
+  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.xproto xorg.kbproto xorg.libXext xorg.xextproto 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/evopedia/default.nix b/nixpkgs/pkgs/applications/misc/evopedia/default.nix
new file mode 100644
index 000000000000..69767c11d6aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/evopedia/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, bzip2, qt4, qmake4Hook, libX11 }:
+
+stdenv.mkDerivation rec {
+  name = "evopedia-${version}";
+  version = "0.4.4";
+
+  src = fetchFromGitHub {
+    owner = "evopedia";
+    repo = "evopedia_qt";
+    rev = "v${version}";
+    sha256 = "0snp5qiywj306kfaywvkl7j34fivgxcb8dids1lzmbqq5xcpqqvc";
+  };
+
+  buildInputs = [ bzip2 qt4 libX11 ];
+  nativeBuildInputs = [ qmake4Hook ];
+
+  postInstall = ''
+    # Patch the `evopedia.desktop' file.
+    substituteInPlace $out/share/applications/evopedia.desktop \
+        --replace '/usr/bin/evopedia' $out/bin/evopedia
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Offline Wikipedia Viewer";
+    homepage = http://www.evopedia.info;
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.qknight ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/evtest/default.nix b/nixpkgs/pkgs/applications/misc/evtest/default.nix
new file mode 100644
index 000000000000..3d715a1d16bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/evtest/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "evtest-1.33";
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libxml2 ];
+
+  src = fetchgit {
+    url = "git://anongit.freedesktop.org/evtest";
+    rev = "refs/tags/evtest-1.33";
+    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..946f3695f166
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/exercism/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name    = "exercism-${version}";
+  version = "3.0.9";
+
+  goPackagePath = "github.com/exercism/cli";
+
+  src = fetchFromGitHub {
+    owner  = "exercism";
+    repo   = "cli";
+    rev    = "v${version}";
+    sha256 = "0nr3dzipylicrbplh25dw0w84qklr0xcyq442i9aswzibqrb2vc6";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+   inherit (src.meta) homepage;
+   description = "A Go based command line tool for exercism.io";
+   license     = licenses.mit;
+   maintainers = [ maintainers.rbasso ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/exercism/deps.nix b/nixpkgs/pkgs/applications/misc/exercism/deps.nix
new file mode 100644
index 000000000000..10a6baa2241b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/exercism/deps.nix
@@ -0,0 +1,201 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/blang/semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blang/semver";
+      rev =  "2ee87856327ba09384cabd113bc6b5d174e9ec0f";
+      sha256 = "13ws259bwcibkclbr82ilhk6zadm63kxklxhk12wayklj8ghhsmy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "346938d642f2ec3594ed81d874461961cd0faa76";
+      sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "629574ca2a5df945712d3079857300b5e4da0236";
+      sha256 = "06wfg1mmzjj04z7d0q1x2fai9k6hm957brngsaf02fa9a3qqanv3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev =  "392dba7d905ed5d04a5794ba89f558b27e2ba1ca";
+      sha256 = "1rfm67kma2hpakabf7hxlj196jags4rpjpcirwg4kan4g9b6j0kb";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/go-update";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/go-update";
+      rev =  "8152e7eb6ccf8679a64582a66b78519688d156ad";
+      sha256 = "07czhspakpi7al004rm669cmf4h5l0vnygsm11280nkfn2zxqdi3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev =  "be5ece7dd465ab0765a9682137865547526d1dfb";
+      sha256 = "0spk58x9b0hj29cw6wy6rlvc6s9xk4r0gmlxgsc194pkzqcg1my8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev =  "d0303fe809921458f417bcf828397a65db30a7e4";
+      sha256 = "1fjwi5ghc1ibyx93apz31n4hj6gcq1hzismpdfbg2qxwshyg0ya8";
+    };
+  }
+  {
+    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 =  "5ccdfb18c776b740aecaf085c4d9a2779199c279";
+      sha256 = "1jl44j58y62rhnwkzw3mvcj725gdyzs45pq4ga81qqxwqxs3czsq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "792786c7400a136282c1664665ae0a8db921c6c2";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    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 =  "b26b538f693051ac6518e65672de3144ce3fbedc";
+      sha256 = "0pm3qlw35xygz9zz7hizlmin76wrfac8vsxvsd9i0zpnijbkmjv6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev =  "0efa5202c04663c757d84f90f5219c1250baf94f";
+      sha256 = "1sfd72zvw9lrzfc8haswhqf93bzm20q4yhbynm6n5fnnc56zn4gs";
+    };
+  }
+  {
+    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 =  "15738813a09db5c8e5b60a19d67d3f9bd38da3a4";
+      sha256 = "1mjfzg8zvnxckaq6l8gw99i2msrfqn9yr04dc3b7kd5bpxi6zr4v";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev =  "69483b4bd14f5845b5a1e55bca19e954e827f1d0";
+      sha256 = "11lzrwkdzdd8yyag92akncc008h2f9d1bpc489mxiwp0jrmz4ivb";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f";
+      sha256 = "0sck2mq4bwyh5iv51jpbywzwhc47ci1q5yd7pqr68xnsz7b3b55k";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "d8f5ea21b9295e315e612b4bcf4bedea93454d4d";
+      sha256 = "1gy2y20glqqqcmmrcx2wrvk4h74h8im1nxvzi91i1mxjk7p185mv";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "3bd178b88a8180be2df394a1fbb81313916f0e7b";
+      sha256 = "137pp3gz8ll08q0q434dn6472bbkv81h72qqqm9idhf7cc6f51w9";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "25c4ec802a7d637f88d584ab26798e94ad14c13b";
+      sha256 = "053mknsl3xhjscmd552005xnwbfcg0z2iphvbvj3wi0w3pvmlw44";
+    };
+  }
+]
\ 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..389ac7dfb1fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/extract_url/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, perl
+, MIMEtools, HTMLParser
+, cursesSupport ? true, CursesUI
+, uriFindSupport ? true, URIFind
+}:
+
+let
+  perlDeps =
+    [ MIMEtools HTMLParser ]
+    ++ lib.optional cursesSupport CursesUI
+    ++ lib.optional uriFindSupport URIFind;
+
+in stdenv.mkDerivation rec {
+  name = "extract_url-${version}";
+  version = "1.6.2";
+
+  src = fetchFromGitHub {
+    owner = "m3m0ryh0l3";
+    repo = "extracturl";
+    rev = "v${version}";
+    sha256 = "05589lp15jmcpbj4y9a3hmf6n2gsqrm4ybcyh3hd4j6pc7hmnhny";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl ] ++ perlDeps;
+
+  makeFlags = [ "prefix=$(out)" ];
+  installFlags = [ "INSTALL=install" ];
+
+  postFixup = ''
+    wrapProgram "$out/bin/extract_url" \
+      --set PERL5LIB "${lib.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..51e9c4371b5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/far2l/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchFromGitHub, fetchpatch, makeWrapper, cmake, pkgconfig, wxGTK30, glib, pcre, m4, bash,
+  xdg_utils, gvfs, zip, unzip, gzip, bzip2, gnutar, p7zip, xz, imagemagick, darwin }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  build = "unstable-2018-07-19.git${builtins.substring 0 7 src.rev}";
+  name = "far2l-2.1.${build}";
+
+  src = fetchFromGitHub {
+    owner = "elfmz";
+    repo = "far2l";
+    rev = "dceaa3918ea2c5e43600bad3fc63f861b8d26fc4";
+    sha256 = "1ssd3hwz4b7vl4r858d9whl61cn23pgcamcjmvfa6ysf4x2b7sgi";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig m4 makeWrapper imagemagick ];
+
+  buildInputs = [ wxGTK30 glib pcre ]
+    ++ optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa;
+
+  postPatch = optionalString stdenv.isLinux ''
+    substituteInPlace far2l/bootstrap/trash.sh \
+      --replace 'gvfs-trash'  '${gvfs}/bin/gvfs-trash'
+  '' + optionalString stdenv.isDarwin ''
+    substituteInPlace far2l/CMakeLists.txt \
+      --replace "-framework System" -lSystem
+  '' + ''
+    echo 'echo ${build}' > 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 '
+
+    ( cd colorer/configs/base
+      patch -p2 <  ${ fetchpatch {
+                        name   = "nix-language-highlighting.patch";
+                        url    = https://github.com/colorer/Colorer-schemes/commit/64bd06de0a63224b431cd8fc42cd9fa84b8ba7c0.patch;
+                        sha256 = "1mrj1wyxmk7sll9j1jzw6miwi0sfavf654klms24wngnh6hadsch";
+                      }
+                    }
+    )
+  '';
+
+  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
+
+    sed "s,/usr/bin/,$out/bin/," ../far2l/DE/far2l.desktop > $out/share/applications/far2l.desktop
+
+    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 = {
+    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/fbreader/default.nix b/nixpkgs/pkgs/applications/misc/fbreader/default.nix
new file mode 100644
index 000000000000..e7d0e6a63a59
--- /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" ]; # since gcc-6
+
+  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..db78f2ec9204
--- /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..e9d194666094
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fetchmail/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, openssl }:
+
+let
+  version = "6.3.26";
+in
+stdenv.mkDerivation {
+  name="fetchmail-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fetchmail.berlios/fetchmail-${version}.tar.bz2";
+    sha256 = "08rafrs1dlr11myr0p99kg4k80qyy0fa63gg3ac88zn49174lwhw";
+  };
+
+  buildInputs = [ openssl ];
+
+  configureFlags = [ "--with-ssl=${openssl.dev}" ];
+
+  meta = {
+    homepage = http://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/flamerobin/default.nix b/nixpkgs/pkgs/applications/misc/flamerobin/default.nix
new file mode 100644
index 000000000000..f70042884a8a
--- /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";
+  name = "flamerobin-${version}";
+
+  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/fllog/default.nix b/nixpkgs/pkgs/applications/misc/fllog/default.nix
new file mode 100644
index 000000000000..348b1155e41e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/fllog/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.2.5";
+  pname = "fllog";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${name}.tar.gz";
+    sha256 = "042j1g035338vfbl4i9laai8af8iakavar05xn2m4p7ww6x76zzl";
+  };
+
+  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/misc/flmsg/default.nix b/nixpkgs/pkgs/applications/misc/flmsg/default.nix
new file mode 100644
index 000000000000..afdf0f91a910
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/flmsg/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "4.0.7";
+  pname = "flmsg";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${name}.tar.gz";
+    sha256 = "1kdlwhxsw02pas9d0kakkq2713wj1m4q881f6am5aq4x8n01f4xw";
+  };
+
+  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/misc/flrig/default.nix b/nixpkgs/pkgs/applications/misc/flrig/default.nix
new file mode 100644
index 000000000000..64d2677d4e13
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/flrig/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.41";
+  pname = "flrig";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${name}.tar.gz";
+    sha256 = "0vh14azg3pppyg3fb7kf6q3ighw1ka9m60jf2dzsd77f4hidhqx4";
+  };
+
+  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/misc/flwrap/default.nix b/nixpkgs/pkgs/applications/misc/flwrap/default.nix
new file mode 100644
index 000000000000..b96f3c2b3278
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/flwrap/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, fetchurl
+, fltk13
+, libjpeg
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.5";
+  pname = "flwrap";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fldigi/${name}.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/misc/fme/default.nix b/nixpkgs/pkgs/applications/misc/fme/default.nix
new file mode 100644
index 000000000000..4e786bfb36f8
--- /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{
+
+  name = "fme-${version}";
+  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..998074e8aa0f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/font-manager/default.nix
@@ -0,0 +1,69 @@
+{ stdenv, fetchFromGitHub, automake, autoconf, libtool,
+  pkgconfig, file, intltool, libxml2, json-glib , sqlite, itstool,
+  librsvg, vala, gnome3, wrapGAppsHook, gobject-introspection
+}:
+
+stdenv.mkDerivation rec {
+  name = "font-manager-${version}";
+  version = "0.7.3.1";
+
+  src = fetchFromGitHub {
+    owner = "FontManager";
+    repo = "master";
+    rev = version;
+    sha256 = "0i65br0bk3r6x8wcl8jhc0v0agl0k6fy5g60ss1bnw4md7ldpgyi";
+    };
+
+  nativeBuildInputs = [
+    pkgconfig
+    automake autoconf libtool
+    file
+    intltool
+    itstool
+    vala
+    gnome3.yelp-tools
+    wrapGAppsHook
+    # For setup hook
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    libxml2
+    json-glib
+    sqlite
+    librsvg
+    gnome3.gtk
+    gnome3.libgee
+    gnome3.defaultIconTheme
+  ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    NOCONFIGURE=true ./autogen.sh
+    substituteInPlace configure --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+
+  configureFlags = [
+    "--with-file-roller"
+    "--disable-pycompile"
+  ];
+
+  meta = {
+    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 = stdenv.lib.licenses.gpl3;
+    repositories.git = https://github.com/FontManager/master;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/freemind/default.nix b/nixpkgs/pkgs/applications/misc/freemind/default.nix
new file mode 100644
index 000000000000..eeb269e580c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/freemind/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, jdk, jre, ant }:
+
+stdenv.mkDerivation rec {
+  name = "freemind-${version}";
+  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
+    #! /bin/sh
+    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/gImageReader/default.nix b/nixpkgs/pkgs/applications/misc/gImageReader/default.nix
new file mode 100644
index 000000000000..75783805fa3b
--- /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
+, gtk3, gobject-introspection, wrapGAppsHook
+, gnome3, gtkspell3, gtkspellmm, cairomm
+}:
+
+let
+  variant = "gtk";
+  pythonEnv = python3.withPackages( ps: with ps;[ pygobject3 ] );
+in
+stdenv.mkDerivation rec {
+  name = "gImageReader-${version}";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner= "manisandro";
+    repo = "gImageReader";
+    rev = "v${version}";
+    sha256 = "0pjk4kr7bc5q4hi1xf7na2zln9fyqdazgzq62r3bg41nzy7fakcz";
+  };
+
+  nativeBuildInputs = [
+    cmake ninja
+    intltool
+    pkgconfig
+    pythonEnv
+
+    # Gtk specific
+    wrapGAppsHook
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    libxmlxx3
+    libzip
+    libuuid
+    sane-backends
+    podofo
+    libjpeg
+    djvulibre
+    tesseract
+    poppler
+
+    # Gtk specific
+    gnome3.gtkmm
+    gtkspell3
+    gtkspellmm
+    gnome3.gtksourceview
+    gnome3.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..44071b328758
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/galculator/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub
+, autoreconfHook, intltool
+, gtk, pkgconfig, flex }:
+
+stdenv.mkDerivation rec {
+  name = "galculator-${version}";
+  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/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..f05514f3fc58
--- /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 {
+  name = "gammu-${version}";
+  version = "1.39.0";
+
+  src = fetchFromGitHub {
+    owner = "gammu";
+    repo = "gammu";
+    rev = version;
+    sha256 = "1hr053z2l5mjgip83fsxnd1rqsp5gwywzagzrgdg243apn1nz0gs";
+  };
+
+  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..2257b2a98fb7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ganttproject-bin/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchzip, makeDesktopItem, makeWrapper
+, jre }:
+
+stdenv.mkDerivation rec {
+  name = "ganttproject-bin-${version}";
+  version = "2.7.2";
+
+  src = let build = "r1954"; in fetchzip {
+    sha256 = "0l655w6n88j7klz56af8xkpiv1pwlkfl5x1d33sqv9dnyisyw2hc";
+    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;";
+    };
+
+  in ''
+    mkdir -pv "$out/share/ganttproject"
+    cp -rv *  "$out/share/ganttproject"
+
+    mkdir -pv "$out/bin"
+    wrapProgram "$out/share/ganttproject/ganttproject" \
+      --set JAVA_HOME "${jre}"
+    mv -v "$out/share/ganttproject/ganttproject" "$out/bin"
+
+    install -v -Dm644 \
+      plugins/net.sourceforge.ganttproject/data/resources/icons/ganttproject.png \
+      "$out/share/pixmaps/ganttproject.png"
+    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;
+  };
+}
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..b97b079ab663
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/garmin-plugin/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, garmintools, libgcrypt, libusb, 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 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..a3aebf227339
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gcal/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, ncurses  }:
+
+stdenv.mkDerivation rec {
+  name = "gcal-${version}";
+  version = "4.1";
+
+  src = fetchurl {
+    url = "mirror://gnu/gcal/${name}.tar.xz";
+    sha256 = "1av11zkfirbixn05hyq4xvilin0ncddfjqzc4zd9pviyp506rdci";
+  };
+
+  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..ac8d082513b2
--- /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 {
+  version = "4.0.0a4";
+  name = "gcalcli-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "insanum";
+    repo   = "gcalcli";
+    rev    = "v${version}";
+    sha256 = "00giq5cdigidzv5bz4wgzi1yp6xlf2rdcy6ynmsc6bcf0cl5x64d";
+  };
+
+  propagatedBuildInputs = [
+    dateutil gflags httplib2 parsedatetime six vobject
+    google_api_python_client oauth2client uritemplate
+  ] ++ lib.optional (!isPy3k) futures;
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    substituteInPlace $out/bin/gcalcli --replace \
+      "command = 'notify-send -u critical -a gcalcli %s'" \
+      "command = '${libnotify}/bin/notify-send -i view-calendar-upcoming-events -u critical -a Calendar %s'"
+  '';
+
+  # 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/get_iplayer/default.nix b/nixpkgs/pkgs/applications/misc/get_iplayer/default.nix
new file mode 100644
index 000000000000..5e8bb629ce2a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/get_iplayer/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchFromGitHub, atomicparsley, flvstreamer, ffmpeg, makeWrapper, perl, perlPackages, rtmpdump}:
+
+with stdenv.lib;
+
+perlPackages.buildPerlPackage rec {
+  name = "get_iplayer-${version}";
+  version = "2.99";
+
+  src = fetchFromGitHub {
+    owner = "get-iplayer";
+    repo = "get_iplayer";
+    rev = "v${version}";
+    sha256 = "085bgwkjnaqp96gvd2s8qmkw69rz91si1sgzqdqbplkzj9bk2qii";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl ];
+  propagatedBuildInputs = with perlPackages; [HTMLParser HTTPCookies LWP 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 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;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/getxbook/default.nix b/nixpkgs/pkgs/applications/misc/getxbook/default.nix
new file mode 100644
index 000000000000..a77f87f6f1f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/getxbook/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, openssl }:
+
+stdenv.mkDerivation rec {
+  name    = "getxbook-${version}";
+  version = "1.2";
+
+  src = fetchurl {
+    url    = "https://njw.me.uk/getxbook/${name}.tar.xz";
+    sha256 = "0ihwrx4gspj8l7fc8vxch6dpjrw1lvv9z3c19f0wxnmnxhv1cjvs";
+  };
+
+  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..919f20f13983
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/girara/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig, glib, gtk, gettext, libiconv, libintl
+}:
+
+stdenv.mkDerivation rec {
+  name = "girara-${version}";
+  version = "0.3.2";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/girara/download/${name}.tar.xz";
+    sha256 = "1kc6n1mxjxa7wvwnqy94qfg8l9jvx9qrvrr2kc7m4g0z20x3a00p";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig gettext ];
+  buildInputs = [ libintl libiconv ];
+  propagatedBuildInputs = [ glib gtk ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pwmt.org/projects/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 = [ maintainers.garbas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gkrellm/default.nix b/nixpkgs/pkgs/applications/misc/gkrellm/default.nix
new file mode 100644
index 000000000000..b4fac899f66f
--- /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.10";
+
+  src = fetchurl {
+    url = "http://gkrellm.srcbox.net/releases/${name}.tar.bz2";
+    sha256 = "0rnpzjr0ys0ypm078y63q4aplcgdr5nshjzhmz330n6dmnxci7lb";
+  };
+
+  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..4af776674e63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gksu/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, gnome2, gnome3, libgksu,
+  intltool, libstartup_notification, gtk-doc, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.0.2";
+  pname = "gksu";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://people.debian.org/~kov/gksu/${name}.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..0cac0e6fd3f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/glava/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, writeScript, fetchFromGitHub
+, libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite
+, enableGlfw ? false, glfw }:
+
+let
+  inherit (stdenv.lib) optional makeLibraryPath;
+
+  wrapperScript = writeScript "glava" ''
+    #!${stdenv.shell}
+    case "$1" in
+      --copy-config)
+        # 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 {
+    name = "glava-${version}";
+    version = "1.5.8";
+
+    src = fetchFromGitHub {
+      owner = "wacossusca34";
+      repo = "glava";
+      rev = "v${version}";
+      sha256 = "0mps82qw2mhxx8069jvqz1v8n4x7ybrrjv92ij6cms8xi1y8v0fm";
+    };
+
+    buildInputs = [
+      libX11
+      libXext
+      libXrandr
+      libXrender
+      libpulseaudio
+      libXcomposite
+    ] ++ optional enableGlfw glfw;
+
+    nativeBuildInputs = [
+      python3
+    ];
+
+    preConfigure = ''
+      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..9e71837c0f5d
--- /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
+, gnome3
+, gobject-introspection
+, 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
+    gnome3.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 = gnome3.maintainers;
+    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..053da375ab15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmrun/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, glib, gtk2, pkgconfig, popt }:
+
+let
+  version = "0.9.2";
+in
+
+stdenv.mkDerivation rec {
+  name = "gmrun-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gmrun/${name}.tar.gz";
+    sha256 = "180z6hbax1qypy5cyy2z6nn7fzxla4ib47ck8mqwr714ag77na8p";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib gtk2 popt ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  patches = [
+      ./gcc43.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/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..bb1556c7c4dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gmtp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, libmtp, libid3tag, flac, libvorbis, gtk3
+, gsettings-desktop-schemas, wrapGAppsHook
+}:
+
+let version = "1.3.11"; in
+
+stdenv.mkDerivation {
+  name = "gmtp-${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 = [ stdenv.lib.maintainers.pbogdan ];
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
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..154af4efc9b7
--- /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
+, rest
+, 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
+    rest
+    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${gnome3.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 = gnome3.maintainers;
+    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..f5420a0c9449
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome-usage/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig, vala, gettext
+, libxml2, desktop-file-utils, wrapGAppsHook
+, glib, gtk3, libgtop, gnome3 }:
+
+let
+  pname = "gnome-usage";
+  version = "3.30.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "0f1vccw916az8hzsqmx6f57jvl68s3sbd3qk4rpwn42ks1v7nmsh";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig vala gettext libxml2 desktop-file-utils wrapGAppsHook ];
+
+  buildInputs = [ glib gtk3 libgtop gnome3.defaultIconTheme ];
+
+  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 = "";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnome15/default.nix b/nixpkgs/pkgs/applications/misc/gnome15/default.nix
new file mode 100644
index 000000000000..e2cf8245ce67
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnome15/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, python2, gnome_python, gnome_python_desktop }:
+
+stdenv.mkDerivation rec {
+  name = "gnome15-2016-06-10";
+
+  src = fetchFromGitHub {
+    owner = "achilleas-k";
+    repo = "gnome15";
+    rev = "1077c890d9ba8ef7a5e448e70a792de5c7443c84";
+    sha256 = "0z5k2rgvv5zyi3lbbk6svncypidj44qzfchivb4vlr7clmh16m95";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig python2.pkgs.wrapPython ];
+  buildInputs = [ python2 ];
+  propagatedBuildInputs = with python2.pkgs; [
+    pygtk keyring virtkey pillow dbus-python pyinotify lxml pyxdg pyusb gnome_python gnome_python_desktop
+    python-uinput xlib pyudev pyinputevent
+  ];
+
+  postPatch = ''
+    touch README
+    export UDEV_RULES_PATH="$out/lib/udev/rules.d"
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A set of tools for configuring the Logitech G15 keyboard";
+    license = licenses.gpl3;
+    homepage = https://gnome15.org/;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnss-sdr/default.nix b/nixpkgs/pkgs/applications/misc/gnss-sdr/default.nix
new file mode 100644
index 000000000000..6cbdea8c6867
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnss-sdr/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub
+, armadillo
+, boost
+, cmake
+, glog
+, gmock
+, openssl
+, google-gflags
+, gnuradio
+, orc
+, pkgconfig
+, pythonPackages
+, uhd
+}:
+
+stdenv.mkDerivation rec {
+  name = "gnss-sdr-${version}";
+  version = "0.0.9";
+
+  src = fetchFromGitHub {
+    owner = "gnss-sdr";
+    repo = "gnss-sdr";
+    rev = "v${version}";
+    sha256 = "0gis932ly3vk7d5qvznffp54pkmbw3m6v60mxjfdj5dd3r7vf975";
+  };
+
+  buildInputs = [
+    armadillo
+    boost.dev
+    cmake
+    glog
+    gmock
+    openssl.dev
+    google-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
+  ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DGFlags_ROOT_DIR=${google-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"
+
+    # 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/misc/gnuradio/ais.nix b/nixpkgs/pkgs/applications/misc/gnuradio/ais.nix
new file mode 100644
index 000000000000..dfb8415219c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnuradio/ais.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, makeWrapper, cppunit, gnuradio-osmosdr
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation rec {
+  name = "gnuradio-ais-${version}";
+  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 gnuradio-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/misc/gnuradio/default.nix b/nixpkgs/pkgs/applications/misc/gnuradio/default.nix
new file mode 100644
index 000000000000..a7c00cceaa72
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnuradio/default.nix
@@ -0,0 +1,122 @@
+{ stdenv, fetchFromGitHub, writeText, makeWrapper
+# 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 {
+  name = "gnuradio-${version}";
+  version = "3.7.13.4";
+
+  src = fetchFromGitHub {
+    owner = "gnuradio";
+    repo = "gnuradio";
+    rev = "v${version}";
+    sha256 = "0ybfn2zfr9lc1bi3c794l4bzpj8y6vas9c4rbcj4nqlx0zf3p8fn";
+    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
+  ];
+
+  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/misc/gnuradio/gsm.nix b/nixpkgs/pkgs/applications/misc/gnuradio/gsm.nix
new file mode 100644
index 000000000000..dcb50df70520
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnuradio/gsm.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, boost, gnuradio
+, makeWrapper, cppunit, libosmocore, gnuradio-osmosdr
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation rec {
+  name = "gnuradio-gsm-${version}";
+  version = "2016-08-25";
+
+  src = fetchFromGitHub {
+    owner = "ptrkrysik";
+    repo = "gr-gsm";
+    rev = "3ca05e6914ef29eb536da5dbec323701fbc2050d";
+    sha256 = "13nnq927kpf91iqccr8db9ripy5czjl5jiyivizn6bia0bam2pvx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio makeWrapper cppunit libosmocore gnuradio-osmosdr
+  ] ++ stdenv.lib.optionals pythonSupport [ python swig ];
+
+  postInstall = ''
+    for prog in "$out"/bin/*; do
+        wrapProgram "$prog" --set PYTHONPATH $PYTHONPATH:${gnuradio-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/misc/gnuradio/limesdr.nix b/nixpkgs/pkgs/applications/misc/gnuradio/limesdr.nix
new file mode 100644
index 000000000000..0a5d4f56d278
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnuradio/limesdr.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, boost, gnuradio
+, pythonSupport ? true, python, swig, limesuite
+} :
+
+assert pythonSupport -> python != null && swig != null;
+
+let
+  version = "1.0.0-RC";
+
+in stdenv.mkDerivation rec {
+  name = "gnuradio-limesdr-${version}";
+
+  src = fetchFromGitHub {
+    owner = "myriadrf";
+    repo = "gr-limesdr";
+    rev = "v${version}";
+    sha256 = "0b34mg9nfar2gcir98004ixrxmxi8p3p2hrvvi1razd869x2a0lf";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ 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/misc/gnuradio/nacl.nix b/nixpkgs/pkgs/applications/misc/gnuradio/nacl.nix
new file mode 100644
index 000000000000..2f4b0e4e3eb6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/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 rec {
+  name = "gnuradio-nacl-${version}";
+  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/misc/gnuradio/osmosdr.nix b/nixpkgs/pkgs/applications/misc/gnuradio/osmosdr.nix
new file mode 100644
index 000000000000..355ca0e95449
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gnuradio/osmosdr.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, cmake, pkgconfig, boost, gnuradio, rtl-sdr, uhd
+, makeWrapper, hackrf, airspy
+, pythonSupport ? true, python, swig
+}:
+
+assert pythonSupport -> python != null && swig != null;
+
+stdenv.mkDerivation rec {
+  name = "gnuradio-osmosdr-${version}";
+  version = "0.1.4";
+
+  src = fetchgit {
+    url = "git://git.osmocom.org/gr-osmosdr";
+    rev = "refs/tags/v${version}";
+    sha256 = "0vyzr4fhkblf2v3d7m0ch5hws4c493jw3ydl4y6b2dfbfzchhsz8";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake boost gnuradio rtl-sdr uhd makeWrapper hackrf airspy
+  ] ++ 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 the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gnuradio/rds.nix b/nixpkgs/pkgs/applications/misc/gnuradio/rds.nix
new file mode 100644
index 000000000000..5d9670ba3072
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/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 {
+  name = "gnuradio-rds-${version}";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "bastibl";
+    repo = "gr-rds";
+    rev = "v${version}";
+    sha256 = "008284ya464q4h4fd0zvcn6g7bym231p8fl3kdxncz9ks4zsbsxs";
+  };
+
+  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/misc/gnuradio/wrapper.nix b/nixpkgs/pkgs/applications/misc/gnuradio/wrapper.nix
new file mode 100644
index 000000000000..ffed3da03187
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/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/misc/go-jira/default.nix b/nixpkgs/pkgs/applications/misc/go-jira/default.nix
new file mode 100644
index 000000000000..b80ddb8f303f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/go-jira/default.nix
@@ -0,0 +1,22 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "go-jira-${version}";
+  version = "1.0.17";
+
+  goPackagePath = "gopkg.in/Netflix-Skunkworks/go-jira.v1";
+
+  src = fetchgit {
+    rev = "v${version}";
+    url = "https://gopkg.in/Netflix-Skunkworks/go-jira.v1";
+    sha256 = "0ap5dzikp934mawigmv7ighajr5yxpck2gpnb2cmkc1p6qa6gn4v";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Simple command line client for Atlassian's Jira service written in Go";
+    homepage = "https://github.com/Netflix-Skunkworks/go-jira";
+    license = licenses.asl20;
+    maintainers = [ maintainers.carlosdagos ];
+  };
+}
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..01447281fe76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/golden-cheetah/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl
+, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia, qttools, qtconnectivity
+, 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 stdenv.mkDerivation rec {
+  name = "golden-cheetah-${version}";
+  version = "3.4";
+  src = fetchurl {
+    name = "${name}.tar.gz";
+    url = "https://github.com/GoldenCheetah/GoldenCheetah/archive/V${version}.tar.gz";
+    sha256 = "0fiz2pj155cd357kph50lc6rjyzwp045glfv4y68qls9j7m9ayaf";
+  };
+  buildInputs = [
+    qtbase qtsvg qtserialport qtwebkit qtmultimedia qttools zlib
+    qtconnectivity
+  ];
+  nativeBuildInputs = [ flex makeWrapper qmake yacc ];
+  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
+    sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local
+  '';
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp src/GoldenCheetah $out/bin
+    wrapProgram $out/bin/GoldenCheetah --set LD_LIBRARY_PATH "${zlib.out}/lib"
+    install -Dm644 "${desktopItem}/share/applications/"* -t $out/share/applications/
+    install -Dm644 src/Resources/images/gc.png $out/share/pixmaps/goldencheetah.png
+
+    runHook postInstall
+  '';
+
+  # RCC: Error in 'Resources/application.qrc': Cannot find file 'translations/gc_fr.qm'
+  enableParallelBuilding = false;
+
+  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/default.nix b/nixpkgs/pkgs/applications/misc/goldendict/default.nix
new file mode 100644
index 000000000000..42d5d83f7bdb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/goldendict/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libXtst, libvorbis, hunspell
+, libao, ffmpeg, libeb, lzo, xz, libtiff
+, qtbase, qtsvg, qtwebkit, qtx11extras, qttools, qmake }:
+stdenv.mkDerivation rec {
+
+  name = "goldendict-2018-06-13";
+  src = fetchFromGitHub {
+    owner = "goldendict";
+    repo = "goldendict";
+    rev = "48e850c7ec11d83cba7499f7fdce377ef3849bbb";
+    sha256 = "0i4q4waqjv45hgwillvjik97pg26kwlmz4925djjkx8s6hxgjlq9";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    qtbase qtsvg qtwebkit qtx11extras qttools
+    libXtst libvorbis hunspell libao ffmpeg libeb lzo xz libtiff
+  ];
+
+  qmakeFlags = [ "CONFIG+=zim_support" ];
+
+  meta = with stdenv.lib; {
+    homepage = http://goldendict.org/;
+    description = "A feature-rich dictionary lookup program";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gebner astsmtl ];
+    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..e6c66cba1e06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/Gemfile.lock
@@ -0,0 +1,68 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    charlock_holmes (0.7.6)
+    diff-lcs (1.3)
+    gemojione (3.3.0)
+      json
+    github-markup (1.7.0)
+    gitlab-grit (2.8.2)
+      charlock_holmes (~> 0.6)
+      diff-lcs (~> 1.1)
+      mime-types (>= 1.16)
+      posix-spawn (~> 0.3)
+    gollum (4.1.4)
+      gemojione (~> 3.2)
+      gollum-lib (~> 4.2, >= 4.2.10)
+      kramdown (~> 1.9.0)
+      mustache (>= 0.99.5, < 1.0.0)
+      sinatra (~> 1.4, >= 1.4.4)
+      useragent (~> 0.16.2)
+    gollum-grit_adapter (1.0.1)
+      gitlab-grit (~> 2.7, >= 2.7.1)
+    gollum-lib (4.2.10)
+      gemojione (~> 3.2)
+      github-markup (~> 1.6)
+      gollum-grit_adapter (~> 1.0)
+      nokogiri (>= 1.6.1, < 2.0)
+      rouge (~> 2.1)
+      sanitize (~> 2.1.1, >= 2.1.1)
+      stringex (~> 2.6)
+      twitter-text (= 1.14.7)
+    json (2.1.0)
+    kramdown (1.9.0)
+    mime-types (3.2.2)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2018.0812)
+    mini_portile2 (2.3.0)
+    mustache (0.99.8)
+    nokogiri (1.8.4)
+      mini_portile2 (~> 2.3.0)
+    posix-spawn (0.3.13)
+    rack (1.6.11)
+    rack-protection (1.5.5)
+      rack
+    rouge (2.2.1)
+    sanitize (2.1.1)
+      nokogiri (>= 1.4.4)
+    sinatra (1.4.8)
+      rack (~> 1.5)
+      rack-protection (~> 1.4)
+      tilt (>= 1.3, < 3)
+    stringex (2.8.4)
+    tilt (2.0.8)
+    twitter-text (1.14.7)
+      unf (~> 0.1.0)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.5)
+    useragent (0.16.10)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  gollum
+
+BUNDLED WITH
+   1.16.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..4a0a4e38a61b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, bundlerEnv, ruby, makeWrapper
+, git }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "gollum";
+  # nix-shell -p bundix icu zlib
+  version = (import ./gemset.nix).gollum.version;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  env = bundlerEnv {
+    name = "${name}-gems";
+    inherit pname ruby;
+    gemdir = ./.;
+  };
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    makeWrapper ${env}/bin/gollum $out/bin/gollum \
+      --prefix PATH ":" ${stdenv.lib.makeBinPath [ git ]}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple, Git-powered wiki";
+    homepage = https://github.com/gollum/gollum;
+    license = licenses.mit;
+    maintainers = with maintainers; [ jgillich primeos ];
+    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..bb105805ca8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gollum/gemset.nix
@@ -0,0 +1,230 @@
+{
+  charlock_holmes = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
+      type = "gem";
+    };
+    version = "0.7.6";
+  };
+  diff-lcs = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
+      type = "gem";
+    };
+    version = "1.3";
+  };
+  gemojione = {
+    dependencies = ["json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ayk8r147k1s38nj18pwk76npx1p7jhi86silk800nj913pjvrhj";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  github-markup = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17g6g18gdjg63k75sfwiskjzl9i0hfcnrkcpb4fwrnb20v3jgswp";
+      type = "gem";
+    };
+    version = "1.7.0";
+  };
+  gitlab-grit = {
+    dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xgs3l81ghlc5nm75n0pz7b2cj3hpscfq5iy27c483nnjn2v5mc4";
+      type = "gem";
+    };
+    version = "2.8.2";
+  };
+  gollum = {
+    dependencies = ["gemojione" "gollum-lib" "kramdown" "mustache" "sinatra" "useragent"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ik1b0f73lcxfwfml1h84dp6br79g0z9v6x54wvl46n9d1ndrhl7";
+      type = "gem";
+    };
+    version = "4.1.4";
+  };
+  gollum-grit_adapter = {
+    dependencies = ["gitlab-grit"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fcibm63v1afc0fj5rki0mm51m7nndil4cjcjjvkh3yigfn4nr4b";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  gollum-lib = {
+    dependencies = ["gemojione" "github-markup" "gollum-grit_adapter" "nokogiri" "rouge" "sanitize" "stringex" "twitter-text"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1699wiir6f2a8yawk3qg0xn3zdc10mz783v53ri1ivfnzdrm3dvf";
+      type = "gem";
+    };
+    version = "4.2.10";
+  };
+  json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
+      type = "gem";
+    };
+    version = "2.1.0";
+  };
+  kramdown = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12sral2xli39mnr4b9m2sxdlgam4ni0a1mkxawc5311z107zj3p0";
+      type = "gem";
+    };
+    version = "1.9.0";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  mime-types-data = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
+      type = "gem";
+    };
+    version = "3.2018.0812";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  mustache = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5hplm0k06vwxwqzwn1mq5bd02yp0h3rym4zwzw26aqi7drcsl2";
+      type = "gem";
+    };
+    version = "0.99.8";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h9nml9h3m0mpvmh8jfnqvblnz5n5y3mmhgfc38avfmfzdrq9bgc";
+      type = "gem";
+    };
+    version = "1.8.4";
+  };
+  posix-spawn = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pmxmpins57qrbr31bs3bm7gidhaacmrp4md6i962gvpq4gyfcjw";
+      type = "gem";
+    };
+    version = "0.3.13";
+  };
+  rack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g9926ln2lw12lfxm4ylq1h6nl0rafl10za3xvjzc87qvnqic87f";
+      type = "gem";
+    };
+    version = "1.6.11";
+  };
+  rack-protection = {
+    dependencies = ["rack"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0my0wlw4a5l3hs79jkx2xzv7djhajgf8d28k8ai1ddlnxxb0v7ss";
+      type = "gem";
+    };
+    version = "1.5.5";
+  };
+  rouge = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  sanitize = {
+    dependencies = ["nokogiri"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12ip1d80r0dgc621qn7c32bk12xxgkkg3w6q21s1ckxivcd7r898";
+      type = "gem";
+    };
+    version = "2.1.1";
+  };
+  sinatra = {
+    dependencies = ["rack" "rack-protection" "tilt"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0byxzl7rx3ki0xd7aiv1x8mbah7hzd8f81l65nq8857kmgzj1jqq";
+      type = "gem";
+    };
+    version = "1.4.8";
+  };
+  stringex = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0c5dfrjzkskzfsdvwsviq4111rwwpbk9022nxwdidz014mky5vi1";
+      type = "gem";
+    };
+    version = "2.8.4";
+  };
+  tilt = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
+      type = "gem";
+    };
+    version = "2.0.8";
+  };
+  twitter-text = {
+    dependencies = ["unf"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
+      type = "gem";
+    };
+    version = "1.14.7";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
+      type = "gem";
+    };
+    version = "0.0.7.5";
+  };
+  useragent = {
+    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/googleearth/default.nix b/nixpkgs/pkgs/applications/misc/googleearth/default.nix
new file mode 100644
index 000000000000..96f8cb116143
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/googleearth/default.nix
@@ -0,0 +1,97 @@
+{ stdenv, fetchurl, glibc, libGLU_combined, 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_combined
+    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 {
+  name = "googleearth-${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
+  '';
+
+  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..4b5c17d8e51b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/googler/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchFromGitHub, python}:
+
+stdenv.mkDerivation rec {
+  version = "3.7.1";
+  name = "googler-${version}";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "googler";
+    rev = "v${version}";
+    sha256 = "0dcszpz85h3yjnr55ixf8mzsdv46w3g27frhgcsl5zlsgk6vl8kw";
+  };
+
+  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 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gosmore/default.nix b/nixpkgs/pkgs/applications/misc/gosmore/default.nix
new file mode 100644
index 000000000000..464e0ba53346
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gosmore/default.nix
@@ -0,0 +1,37 @@
+{ 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;
+  };
+}
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..a48890144127
--- /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..4143f6fde559
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpg-mdp/default.nix
@@ -0,0 +1,34 @@
+{ fetchurl, stdenv, ncurses, gnupg }:
+
+let version = "0.7.4";
+in stdenv.mkDerivation {
+  # mdp renamed to gpg-mdp because there is a mdp package already.
+  name = "gpg-mdp-${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..5131e0739e73
--- /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.17";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gphoto/${name}.tar.bz2";
+    sha256 = "0kslwclyyzvnxjw3gdzhlagj7l5f8lba833ipr9s0s0c4hwi0mxa";
+  };
+
+  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..7b23fca2121e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gphoto2/gphotofs.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, libtool, pkgconfig, libgphoto2, fuse, glib }:
+
+stdenv.mkDerivation rec {
+  name = "gphoto2fs-${version}";
+  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/clang-4.patch b/nixpkgs/pkgs/applications/misc/gpsbabel/clang-4.patch
new file mode 100644
index 000000000000..6bd19ae60440
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsbabel/clang-4.patch
@@ -0,0 +1,22 @@
+diff --git a/bushnell.cc b/bushnell.cc
+index 8fa844d..40707c4 100644
+--- a/bushnell.cc
++++ b/bushnell.cc
+@@ -135,7 +135,7 @@ bushnell_get_icon_from_name(QString name)
+     name = "Waypoint";
+   }
+
+-  for (t = bushnell_icons; t->icon > 0; t++) {
++  for (t = bushnell_icons; t->icon != 0; t++) {
+     if (0 == name.compare(t->icon, Qt::CaseInsensitive)) {
+       return t->symbol;
+     }
+@@ -147,7 +147,7 @@ static const char*
+ bushnell_get_name_from_symbol(signed int s)
+ {
+   icon_mapping_t* t;
+-  for (t = bushnell_icons; t->icon > 0; t++) {
++  for (t = bushnell_icons; t->icon != 0; t++) {
+     if (s == t->symbol) {
+       return t->icon;
+     }
diff --git a/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix b/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix
new file mode 100644
index 000000000000..0911fbace449
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsbabel/default.nix
@@ -0,0 +1,78 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, zlib, which, IOKit, qtbase }:
+
+stdenv.mkDerivation rec {
+  name = "gpsbabel-${version}";
+  version = "1.5.4";
+
+  src = fetchFromGitHub {
+    owner = "gpsbabel";
+    repo = "gpsbabel";
+    rev = "gpsbabel_${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "0v6wpp14zkfbarmksf9dn3wmpj1araxd7xi5xp7gpl7kafb9aiwi";
+  };
+
+  patches = [
+    ./clang-4.patch
+    (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/gpscorrelate/default.nix b/nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix
new file mode 100644
index 000000000000..e691c79d85c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpscorrelate/default.nix
@@ -0,0 +1,50 @@
+{ fetchFromGitHub, stdenv, pkgconfig, exiv2, libxml2, gtk2
+, libxslt, docbook_xsl, docbook_xml_dtd_42 }:
+
+stdenv.mkDerivation rec {
+  name = "gpscorrelate-${version}";
+  version = "1.6.1";
+
+  src = fetchFromGitHub {
+    owner = "freefoote";
+    repo = "gpscorrelate";
+    rev = version;
+    sha256 = "1z0fc75rx7dl6nnydksa578qv116j2c2xs1czfiijzxjghx8njdj";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    exiv2 libxml2 gtk2
+    libxslt docbook_xsl 
+    docbook_xml_dtd_42
+  ];
+
+  patchPhase = ''
+    sed -i "Makefile" \
+        -es",^[[:blank:]]*prefix[[:blank:]]*=.*$,prefix = $out,g"
+  '';
+
+  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://github.com/freefoote/gpscorrelate;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gpsprune/default.nix b/nixpkgs/pkgs/applications/misc/gpsprune/default.nix
new file mode 100644
index 000000000000..4f0c1864677c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpsprune/default.nix
@@ -0,0 +1,43 @@
+{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jre8 }:
+
+stdenv.mkDerivation rec {
+  name = "gpsprune-${version}";
+  version = "19.2";
+
+  src = fetchurl {
+    url = "https://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar";
+    sha256 = "1q2kpkkh75b9l1x7fkmv88s8k84gzcdnrg5sgf8ih0zrp49lawg9";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre8 ];
+
+  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 ${jre8}/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..1810d6d5c476
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpx-viewer/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, shared-mime-info, desktop-file-utils, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "gpx-viewer-${version}";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/gpx-viewer/trunk/${version}/+download/${name}.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" ];
+
+  nativeBuildInputs = [
+    intltool pkgconfig
+    shared-mime-info # For update-mime-database
+    desktop-file-utils # For update-desktop-database
+    wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
+  ];
+  buildInputs = with gnome3; [ gdl libchamplain defaultIconTheme ];
+
+  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..9fef93819492
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpx/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  name = "gpx-${version}";
+  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/gpxsee/default.nix b/nixpkgs/pkgs/applications/misc/gpxsee/default.nix
new file mode 100644
index 000000000000..50a81890789a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gpxsee/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, qmake, qttools }:
+
+stdenv.mkDerivation rec {
+  name = "gpxsee-${version}";
+  version = "6.3";
+
+  src = fetchFromGitHub {
+    owner = "tumic0";
+    repo = "GPXSee";
+    rev = version;
+    sha256 = "0kbnmcis04kjqkd0msfjd8rdmdf23c71dpzx9wcpf2yadc9rv4c9";
+  };
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [ qttools ];
+
+  preConfigure = ''
+    substituteInPlace src/config.h --replace /usr/share/gpxsee $out/share/gpxsee
+    lrelease lang/*.ts
+  '';
+
+  installPhase = ''
+    install -Dm755 GPXSee $out/bin/GPXSee
+    mkdir -p $out/share/gpxsee
+    cp -r pkg/csv $out/share/gpxsee/
+    cp -r pkg/maps $out/share/gpxsee/
+    mkdir -p $out/share/gpxsee/translations
+    cp -r lang/*.qm $out/share/gpxsee/translations
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gpxsee.org/;
+    description = "GPX viewer and analyzer";
+    longDescription = ''
+      GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX,
+      TCX, KML, FIT, IGC and NMEA files.
+    '';
+    license = licenses.gpl3;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gqrx/default.nix b/nixpkgs/pkgs/applications/misc/gqrx/default.nix
new file mode 100644
index 000000000000..f7c7ca5472e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gqrx/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, cmake, qtbase, qtsvg, gnuradio, boost, gnuradio-osmosdr
+# drivers (optional):
+, rtl-sdr, hackrf
+, pulseaudioSupport ? true, libpulseaudio
+}:
+
+assert pulseaudioSupport -> libpulseaudio != null;
+
+stdenv.mkDerivation rec {
+  name = "gqrx-${version}";
+  version = "2.11.5";
+
+  src = fetchFromGitHub {
+    owner = "csete";
+    repo = "gqrx";
+    rev = "v${version}";
+    sha256 = "0q9i0dhd6blagxzk84pzqjq8n4ym3jc1mkkhygg8yncr4vq2saaf";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [
+    qtbase qtsvg gnuradio boost gnuradio-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 = http://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 the-kenny fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gramps/default.nix b/nixpkgs/pkgs/applications/misc/gramps/default.nix
new file mode 100644
index 000000000000..920bec56a9bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gramps/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3,
+  pango, gobject-introspection, wrapGAppsHook,
+# Optional packages:
+ enableOSM ? true, osm-gps-map,
+ enableGraphviz ? true, graphviz,
+ enableGhostscript ? true, ghostscript
+ }:
+
+let
+  inherit (pythonPackages) python buildPythonApplication;
+in buildPythonApplication rec {
+  version = "5.0.0";
+  name = "gramps-${version}";
+
+  nativeBuildInputs = [ wrapGAppsHook ];
+  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 = "056l4ihmd3gdsiv6wwv4ckgh8bfzd5nii6z4afsdn2nmjbj4hw9m";
+  };
+
+  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")/${name}.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..00421a2e0334
--- /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 rec {
+  name = "green-pdfviewer-${version}";
+  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..a35079e91517
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gremlin-console/default.nix
@@ -0,0 +1,29 @@
+{ pkgs, fetchzip, stdenv, makeWrapper, openjdk }:
+
+stdenv.mkDerivation rec {
+  name = "gremlin-console-${version}";
+  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..cb407fca66cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/grip/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, gtk2, glib, pkgconfig, libgnome, libgnomeui, vte
+, curl, cdparanoia, libid3tag, ncurses, libtool }:
+
+stdenv.mkDerivation rec {
+  name = "grip-3.3.1";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/grip/${name}.tar.gz";
+    sha256 = "1zb6zpq7qmn6bflbgfwisyg3vrjr23yi1c1kqvwndl1f0shr8qyl";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 glib libgnome libgnomeui vte curl cdparanoia
+    libid3tag ncurses libtool ];
+
+  hardeningDisable = [ "format" ];
+
+  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/gsimplecal/default.nix b/nixpkgs/pkgs/applications/misc/gsimplecal/default.nix
new file mode 100644
index 000000000000..7f3b3a8d6dc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gsimplecal/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, automake, autoconf, pkgconfig, gtk3 }:
+
+stdenv.mkDerivation rec {
+  name = "gsimplecal-${version}";
+  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..cf409b4c185f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gtk2fontsel/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, pkgconfig, gtk }:
+
+stdenv.mkDerivation rec {
+  version = "0.1";
+  name = "gtk2fontsel-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/gtk2fontsel/${name}.tar.gz";
+    sha256 = "0s2sj19n8ys92q9832hkn36ld91bb4qavicc6nygkry6qdpkkmjw";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ stdenv gtk ];
+
+  preferLocalBuild = true;
+
+  meta = with stdenv.lib; {
+    description = "A font selection program for X11 using the GTK2 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..0541468345e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/guake/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, python3, gettext, gobject-introspection, wrapGAppsHook, glibcLocales
+, gtk3, keybinder3, libnotify, libutempter, vte }:
+
+let
+  version = "3.4.0";
+in python3.pkgs.buildPythonApplication rec {
+  name = "guake-${version}";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "Guake";
+    repo = "guake";
+    rev = version;
+    sha256 = "1j38z968ha8ij6wrgbwvr8ad930nvhybm9g7pf4s4zv6d3vln0vm";
+  };
+
+  nativeBuildInputs = [ gettext gobject-introspection wrapGAppsHook python3.pkgs.pip glibcLocales ];
+
+  buildInputs = [ gtk3 keybinder3 libnotify python3 vte ];
+
+  propagatedBuildInputs = with python3.pkgs; [ dbus-python pbr pycairo pygobject3 ];
+
+  LC_ALL = "en_US.UTF-8"; # fixes weird encoding error, see https://github.com/NixOS/nixpkgs/pull/38642#issuecomment-379727699
+
+  PBR_VERSION = version; # pbr needs either .git directory, sdist, or env var
+
+  postPatch = ''
+    # unnecessary /usr/bin/env in Makefile
+    # https://github.com/Guake/guake/pull/1285
+    substituteInPlace "Makefile" --replace "/usr/bin/env python3" "python3"
+  '';
+
+  makeFlags = [
+    "prefix=$(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;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.msteen ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/gummi/default.nix b/nixpkgs/pkgs/applications/misc/gummi/default.nix
new file mode 100644
index 000000000000..6c84f3cbd326
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gummi/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, pkgs, makeWrapper
+, glib, gnome2, gnome3, gtk2-x11, gtkspell2, poppler
+, pkgconfig, intltool, autoreconfHook, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.6.6";
+  name = "gummi-${version}";
+
+  src = pkgs.fetchFromGitHub {
+    owner = "alexandervdm";
+    repo = "gummi";
+    rev = "${version}";
+    sha256 = "1vw8rhv8qj82l6l22kpysgm9mxilnki2kjmvxsnajbqcagr6s7cn";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig intltool autoreconfHook makeWrapper wrapGAppsHook
+  ];
+  buildInputs = [
+    glib gnome2.gtksourceview gnome2.pango gtk2-x11 gtkspell2 poppler
+    gnome3.defaultIconTheme
+  ];
+
+  preConfigure = ''
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${pkgs.gnome2.gtksourceview}/share")
+  '';
+
+  postInstall = ''
+    install -Dpm644 COPYING $out/share/licenses/$name/COPYING
+  '';
+
+  meta = {
+    homepage = http://gummi.midnightcoding.org/;
+    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..f94f8f5dd707
--- /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..8401386ead49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gxmessage/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gnome3, intltool, pkgconfig, texinfo, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  name = "gxmessage-${version}";
+  version = "3.4.3";
+
+  src = fetchurl {
+    url = "http://homepages.ihug.co.nz/~trmusson/stuff/${name}.tar.gz";
+    sha256 = "db4e1655fc58f31e5770a17dfca4e6c89028ad8b2c8e043febc87a0beedeef05";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ intltool gnome3.gtk texinfo hicolor-icon-theme ];
+
+  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..7d19a9cb1108
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/gxneur/default.nix
@@ -0,0 +1,24 @@
+{ 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";
+  };
+
+  NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
+
+  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/hackrf/default.nix b/nixpkgs/pkgs/applications/misc/hackrf/default.nix
new file mode 100644
index 000000000000..81a66bf503c0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hackrf/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, libusb, fftwSinglePrec }:
+
+stdenv.mkDerivation rec {
+  name = "hackrf-${version}";
+  version = "2018.01.1";
+
+  src = fetchFromGitHub {
+    owner = "mossmann";
+    repo = "hackrf";
+    rev = "v${version}";
+    sha256 = "0idh983xh6gndk9kdgx5nzz76x3mxb42b02c5xvdqahadsfx3b9w";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake libusb 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 the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hamster-time-tracker/default.nix b/nixpkgs/pkgs/applications/misc/hamster-time-tracker/default.nix
new file mode 100644
index 000000000000..453d95694eb0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hamster-time-tracker/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchzip, pythonPackages, docbook2x, libxslt, gnome-doc-utils
+, intltool, dbus-glib, gnome_python
+, hicolor-icon-theme
+, wafHook
+}:
+
+# TODO: Add optional dependency 'wnck', for "workspace tracking" support. Fixes
+# this message:
+#
+#   WARNING:root:Could not import wnck - workspace tracking will be disabled
+
+pythonPackages.buildPythonApplication rec {
+  name = "hamster-time-tracker-1.04";
+
+  src = fetchzip {
+    name = "${name}-src";
+    url = "https://github.com/projecthamster/hamster/archive/${name}.tar.gz";
+    sha256 = "1a85rcg561792kdyv744cgzw7mmpmgv6d6li1sijfdpqa1ninf8g";
+  };
+
+  nativeBuildInputs = [ wafHook ];
+  buildInputs = [
+    docbook2x libxslt gnome-doc-utils intltool dbus-glib hicolor-icon-theme
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [ pygobject2 pygtk pyxdg gnome_python dbus-python ];
+
+  postFixup = ''
+    wrapPythonProgramsIn $out/lib/hamster-time-tracker "$out $pythonPath"
+  '';
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Time tracking application";
+    homepage = https://projecthamster.wordpress.com/;
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
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..1fa016627d4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/haxor-news/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, python }:
+
+with python.pkgs;
+
+buildPythonApplication rec {
+  pname = "haxor-news";
+  version = "0.4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5b9af8338a0f8b95a8133b66ef106553823813ac171c0aefa3f3f2dbeb4d7f88";
+  };
+
+  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; [ ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/hdate/default.nix b/nixpkgs/pkgs/applications/misc/hdate/default.nix
new file mode 100644
index 000000000000..e2f5f653d47c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hdate/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "1.6.02";
+  name = "hdate-${version}";
+  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/hello-unfree/default.nix b/nixpkgs/pkgs/applications/misc/hello-unfree/default.nix
new file mode 100644
index 000000000000..ef378b2c5ffb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hello-unfree/default.nix
@@ -0,0 +1,23 @@
+{ stdenv }:
+
+stdenv.mkDerivation rec {
+  name = "example-unfree-package-${version}";
+  version = "1.0";
+
+  phases = [ "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cat > $out/bin/hello-unfree << EOF
+    #!/bin/sh
+    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..c0a39d2d91d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hello/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "hello-${version}";
+  version = "2.10";
+
+  src = fetchurl {
+    url = "mirror://gnu/hello/${name}.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/;
+    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..0431f35057be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hivemind/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "hivemind-${version}";
+  version = "1.0.4";
+  goPackagePath = "github.com/DarthSim/hivemind";
+
+  src = fetchFromGitHub {
+    owner = "DarthSim";
+    repo = "hivemind";
+    rev = "v${version}";
+    sha256 = "1z2izvyf0j3gi0cas5v22kkmkls03sg67182k8v3p6kwhzn0jw67";
+  };
+
+  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..607dff293189
--- /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 rec {
+  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..500f1df36a0c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/houdini/runtime.nix
@@ -0,0 +1,86 @@
+{ stdenv, requireFile, zlib, libpng, libSM, libICE, fontconfig, xorg, libGLU, libGL, alsaLib, dbus, xkeyboardconfig, bc }:
+
+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
+    ])
+  ];
+  license_dir = "~/.config/houdini";
+in
+stdenv.mkDerivation rec {
+  version = "17.0.352";
+  name = "houdini-runtime-${version}";
+  src = requireFile rec {
+    name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz";
+    sha256 = "0cl5fkgaplb0cvv7mli06ffc9j4ngpy8hl5zqabj3d645gcgafjg";
+    message = ''
+      This nix expression requires that ${name} is already part of the store.
+      Download it from https://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://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..ba23078bba93
--- /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..6b0926db0476
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hr/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "hr-${version}";
+  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 = [ ];
+    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..026cf9ecc14a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hstr/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, readline, ncurses }:
+
+stdenv.mkDerivation rec {
+  name    = "hstr-${version}";
+  version = "1.25";
+
+  src = fetchurl {
+    url = "https://github.com/dvorka/hstr/releases/download/${version}/hh-${version}-src.tgz";
+    sha256 = "10njj0a3s5czv497wk3whka3gxr7vmhabs12vaw7kgb07h4ssnhg";
+  };
+
+  buildInputs = [ readline ncurses ];
+
+  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 = with stdenv.lib.maintainers; [ ];
+    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..2b6e58a6ab36
--- /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
+
+  version = "1.3.1-ff75f26";
+
+  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 {
+  name = "hubstaff-${version}";
+
+  src = fetchurl {
+    url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/${version}/Hubstaff-${version}.sh";
+    sha256 = "0jm5l34r6lkfkg8vsdfqbr0axngxznhagwcl9y184lnyji91fmdl";
+  };
+
+  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 = [ maintainers.michalrus ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hugo/default.nix b/nixpkgs/pkgs/applications/misc/hugo/default.nix
new file mode 100644
index 000000000000..22badfc8cdd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hugo/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "hugo-${version}";
+  version = "0.50";
+
+  goPackagePath = "github.com/gohugoio/hugo";
+
+  src = fetchFromGitHub {
+    owner  = "gohugoio";
+    repo   = "hugo";
+    rev    = "v${version}";
+    sha256 = "1shrw7pxwrz9g5x9bq6k5qvhn3fqmwznadpw7i07msh97p8b3dyn";
+  };
+
+  goDeps = ./deps.nix;
+
+  buildFlags = "-tags extended";
+
+  postInstall = ''
+    rm $bin/bin/generate
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A fast and modern static website engine.";
+    homepage = https://gohugo.io;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ schneefux ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/hugo/deps.nix b/nixpkgs/pkgs/applications/misc/hugo/deps.nix
new file mode 100644
index 000000000000..d5c24d69048a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/hugo/deps.nix
@@ -0,0 +1,722 @@
+[
+
+  {
+    goPackagePath = "github.com/BurntSushi/locker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/locker";
+      rev = "a6e239ea1c69";
+      sha256 = "1xak4aync4klswq5217qvw191asgla51jr42y94vp109lirm5dzg";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "a368813c5e64";
+      sha256 = "1sjxs2lwc8jpln80s4rlzp7nprbcljhy5mz4rf9995gq93wqnym5";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/PuerkitoBio/purell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/purell";
+      rev = "v1.1.0";
+      sha256 = "0vsxyn1fbm7g873b8kf3hcsgqgncb5nmfq3zfsc35a9yhzarka91";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/PuerkitoBio/urlesc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/urlesc";
+      rev = "de5bf2ad4578";
+      sha256 = "0n0srpqwbaan1wrhh2b7ysz543pjs1xw2rghvqyffg9l0g8kzgcw";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/alecthomas/assert";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/assert";
+      rev = "405dbfeb8e38";
+      sha256 = "1l567pi17k593nrd1qlbmiq8z9jy3qs60px2a16fdpzjsizwqx8l";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/alecthomas/chroma";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/chroma";
+      rev = "v0.5.0";
+      sha256 = "150jv4vhsdi1gj3liwkgicdrwnzgv5qkq2fwznlnzf64vmfb0b9f";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/alecthomas/colour";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/colour";
+      rev = "60882d9e2721";
+      sha256 = "0iq566534gbzkd16ixg7fk298wd766821vvs80838yifx9yml5vs";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/alecthomas/repr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/repr";
+      rev = "117648cd9897";
+      sha256 = "05v1rgzdqc8razf702laagrvhvx68xd9yxxmzd3dyz0d6425pdrp";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/bep/debounce";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bep/debounce";
+      rev = "v1.1.0";
+      sha256 = "1sh4zv0hv7f454mhzpl2mbv7ar5rm00wyy5qr78x1h84bgph87wy";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/bep/gitmap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bep/gitmap";
+      rev = "v1.0.0";
+      sha256 = "0zqdl5h4ayi2gi5aqf35f1sjszhbcriksm2bf84fkrg7ngr48jn6";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/bep/go-tocss";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bep/go-tocss";
+      rev = "v0.5.0";
+      sha256 = "12q7h6nydklq4kg65kcgd85209rx7zf64ba6nf3k7y16knj4233q";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/chaseadamsio/goorgeous";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chaseadamsio/goorgeous";
+      rev = "v1.1.0";
+      sha256 = "07qdqi46klizq3wigxqbiksnlgbrdc8hvmizgzg0aas5iqy88dcb";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "v1.0.8";
+      sha256 = "1w22dfdamsq63b5rvalh9k2y7rbwfkkjs7vm9vd4a13h2ql70lg2";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/danwakefield/fnmatch";
+    fetch = {
+      type = "git";
+      url = "https://github.com/danwakefield/fnmatch";
+      rev = "cbb64ac3d964";
+      sha256 = "0cbf511ppsa6hf59mdl7nbyn2b2n71y0bpkzbmfkdqjhanqh1lqz";
+    };
+  }
+
+  {
+    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/disintegration/imaging";
+    fetch = {
+      type = "git";
+      url = "https://github.com/disintegration/imaging";
+      rev = "v1.5.0";
+      sha256 = "1laxccmzi7q51zxn81ringmdwp8iaipivrl375yc3gq56d70sp0r";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/dlclark/regexp2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dlclark/regexp2";
+      rev = "v1.1.6";
+      sha256 = "144s81ndviwhyy20ipxvvfvap8phv5p762glxrz6aqxprkxfarj5";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/eknkc/amber";
+    fetch = {
+      type = "git";
+      url = "https://github.com/eknkc/amber";
+      rev = "cdade1c07385";
+      sha256 = "152w97yckwncgw7lwjvgd8d00wy6y0nxzlvx72kl7nqqxs9vhxd9";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/fortytw2/leaktest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fortytw2/leaktest";
+      rev = "v1.2.0";
+      sha256 = "1lf9l6zgzjbcc7hmcjhhg3blx0y8icyxvjmjqqwfbwdk502803ra";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/gobwas/glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/glob";
+      rev = "v0.2.3";
+      sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "v1.4.0";
+      sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/hashicorp/go-immutable-radix";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-immutable-radix";
+      rev = "v1.0.0";
+      sha256 = "1v3nmsnk1s8bzpclrhirz7iq0g5xxbw9q5gvrg9ss6w9crs72qr6";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/hashicorp/go-uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-uuid";
+      rev = "v1.0.0";
+      sha256 = "1jflywlani7583qm4ysph40hsgx3n66n5zr2k84i057fmwa1ypfy";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev = "v0.5.0";
+      sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f";
+    };
+  }
+
+  {
+    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/jdkato/prose";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jdkato/prose";
+      rev = "v1.1.0";
+      sha256 = "1gjqgrpc7wbqvnhgwyfhxng24qvx37qjy0x2mbikiw1vaygxqsmy";
+    };
+  }
+
+  {
+    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/kyokomi/emoji";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kyokomi/emoji";
+      rev = "v1.5.1";
+      sha256 = "005rxyxlqcd2sfjn686xb52l11wn2w0g5jv042ka6pnsx24r812a";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/magefile/mage";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magefile/mage";
+      rev = "v1.4.0";
+      sha256 = "177hzmmzhk7bcm3jj2cj6d5l9h5ql3cikvndhk4agkslrhwr3xka";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "v1.8.0";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/markbates/inflect";
+    fetch = {
+      type = "git";
+      url = "https://github.com/markbates/inflect";
+      rev = "a12c3aec81a6";
+      sha256 = "0mawr6z9nav4f5j0nmjdxg9lbfhr7wz8zi34g7b6wndmzyf8jbsd";
+    };
+  }
+
+  {
+    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/miekg/mmark";
+    fetch = {
+      type = "git";
+      url = "https://github.com/miekg/mmark";
+      rev = "v1.3.6";
+      sha256 = "0q2zrwa2vwk7a0zhmi000zpqrc01zssrj9c5n3573rg68fksg77m";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mitchellh/hashstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/hashstructure";
+      rev = "v1.0.0";
+      sha256 = "0zgl5c03ip2yzkb9b7fq9ml08i7j8prgd46ha1fcg8c6r7k9xl3i";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "v1.0.0";
+      sha256 = "0f06q4fpzg0c370cvmpsl0iq2apl5nkbz5cd3nba5x5ysmshv1lm";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/muesli/smartcrop";
+    fetch = {
+      type = "git";
+      url = "https://github.com/muesli/smartcrop";
+      rev = "f6ebaa786a12";
+      sha256 = "0xbv5wbn0z36nkw9ay3ly6z23lpsrs0khryl1w54fz85lvwh66gp";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/nfnt/resize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nfnt/resize";
+      rev = "83c6a9932646";
+      sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/nicksnyder/go-i18n";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nicksnyder/go-i18n";
+      rev = "v1.10.0";
+      sha256 = "1nlvq85c232z5yjs86pxpmkv7hk6gb5pa6j4hhzgdz85adk2ma04";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/olekukonko/tablewriter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/olekukonko/tablewriter";
+      rev = "d4647c9c7a84";
+      sha256 = "1274k5r9ardh1f6gsmadxmdds7zy8rkr55fb9swvnm0vazr3y01l";
+    };
+  }
+
+  {
+    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/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev = "46c73eb196ba";
+      sha256 = "01z1jsdkac09cw95lqq4pahkw9xnini2mb956lvb772bby2x3dmj";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/sanity-io/litter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sanity-io/litter";
+      rev = "v1.1.0";
+      sha256 = "09nywwxxd6rmhxc7rsvs96ynjszmnvmhwr7dvh1n35hb6h9y7s2r";
+    };
+  }
+
+  {
+    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 = "86672fcb3f95";
+      sha256 = "142m507s9971cl8qdmbcw7sqxnkgi3xqd8wzvfq15p0w7w8i4a3h";
+    };
+  }
+
+  {
+    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.3";
+      sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/fsync";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/fsync";
+      rev = "12a01e648f05";
+      sha256 = "1vvbgxbbsc4mvi1axgqgn9pzjz1p495dsmwpc7mr8qxh8f6s0nhv";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "94f6ae3ed3bc";
+      sha256 = "1ywmkwci5zyd88ijym6f30fj5c0k2yayxarkmnazf5ybljv50q7b";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/nitro";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/nitro";
+      rev = "24d7ef30a12d";
+      sha256 = "143sbpx0jdgf8f8ayv51x6l4jg6cnv6nps6n60qxhx4vd90s6mib";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.2";
+      sha256 = "005598piihl3l83a71ahj10cpq9pbhjck4xishx1b4dzc02r9xr2";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "v1.2.0";
+      sha256 = "0klv7dyllvv9jkyspy4ww5nrz24ngb3adlh884cbdjn7562bhi47";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "f2347ac6c9c9";
+      sha256 = "0ns8zc2n8gpcsd1fdaqbq7a8d939lnaxraqx5nr2fi2zdxqyh7hm";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/tdewolff/minify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tdewolff/minify";
+      rev = "v2.3.6";
+      sha256 = "0p4v4ab49lm5y438k5aks06fpiagbjw2j2x7i8jaa273mkgicrbb";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/tdewolff/parse";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tdewolff/parse";
+      rev = "fced451e0bed";
+      sha256 = "1n6wcapk8xbck2zjxd4l5cgfn1v12rr7znrdpd5y2xp1nc3739c3";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/tdewolff/test";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tdewolff/test";
+      rev = "v1.0.0";
+      sha256 = "10vyp4bhanzg3yl9k8zqfdrxpsmx8yc53xv4lqxfymd7jjyqgssj";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/wellington/go-libsass";
+    fetch = {
+      type = "git";
+      url = "https://github.com/wellington/go-libsass";
+      rev = "615eaa47ef79";
+      sha256 = "0imjiskn4vq7nml5jwb1scgl61jg53cfpkjnb9rsc6m8gsd8s16s";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/yosssi/ace";
+    fetch = {
+      type = "git";
+      url = "https://github.com/yosssi/ace";
+      rev = "v0.0.5";
+      sha256 = "1kbvbc56grrpnl65grygd23gyn3nkkhxdg8awhzkjmd0cvki8w1f";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/image";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/image";
+      rev = "c73c2afc3b81";
+      sha256 = "1kkafy29vz5xf6r29ghbvvbwrgjxwxvzk6dsa2qhyp1ddk6l2vkz";
+    };
+  }
+
+  {
+    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 = "d0be0721c37e";
+      sha256 = "081wyvfnlf842dqg03raxfz6lldlxpmyh1prix9lmrrm65arxb12";
+    };
+  }
+
+  {
+    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 = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.1";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/hyper/default.nix b/nixpkgs/pkgs/applications/misc/hyper/default.nix
new file mode 100644
index 000000000000..5e1626e12c57
--- /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.0.0";
+  name = "hyper-${version}";
+  src = fetchurl {
+    url = "https://github.com/zeit/hyper/releases/download/${version}/hyper_${version}_amd64.deb";
+    sha256 = "04241kjy65pnp5q9z901910rmvcx18x0qaqfl31i0l4c2xj83ws0";
+  };
+  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..c0c1faef09d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/icesl/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, fetchzip, freeglut, libXmu, libXi, libX11, libICE, libGLU_combined, libSM, libXext, dialog, makeWrapper }:
+let
+  lpath = stdenv.lib.makeLibraryPath [ libXmu libXi libX11 freeglut libICE libGLU_combined libSM libXext ];
+in
+stdenv.mkDerivation rec {
+  name = "iceSL-${version}";
+  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..6e4fc2065885
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ikiwiki/default.nix
@@ -0,0 +1,91 @@
+{ stdenv, fetchurl, perl, gettext, makeWrapper, PerlMagick, YAML
+, TextMarkdown, URI, HTMLParser, HTMLScrubber, HTMLTemplate, TimeDate
+, CGISession, CGIFormBuilder, DBFile, LocaleGettext, RpcXML, XMLSimple
+, YAMLLibYAML, which, HTMLTree, AuthenPassphrase, NetOpenIDConsumer
+, LWPxParanoidAgent, CryptSSLeay
+, gitSupport ? false, git ? null
+, docutilsSupport ? false, python ? null, docutils ? null
+, monotoneSupport ? false, monotone ? null
+, bazaarSupport ? false, bazaar ? null
+, cvsSupport ? false, cvs ? null, cvsps ? null, Filechdir ? 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 -> (bazaar != null);
+assert cvsSupport -> (cvs != null && cvsps != null && Filechdir != null);
+assert subversionSupport -> (subversion != null);
+assert mercurialSupport -> (mercurial != null);
+
+let
+  name = "ikiwiki";
+  version = "3.20170111";
+
+  lib = stdenv.lib;
+in
+stdenv.mkDerivation {
+  name = "${name}-${version}";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/i/ikiwiki/${name}_${version}.tar.xz";
+    sha256 = "00d7yzv426fvqbhvzyafddv7fa6b4j2647b0wi371wd5yjj9j3sz";
+  };
+
+  buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
+    TimeDate gettext makeWrapper DBFile CGISession CGIFormBuilder LocaleGettext
+    RpcXML XMLSimple PerlMagick YAML YAMLLibYAML which HTMLTree AuthenPassphrase
+    NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay ]
+    ++ lib.optionals docutilsSupport [python docutils]
+    ++ lib.optionals gitSupport [git]
+    ++ lib.optionals monotoneSupport [monotone]
+    ++ lib.optionals bazaarSupport [bazaar]
+    ++ lib.optionals cvsSupport [cvs cvsps Filechdir]
+    ++ lib.optionals subversionSupport [subversion]
+    ++ lib.optionals mercurialSupport [mercurial];
+
+  patchPhase = ''
+    sed -i s@/usr/bin/perl@${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 : ${perl}/bin:$out/bin \
+      ${lib.optionalString gitSupport ''--prefix PATH : ${git}/bin \''}
+      ${lib.optionalString monotoneSupport ''--prefix PATH : ${monotone}/bin \''}
+      ${lib.optionalString bazaarSupport ''--prefix PATH : ${bazaar}/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 ];
+    broken = true; # https://ikiwiki.info/bugs/imagemagick_6.9.8_test_suite_failure/
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/img2pdf/default.nix b/nixpkgs/pkgs/applications/misc/img2pdf/default.nix
new file mode 100644
index 000000000000..c718d6c7bfd5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/img2pdf/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, python3Packages }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "img2pdf";
+  version = "0.3.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07wxgn5khmy94zqqv8l84q9b3yy84ddvwr2f7j4pjycrj2gg7si8";
+  };
+
+  doCheck = false; # needs pdfrw
+
+  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/inspectrum/default.nix b/nixpkgs/pkgs/applications/misc/inspectrum/default.nix
new file mode 100644
index 000000000000..e2232c4b2ec8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/inspectrum/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, fetchFromGitHub
+, pkgconfig
+, cmake
+, boost
+, fftwFloat
+, qt5
+, gnuradio
+, liquid-dsp
+}:
+
+stdenv.mkDerivation rec {
+  name = "inspectrum-unstable-2017-05-31";
+
+  src = fetchFromGitHub {
+    owner = "miek";
+    repo = "inspectrum";
+    rev = "a89d1337efb31673ccb6a6681bb89c21894c76f7";
+    sha256 = "1fvnr8gca25i6s9mg9b2hyqs0zzr4jicw13mimc9dhrgxklrr1yv";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    cmake
+    qt5.qtbase
+    fftwFloat
+    boost
+    gnuradio
+    liquid-dsp
+  ];
+
+  meta = with stdenv.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/misc/ipmicfg/default.nix b/nixpkgs/pkgs/applications/misc/ipmicfg/default.nix
new file mode 100644
index 000000000000..d9bccee889ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ipmicfg/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  name = "ipmicfg-${version}";
+  version = "1.29.0";
+  buildVersion = "181029";
+
+  src = fetchzip {
+    url = "ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_${version}_build.${buildVersion}.zip";
+    sha256 = "18nljs4xg6hffahyd0d5zlg1jhbwl7zr9ym925bkzwcnrkgqs2v3";
+    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..b5fa9143ddbb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ipmiview/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, patchelf, makeWrapper, xorg, gcc, gcc-unwrapped }:
+
+stdenv.mkDerivation rec {
+   name = "IPMIView-${version}";
+   version = "2.14.0";
+   buildVersion = "180213";
+
+   src = fetchurl {
+    url = "ftp://ftp.supermicro.com/utility/IPMIView/Linux/IPMIView_${version}_build.${buildVersion}_bundleJRE_Linux_x64.tar.gz";
+    sha256 = "1wp22wm7smlsb25x0cck4p660cycfczxj381930crd1qrf68mw4h";
+  };
+
+   nativeBuildInputs = [ patchelf makeWrapper ];
+
+   buildPhase = with xorg; ''
+     patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ libX11 libXext libXrender libXtst libXi ]}" ./jre/lib/amd64/xawt/libmawt.so
+     patchelf --set-rpath "${gcc-unwrapped.lib}/lib" ./libiKVM64.so
+     patchelf --set-rpath "${stdenv.lib.makeLibraryPath [ libXcursor libX11 libXext libXrender libXtst libXi ]}" --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" ./jre/bin/javaws
+     patchelf --set-rpath "${gcc.cc}/lib:$out/jre/lib/amd64/jli" --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" ./jre/bin/java
+   '';
+
+   installPhase = ''
+     mkdir -p $out/bin
+     cp -R . $out/
+     makeWrapper $out/jre/bin/java $out/bin/IPMIView \
+       --prefix PATH : "$out/jre/bin" \
+       --add-flags "-jar $out/IPMIView20.jar"
+   '';
+
+   meta = with stdenv.lib; {
+    license = licenses.unfree;
+   };
+  }
diff --git a/nixpkgs/pkgs/applications/misc/iterm2/default.nix b/nixpkgs/pkgs/applications/misc/iterm2/default.nix
new file mode 100644
index 000000000000..fa2ac38d383b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/iterm2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "iterm2-${version}";
+  version = "3.0.14";
+
+  src = fetchFromGitHub {
+    owner = "gnachman";
+    repo = "iTerm2";
+    rev = "v${version}";
+    sha256 = "03m0ja11w9910z96yi8fzq3436y8xl14q031rdb2w3sapjd54qrj";
+  };
+
+  patches = [ ./disable_updates.patch ];
+  postPatch = ''
+    sed -i -e 's/CODE_SIGN_IDENTITY = "Developer ID Application"/CODE_SIGN_IDENTITY = ""/g' ./iTerm2.xcodeproj/project.pbxproj
+  '';
+  makeFlagsArray = ["Deployment"];
+  installPhase = ''
+    mkdir -p "$out/Applications"
+    mv "build/Deployment/iTerm2.app" "$out/Applications/iTerm.app"
+  '';
+
+  meta = {
+    description = "A replacement for Terminal and the successor to iTerm";
+    homepage = https://www.iterm2.com/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.darwin;
+  };
+}
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..f24951624c58
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/j4-dmenu-desktop/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, dmenu }:
+
+stdenv.mkDerivation rec {
+  name    = "j4-dmenu-desktop-${version}";
+  version = "2.16";
+
+  src = fetchFromGitHub {
+    owner  = "enkore";
+    repo   = "j4-dmenu-desktop";
+    rev    = "r${version}";
+    sha256 = "0714cri8bwpimmiirhzrkbri4xi24k0za6i1aw94d3fnblk2dg9f";
+  };
+
+  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 = [ "-DNO_TESTS:BOOL=ON" ];
+
+  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   = with 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..ed8573b88507
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jbidwatcher/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, java }:
+
+stdenv.mkDerivation rec {
+  pname = "jbidwatcher";
+  version = "2.5.6";
+
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://www.jbidwatcher.com/download/JBidwatcher-${version}.jar";
+    sha256 = "1cw59wh72w1zzibs8x64dma3jc4hry64wjksqs52nc3vpnf0fzfr";
+  };
+
+  buildInputs = [ java ];
+
+  jarfile = "$out/share/java/${pname}/JBidwatcher.jar";
+
+  unpackPhase = "true";
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    echo > "$out/bin/${pname}" "#!/bin/sh"
+    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..2d3446a81134
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile
@@ -0,0 +1,10 @@
+source "https://rubygems.org"
+gem "jekyll"
+# jekyll alone might be enough for most use-cases
+gem "rouge"
+gem "activesupport", "~> 4.2"
+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..6841bc14c384
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/Gemfile.lock
@@ -0,0 +1,99 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (4.2.10)
+      i18n (~> 0.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.1)
+    em-websocket (0.5.1)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0.6.0)
+    eventmachine (1.2.7)
+    ffi (1.9.25)
+    forwardable-extended (2.6.0)
+    gemoji (3.0.0)
+    html-pipeline (2.8.4)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    http_parser.rb (0.6.0)
+    i18n (0.9.5)
+      concurrent-ruby (~> 1.0)
+    jekyll (3.8.5)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 0.7)
+      jekyll-sass-converter (~> 1.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 1.14)
+      liquid (~> 4.0)
+      mercenary (~> 0.3.3)
+      pathutil (~> 0.9)
+      rouge (>= 1.7, < 4)
+      safe_yaml (~> 1.0)
+    jekyll-avatar (0.6.0)
+      jekyll (~> 3.0)
+    jekyll-mentions (1.4.1)
+      html-pipeline (~> 2.3)
+      jekyll (~> 3.0)
+    jekyll-sass-converter (1.5.2)
+      sass (~> 3.4)
+    jekyll-seo-tag (2.5.0)
+      jekyll (~> 3.3)
+    jekyll-sitemap (1.2.0)
+      jekyll (~> 3.3)
+    jekyll-watch (2.1.2)
+      listen (~> 3.0)
+    jemoji (0.10.1)
+      gemoji (~> 3.0)
+      html-pipeline (~> 2.2)
+      jekyll (~> 3.0)
+    kramdown (1.17.0)
+    liquid (4.0.1)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    mercenary (0.3.6)
+    mini_portile2 (2.3.0)
+    minitest (5.11.3)
+    nokogiri (1.8.5)
+      mini_portile2 (~> 2.3.0)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (3.0.3)
+    rb-fsevent (0.10.3)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    rouge (3.3.0)
+    ruby_dep (1.5.0)
+    safe_yaml (1.0.4)
+    sass (3.6.0)
+      sass-listen (~> 4.0.0)
+    sass-listen (4.0.0)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+    thread_safe (0.3.6)
+    tzinfo (1.2.5)
+      thread_safe (~> 0.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  activesupport (~> 4.2)
+  jekyll
+  jekyll-avatar
+  jekyll-mentions
+  jekyll-seo-tag
+  jekyll-sitemap
+  jemoji
+  rouge
+
+BUNDLED WITH
+   1.16.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..d680f9255905
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/basic/gemset.nix
@@ -0,0 +1,326 @@
+{
+  activesupport = {
+    dependencies = ["i18n" "minitest" "thread_safe" "tzinfo"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s12j8vl8vrxfngkdlz9g8bpz9akq1z42d57mx5r537b2pji8nr7";
+      type = "gem";
+    };
+    version = "4.2.10";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  colorator = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  concurrent-ruby = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  em-websocket = {
+    dependencies = ["eventmachine" "http_parser.rb"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  eventmachine = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  ffi = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
+      type = "gem";
+    };
+    version = "1.9.25";
+  };
+  forwardable-extended = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  gemoji = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h85qpn2xbmsn8ssf2fqzlqg181j000m5z4l3g26r7vblncg162d";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mpj5y13jk1arqkhdk66n49kyglmci980c1l6np7pqgyjllb68ad";
+      type = "gem";
+    };
+    version = "2.8.4";
+  };
+  "http_parser.rb" = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
+      type = "gem";
+    };
+    version = "0.9.5";
+  };
+  jekyll = {
+    dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3";
+      type = "gem";
+    };
+    version = "3.8.5";
+  };
+  jekyll-avatar = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "124624r83pmn7sp2idnsph9m1bbdiha5jnza4ypna8w2inpih51p";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hg1rlra12im62z5yml4rlll3icz1146hkcv98mk2a96fsgniwqf";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  jekyll-sass-converter = {
+    dependencies = ["sass"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19yfr5i04gm50swbc6xxf4090z5z1v0kjfnvh695ydq1dkyx1csl";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  jekyll-sitemap = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xy93ysl1q8r4xhbnffycvsslja0dskh2z2pl1jnykwsy27dc89n";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yjbgawzmlcppmlhz5sdhjim6ki0vh0vh07mbyf05qa4994ckihs";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  kramdown = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq";
+      type = "gem";
+    };
+    version = "1.17.0";
+  };
+  liquid = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw";
+      type = "gem";
+    };
+    version = "4.0.1";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+      type = "gem";
+    };
+    version = "3.1.5";
+  };
+  mercenary = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  minitest = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+      type = "gem";
+    };
+    version = "5.11.3";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
+      type = "gem";
+    };
+    version = "1.8.5";
+  };
+  pathutil = {
+    dependencies = ["forwardable-extended"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+      type = "gem";
+    };
+    version = "3.0.3";
+  };
+  rb-fsevent = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+      type = "gem";
+    };
+    version = "0.10.3";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+      type = "gem";
+    };
+    version = "0.9.10";
+  };
+  rouge = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  ruby_dep = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  safe_yaml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  sass = {
+    dependencies = ["sass-listen"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  thread_safe = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
+      type = "gem";
+    };
+    version = "1.2.5";
+  };
+}
\ 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..ce3c318f6780
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/default.nix
@@ -0,0 +1,36 @@
+{ lib, bundlerEnv, ruby
+, withOptionalDependencies ? false
+}:
+
+# Bundix:
+# nix-shell -p bundix zlib
+bundlerEnv rec {
+  name = pname + "-" + version;
+  pname = "jekyll";
+  version = (import
+    (if withOptionalDependencies
+      then ./full/gemset.nix
+      else ./basic/gemset.nix))
+    .jekyll.version;
+
+  inherit ruby;
+  gemdir = if withOptionalDependencies
+    then ./full
+    else ./basic;
+
+  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/;
+    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..aba5e06e3769
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile
@@ -0,0 +1,30 @@
+source "https://rubygems.org"
+gem "jekyll"
+gem "rouge"
+gem "activesupport", "~> 4.2"
+gem "jekyll-avatar"
+gem "jekyll-mentions"
+gem "jekyll-seo-tag"
+gem "jekyll-sitemap"
+gem "jemoji"
+# Optional dependencies:
+gem "coderay", "~> 1.1.0"
+gem "jekyll-coffeescript"
+#gem "jekyll-docs"
+gem "jekyll-feed", "~> 0.9"
+gem "jekyll-gist"
+gem "jekyll-paginate"
+gem "jekyll-redirect-from"
+gem "kramdown", "~> 1.14"
+gem "mime-types", "~> 3.0"
+gem "rdoc", RUBY_VERSION >= "2.2.2" ? "~> 6.0" : "~> 5.1"
+gem "tomlrb", "~> 1.2"
+
+platform :ruby, :mswin, :mingw, :x64_mingw do
+  gem "classifier-reborn", "~> 2.2.0"
+  gem "liquid-c", "~> 3.0"
+  gem "pygments.rb", "~> 1.0"
+  gem "rdiscount", "~> 2.0"
+  gem "redcarpet", "~> 3.2", ">= 3.2.3"
+  gem "yajl-ruby", "~> 1.3.1"
+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..5fe2d1085001
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/Gemfile.lock
@@ -0,0 +1,155 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (4.2.10)
+      i18n (~> 0.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.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.11.1)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.1)
+    em-websocket (0.5.1)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0.6.0)
+    eventmachine (1.2.7)
+    execjs (2.7.0)
+    faraday (0.15.3)
+      multipart-post (>= 1.2, < 3)
+    fast-stemmer (1.0.2)
+    ffi (1.9.25)
+    forwardable-extended (2.6.0)
+    gemoji (3.0.0)
+    html-pipeline (2.8.4)
+      activesupport (>= 2)
+      nokogiri (>= 1.4)
+    http_parser.rb (0.6.0)
+    i18n (0.9.5)
+      concurrent-ruby (~> 1.0)
+    jekyll (3.8.5)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 0.7)
+      jekyll-sass-converter (~> 1.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 1.14)
+      liquid (~> 4.0)
+      mercenary (~> 0.3.3)
+      pathutil (~> 0.9)
+      rouge (>= 1.7, < 4)
+      safe_yaml (~> 1.0)
+    jekyll-avatar (0.6.0)
+      jekyll (~> 3.0)
+    jekyll-coffeescript (1.1.1)
+      coffee-script (~> 2.2)
+      coffee-script-source (~> 1.11.1)
+    jekyll-feed (0.11.0)
+      jekyll (~> 3.3)
+    jekyll-gist (1.5.0)
+      octokit (~> 4.2)
+    jekyll-mentions (1.4.1)
+      html-pipeline (~> 2.3)
+      jekyll (~> 3.0)
+    jekyll-paginate (1.1.0)
+    jekyll-redirect-from (0.14.0)
+      jekyll (~> 3.3)
+    jekyll-sass-converter (1.5.2)
+      sass (~> 3.4)
+    jekyll-seo-tag (2.5.0)
+      jekyll (~> 3.3)
+    jekyll-sitemap (1.2.0)
+      jekyll (~> 3.3)
+    jekyll-watch (2.1.2)
+      listen (~> 3.0)
+    jemoji (0.10.1)
+      gemoji (~> 3.0)
+      html-pipeline (~> 2.2)
+      jekyll (~> 3.0)
+    kramdown (1.17.0)
+    liquid (4.0.1)
+    liquid-c (3.0.0)
+      liquid (>= 3.0.0)
+    listen (3.1.5)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+      ruby_dep (~> 1.2)
+    mercenary (0.3.6)
+    mime-types (3.2.2)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2018.0812)
+    mini_portile2 (2.3.0)
+    minitest (5.11.3)
+    multi_json (1.13.1)
+    multipart-post (2.0.0)
+    nokogiri (1.8.5)
+      mini_portile2 (~> 2.3.0)
+    octokit (4.13.0)
+      sawyer (~> 0.8.0, >= 0.5.3)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (3.0.3)
+    pygments.rb (1.2.1)
+      multi_json (>= 1.0.0)
+    rb-fsevent (0.10.3)
+    rb-inotify (0.9.10)
+      ffi (>= 0.5.0, < 2)
+    rdiscount (2.2.0.1)
+    rdoc (6.0.4)
+    redcarpet (3.4.0)
+    rouge (3.3.0)
+    ruby_dep (1.5.0)
+    safe_yaml (1.0.4)
+    sass (3.6.0)
+      sass-listen (~> 4.0.0)
+    sass-listen (4.0.0)
+      rb-fsevent (~> 0.9, >= 0.9.4)
+      rb-inotify (~> 0.9, >= 0.9.7)
+    sawyer (0.8.1)
+      addressable (>= 2.3.5, < 2.6)
+      faraday (~> 0.8, < 1.0)
+    thread_safe (0.3.6)
+    tomlrb (1.2.7)
+    tzinfo (1.2.5)
+      thread_safe (~> 0.1)
+    yajl-ruby (1.3.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  activesupport (~> 4.2)
+  classifier-reborn (~> 2.2.0)
+  coderay (~> 1.1.0)
+  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 (~> 1.14)
+  liquid-c (~> 3.0)
+  mime-types (~> 3.0)
+  pygments.rb (~> 1.0)
+  rdiscount (~> 2.0)
+  rdoc (~> 6.0)
+  redcarpet (~> 3.2, >= 3.2.3)
+  rouge
+  tomlrb (~> 1.2)
+  yajl-ruby (~> 1.3.1)
+
+BUNDLED WITH
+   1.16.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..4e33cd6ccdcf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jekyll/full/gemset.nix
@@ -0,0 +1,538 @@
+{
+  activesupport = {
+    dependencies = ["i18n" "minitest" "thread_safe" "tzinfo"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0s12j8vl8vrxfngkdlz9g8bpz9akq1z42d57mx5r537b2pji8nr7";
+      type = "gem";
+    };
+    version = "4.2.10";
+  };
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  classifier-reborn = {
+    dependencies = ["fast-stemmer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nxmm5b7j7r0ij9pcpdr7xqpig559gfzrw042ycxcfyav2pv6ij";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
+  coderay = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
+      type = "gem";
+    };
+    version = "1.1.2";
+  };
+  coffee-script = {
+    dependencies = ["coffee-script-source" "execjs"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  coffee-script-source = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xfshhlz808f8639wc88wgls1mww35sid8rd55vn0a4yqajf4vh9";
+      type = "gem";
+    };
+    version = "1.11.1";
+  };
+  colorator = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  concurrent-ruby = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  em-websocket = {
+    dependencies = ["eventmachine" "http_parser.rb"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3";
+      type = "gem";
+    };
+    version = "0.5.1";
+  };
+  eventmachine = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  execjs = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  faraday = {
+    dependencies = ["multipart-post"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
+      type = "gem";
+    };
+    version = "0.15.3";
+  };
+  fast-stemmer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0688clyk4xxh3kdb18vi089k90mca8ji5fwaknh3da5wrzcrzanh";
+      type = "gem";
+    };
+    version = "1.0.2";
+  };
+  ffi = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
+      type = "gem";
+    };
+    version = "1.9.25";
+  };
+  forwardable-extended = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
+      type = "gem";
+    };
+    version = "2.6.0";
+  };
+  gemoji = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h85qpn2xbmsn8ssf2fqzlqg181j000m5z4l3g26r7vblncg162d";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mpj5y13jk1arqkhdk66n49kyglmci980c1l6np7pqgyjllb68ad";
+      type = "gem";
+    };
+    version = "2.8.4";
+  };
+  "http_parser.rb" = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  i18n = {
+    dependencies = ["concurrent-ruby"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
+      type = "gem";
+    };
+    version = "0.9.5";
+  };
+  jekyll = {
+    dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3";
+      type = "gem";
+    };
+    version = "3.8.5";
+  };
+  jekyll-avatar = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "124624r83pmn7sp2idnsph9m1bbdiha5jnza4ypna8w2inpih51p";
+      type = "gem";
+    };
+    version = "0.6.0";
+  };
+  jekyll-coffeescript = {
+    dependencies = ["coffee-script" "coffee-script-source"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "06qf4j9f6ysjb4bq6gsdaiz2ksmhc5yb484v458ra3s6ybccqvvy";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  jekyll-feed = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11mlqqbkmddnyh8xfjv5k6v7c73bbi92w7vw4x1c9xvggxrjzicp";
+      type = "gem";
+    };
+    version = "0.11.0";
+  };
+  jekyll-gist = {
+    dependencies = ["octokit"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03wz9j6yq3552nzf4g71qrdm9pfdgbm68abml9sjjgiaan1n8ns9";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hg1rlra12im62z5yml4rlll3icz1146hkcv98mk2a96fsgniwqf";
+      type = "gem";
+    };
+    version = "1.4.1";
+  };
+  jekyll-paginate = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  jekyll-redirect-from = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08xfd7fvqcq6skybxsn4d60rqn4ws2y9hkhl71wz9zrc55xhgxa4";
+      type = "gem";
+    };
+    version = "0.14.0";
+  };
+  jekyll-sass-converter = {
+    dependencies = ["sass"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk";
+      type = "gem";
+    };
+    version = "1.5.2";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19yfr5i04gm50swbc6xxf4090z5z1v0kjfnvh695ydq1dkyx1csl";
+      type = "gem";
+    };
+    version = "2.5.0";
+  };
+  jekyll-sitemap = {
+    dependencies = ["jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xy93ysl1q8r4xhbnffycvsslja0dskh2z2pl1jnykwsy27dc89n";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yjbgawzmlcppmlhz5sdhjim6ki0vh0vh07mbyf05qa4994ckihs";
+      type = "gem";
+    };
+    version = "0.10.1";
+  };
+  kramdown = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq";
+      type = "gem";
+    };
+    version = "1.17.0";
+  };
+  liquid = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw";
+      type = "gem";
+    };
+    version = "4.0.1";
+  };
+  liquid-c = {
+    dependencies = ["liquid"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a5n7q314ma32y7v9a1g6ps60b14zfn2q4nip4j5aknblz51v7gi";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  listen = {
+    dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
+      type = "gem";
+    };
+    version = "3.1.5";
+  };
+  mercenary = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  mime-types = {
+    dependencies = ["mime-types-data"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
+      type = "gem";
+    };
+    version = "3.2.2";
+  };
+  mime-types-data = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
+      type = "gem";
+    };
+    version = "3.2018.0812";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  minitest = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
+      type = "gem";
+    };
+    version = "5.11.3";
+  };
+  multi_json = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
+      type = "gem";
+    };
+    version = "1.13.1";
+  };
+  multipart-post = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
+      type = "gem";
+    };
+    version = "1.8.5";
+  };
+  octokit = {
+    dependencies = ["sawyer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
+      type = "gem";
+    };
+    version = "4.13.0";
+  };
+  pathutil = {
+    dependencies = ["forwardable-extended"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
+      type = "gem";
+    };
+    version = "3.0.3";
+  };
+  "pygments.rb" = {
+    dependencies = ["multi_json"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lbvnwvz770ambm4d6lxgc2097rydn5rcc5d6986bnkzyxfqqjnv";
+      type = "gem";
+    };
+    version = "1.2.1";
+  };
+  rb-fsevent = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
+      type = "gem";
+    };
+    version = "0.10.3";
+  };
+  rb-inotify = {
+    dependencies = ["ffi"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
+      type = "gem";
+    };
+    version = "0.9.10";
+  };
+  rdiscount = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3";
+      type = "gem";
+    };
+    version = "2.2.0.1";
+  };
+  rdoc = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7";
+      type = "gem";
+    };
+    version = "6.0.4";
+  };
+  redcarpet = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
+      type = "gem";
+    };
+    version = "3.4.0";
+  };
+  rouge = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql";
+      type = "gem";
+    };
+    version = "3.3.0";
+  };
+  ruby_dep = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  safe_yaml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  sass = {
+    dependencies = ["sass-listen"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
+      type = "gem";
+    };
+    version = "0.8.1";
+  };
+  thread_safe = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      type = "gem";
+    };
+    version = "0.3.6";
+  };
+  tomlrb = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x3bg9mmma1gsl5j5kc9m8m77w6qwcq6ix2d0kwi5rcwpr7siyx6";
+      type = "gem";
+    };
+    version = "1.2.7";
+  };
+  tzinfo = {
+    dependencies = ["thread_safe"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
+      type = "gem";
+    };
+    version = "1.2.5";
+  };
+  yajl-ruby = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rn4kc9fha990yd252wglh6rcyh35cavm1vpyfj8krlcwph09g30";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+}
\ 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..b868808ec3dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/jgmenu/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, pkgconfig, python3Packages, pango, librsvg, libxml2, menu-cache, xorg }:
+
+stdenv.mkDerivation rec {
+  name = "jgmenu-${version}";
+  version = "1.1";
+
+  src = fetchFromGitHub {
+    owner = "johanmalm";
+    repo = "jgmenu";
+    rev = "v${version}";
+    sha256 = "0hnxzy5mm5z6r9gaimfsf7kbpr23khck2fhh3j8bk2lkp53420fz";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    python3Packages.wrapPython
+  ];
+
+  buildInputs = [
+    pango
+    librsvg
+    libxml2
+    menu-cache
+    xorg.libXinerama
+  ];
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  postFixup = ''
+    wrapPythonProgramsIn "$out/lib/jgmenu"
+  '';
+
+  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..3561fcde839d
--- /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/josm/default.nix b/nixpkgs/pkgs/applications/misc/josm/default.nix
new file mode 100644
index 000000000000..847ac3e299c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/josm/default.nix
@@ -0,0 +1,44 @@
+{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jdk11 }:
+
+stdenv.mkDerivation rec {
+  name = "josm-${version}";
+  version = "14460";
+
+  src = fetchurl {
+    url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
+    sha256 = "1j95319dvj4cwi1af94n1p8m1z1191j1jx6x06l4vz8bcjxaaqf5";
+  };
+
+  buildInputs = [ jdk11 makeWrapper ];
+
+  desktopItem = makeDesktopItem {
+    name = "josm";
+    exec = "josm";
+    icon = "josm";
+    desktopName = "JOSM";
+    genericName = "OpenStreetMap Editor";
+    comment = meta.description;
+    categories = "Education;Geoscience;Maps;";
+  };
+
+  buildCommand = ''
+    mkdir -p $out/bin $out/share/java
+    cp -v $src $out/share/java/josm.jar
+
+    makeWrapper ${jdk11}/bin/java $out/bin/josm \
+      --add-flags "-jar $out/share/java/josm.jar"
+
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+    mkdir -p $out/share/pixmaps
+    ${unzip}/bin/unzip -p $src images/logo_48x48x32.png > $out/share/pixmaps/josm.png
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An extensible editor for OpenStreetMap";
+    homepage = https://josm.openstreetmap.de/;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.rycee ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/jp2a/default.nix b/nixpkgs/pkgs/applications/misc/jp2a/default.nix
new file mode 100644
index 000000000000..138ee397d3fd
--- /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";
+  name = "jp2a-${version}";
+
+  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..30e36c3dcf0f
--- /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 argparse 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..8f69abd3a987
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/default.nix
@@ -0,0 +1,119 @@
+{ stdenv, fetchzip, fetchurl, fetchpatch, cmake, pkgconfig
+, zlib, libpng, openjpeg
+, enableGSL ? true, gsl
+, enableGhostScript ? true, ghostscript
+, enableMuPDF ? true, mupdf
+, enableJPEG2K ? true, jasper
+, enableDJVU ? true, djvulibre
+, enableGOCR ? false, gocr # Disabled by default due to crashes
+, enableTesseract ? true, leptonica, tesseract
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "k2pdfopt-${version}";
+  version = "2.42";
+
+  src = fetchzip {
+    url = "http://www.willus.com/k2pdfopt/src/k2pdfopt_v${version}_src.zip";
+    sha256 = "1zag4jmkr0qrcpqqb5davmvdrabhdyz87q4zz0xpfkl6xw2dn9bk";
+  };
+
+  patches = [ ./k2pdfopt.patch ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs =
+  let
+    mupdf_modded = mupdf.overrideAttrs (attrs: {
+      name = "mupdf-1.10a";
+      version = "1.10a";
+      src = fetchurl {
+        url = "https://mupdf.com/downloads/archive/mupdf-1.10a-source.tar.gz";
+        sha256 = "0dm8wcs8i29aibzkqkrn8kcnk4q0kd1v66pg48h5c3qqp4v1zk5a";
+      };
+      # Excluded the pdf-*.c files, since they mostly just broke the #includes
+      prePatch = ''
+        cp ${src}/mupdf_mod/{font,stext-device,string}.c source/fitz/
+        cp ${src}/mupdf_mod/font-win32.c source/pdf/
+      '';
+      # Patches from previous 1.10a version in nixpkgs
+      patches = [
+        # Compatibility with new openjpeg
+        ./load-jpx.patch
+
+        (fetchurl {
+         name = "CVE-2017-5896.patch";
+         url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=2c4e5867ee699b1081527bc6c6ea0e99a35a5c27";
+         sha256 = "14k7x47ifx82sds1c06ibzbmcparfg80719jhgwjk6w1vkh4r693";
+        })
+
+        (fetchpatch {
+          name = "mupdf-1.10a-shared_libs-1.patch";
+          url = "https://ftp.osuosl.org/pub/blfs/conglomeration/mupdf/mupdf-1.10a-shared_libs-1.patch";
+          sha256 = "0kg4vahp7hlyyj5hl18brk8s8xcbqrx19pqjzkfq6ha8mqa3k4ab";
+        })
+      ];
+
+      # Override this since the jpeg directory was renamed libjpeg in mupdf 1.11
+      preConfigure = ''
+        # Don't remove mujs because upstream version is incompatible
+        rm -rf thirdparty/{curl,freetype,glfw,harfbuzz,jbig2dec,jpeg,openjpeg,zlib}
+      '';
+      postPatch = let
+        # OpenJPEG version is hardcoded in package source
+        openJpegVersion = with stdenv;
+          lib.concatStringsSep "." (lib.lists.take 2
+          (lib.splitString "." (lib.getVersion openjpeg)));
+        in ''
+          sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c
+        '';
+    });
+    leptonica_modded = leptonica.overrideAttrs (attrs: {
+      prePatch = ''
+        cp ${src}/leptonica_mod/* src/
+      '';
+    });
+    tesseract_modded = tesseract.override {
+      tesseractBase = tesseract.tesseractBase.overrideAttrs (_: {
+        prePatch = ''
+          cp ${src}/tesseract_mod/{ambigs.cpp,ccutil.h,ccutil.cpp} ccutil/
+          cp ${src}/tesseract_mod/dawg.cpp api/
+          cp ${src}/tesseract_mod/{imagedata.cpp,tessdatamanager.cpp} ccstruct/
+          cp ${src}/tesseract_mod/openclwrapper.h opencl/
+          cp ${src}/tesseract_mod/{tessedit.cpp,thresholder.cpp} ccmain/
+          cp ${src}/tesseract_mod/tess_lang_mod_edge.h cube/
+          cp ${src}/tesseract_mod/tesscapi.cpp api/
+          cp ${src}/include_mod/{tesseract.h,leptonica.h} api/
+        '';
+        patches = [ ./tesseract.patch ];
+      });
+    };
+  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" ];
+
+  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.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/load-jpx.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/load-jpx.patch
new file mode 100644
index 000000000000..02a3799d040a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/load-jpx.patch
@@ -0,0 +1,29 @@
+--- a/source/fitz/load-jpx.c
++++ b/source/fitz/load-jpx.c
+@@ -484,12 +484,16 @@
+ /* Without the definition of OPJ_STATIC, compilation fails on windows
+  * due to the use of __stdcall. We believe it is required on some
+  * linux toolchains too. */
++#ifdef __cplusplus
++extern "C"
++{
+ #define OPJ_STATIC
+ #ifndef _MSC_VER
+ #define OPJ_HAVE_STDINT_H
+ #endif
++#endif
+ 
+-#include <openjpeg.h>
++#include <openjpeg-__OPENJPEG__VERSION__/openjpeg.h>
+ 
+ /* OpenJPEG does not provide a safe mechanism to intercept
+  * allocations. In the latest version all allocations go
+@@ -971,4 +975,8 @@
+ 	fz_drop_pixmap(ctx, img);
+ }
+ 
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* HAVE_LURATECH */
diff --git a/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch b/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch
new file mode 100644
index 000000000000..4827daa1a905
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/k2pdfopt/tesseract.patch
@@ -0,0 +1,13 @@
+diff --git a/api/Makefile.am b/api/Makefile.am
+index d8c1e54..46ead13 100644
+--- a/api/Makefile.am
++++ b/api/Makefile.am
+@@ -42,7 +42,7 @@ libtesseract_api_la_CPPFLAGS = $(AM_CPPFLAGS)
+ if VISIBILITY
+ libtesseract_api_la_CPPFLAGS += -DTESS_EXPORTS
+ endif
+-libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp renderer.cpp pdfrenderer.cpp
++libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp renderer.cpp pdfrenderer.cpp tesscapi.cpp
+ 
+ lib_LTLIBRARIES += libtesseract.la
+ libtesseract_la_LDFLAGS = 
diff --git a/nixpkgs/pkgs/applications/misc/kanboard/default.nix b/nixpkgs/pkgs/applications/misc/kanboard/default.nix
new file mode 100644
index 000000000000..7995c8875b82
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kanboard/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchzip }:
+
+stdenv.mkDerivation rec {
+  name = "kanboard-${version}";
+  version = "1.0.48";
+
+  src = fetchzip {
+    url = "https://github.com/kanboard/kanboard/releases/download/v${version}/${name}.zip";
+    sha256 = "0ipyijlfcnfqlz9n20wcnaf9pw404a675x404pm9h2n4ld8x6m5v";
+  };
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kdbplus/default.nix b/nixpkgs/pkgs/applications/misc/kdbplus/default.nix
new file mode 100644
index 000000000000..b518481e29ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kdbplus/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, requireFile, unzip, rlwrap, bash }:
+
+assert (stdenv.hostPlatform.system == "i686-linux");
+
+let
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.libc stdenv.cc.cc ];
+in
+stdenv.mkDerivation rec {
+  name    = "kdbplus-${version}";
+  version = "3.3";
+
+  src = requireFile {
+    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/linux.zip" in
+      the directory where you saved it. Note you need version 3.3.
+    '';
+    name   = "linux.zip";
+    sha256 = "5fd0837599e24f0f437a8314510888a86ab0787684120a8fcf592299800aa940";
+  };
+
+  dontStrip = true;
+  buildInputs = [ unzip ];
+
+  phases = "unpackPhase installPhase";
+  unpackPhase = "mkdir ${name} && cd ${name} && 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..d15926ba6fb7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kdeconnect/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, lib
+, fetchurl
+, extra-cmake-modules
+, kcmutils
+, kconfigwidgets
+, kdbusaddons
+, kdoctools
+, kiconthemes
+, ki18n
+, knotifications
+, qca-qt5
+, libfakekey
+, libXtst
+, qtx11extras
+, sshfs
+, makeWrapper
+, kwayland
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kdeconnect";
+  version = "1.3.3";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${pname}-kde-${version}.tar.xz";
+    sha256 = "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg";
+  };
+
+  buildInputs = [
+    libfakekey libXtst
+    ki18n kiconthemes kcmutils kconfigwidgets kdbusaddons knotifications
+    qca-qt5 qtx11extras makeWrapper kwayland
+  ];
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+
+  postInstall = ''
+    wrapProgram $out/lib/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..80bf5deceb16
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keeagent/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildEnv, fetchzip, mono }:
+
+let
+  version = "0.10.1";
+  drv = stdenv.mkDerivation {
+    name = "keeagent-${version}";
+
+    src = fetchzip {
+      url = "https://lechnology.com/wp-content/uploads/2018/04/KeeAgent_v0.10.1.zip";
+      sha256 = "0j7az6l9wcr8z66mfplkxwydd4bgz2p2vd69xncf0nxlfb0lshh7";
+      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..e64632d529b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildEnv, fetchFromGitHub, mono }:
+
+let
+  version = "1.8.4.2";
+  drv = stdenv.mkDerivation {
+    name = "keepasshttp-${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..b45cb24b1b51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, buildEnv, fetchurl, mono }:
+
+let
+  version = "1.8.0";
+  drv = stdenv.mkDerivation {
+    name = "keepassrpc-${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/default.nix b/nixpkgs/pkgs/applications/misc/keepass/default.nix
new file mode 100644
index 000000000000..b954d2d3cdb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/default.nix
@@ -0,0 +1,115 @@
+{ stdenv, lib, fetchurl, buildDotnetPackage, substituteAll, makeWrapper, makeDesktopItem,
+  unzip, icoutils, gtk2, xorg, xdotool, xsel, plugins ? [] }:
+
+with builtins; buildDotnetPackage rec {
+  baseName = "keepass";
+  version = "2.40";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/keepass/KeePass-${version}-Source.zip";
+    sha256 = "1gldl74wz2lvsci6rn71d6q1zmnhr52z6fjib9nsragsazq5byz9";
+  };
+
+  sourceRoot = ".";
+
+  buildInputs = [ unzip makeWrapper icoutils ];
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      xsel = "${xsel}/bin/xsel";
+      xprop = "${xorg.xprop}/bin/xprop";
+      xdotool = "${xdotool}/bin/xdotool";
+    })
+  ];
+
+  # 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..318f8a358985
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/fix-paths.patch
@@ -0,0 +1,87 @@
+diff --git a/KeePass/Native/NativeMethods.Unix.cs b/KeePass/Native/NativeMethods.Unix.cs
+index 7495a1c..4ef4727 100644
+--- a/KeePass/Native/NativeMethods.Unix.cs
++++ b/KeePass/Native/NativeMethods.Unix.cs
+@@ -128,7 +128,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/Util/ClipboardUtil.Unix.cs b/KeePass/Util/ClipboardUtil.Unix.cs
+index e93a22a..3fd9a2b 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 ddd8f57..150eb82 100644
+--- a/KeePassLib/Native/ClipboardU.cs
++++ b/KeePassLib/Native/ClipboardU.cs
+@@ -27,7 +27,7 @@ namespace KeePassLib.Native
+ {

+ 	internal static class ClipboardU

+ 	{

+-		private const string XSel = "xsel";

++		private 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/Utility/MonoWorkarounds.cs b/KeePassLib/Utility/MonoWorkarounds.cs
+index 0da7019..f6a1022 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;

+@@ -303,7 +303,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 + "\"",

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..ca52e7ef191a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins-load.patch
@@ -0,0 +1 @@
++			m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass", 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..cde6e7252bc3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepass/keepass-plugins.patch
@@ -0,0 +1,13 @@
+diff --git a/KeePass/Forms/MainForm.cs b/KeePass/Forms/MainForm.cs
+index 3d5fca0..4c3f3d4 100644
+--- a/KeePass/Forms/MainForm.cs
++++ b/KeePass/Forms/MainForm.cs
+@@ -406,7 +406,$OUTPUT_LC$ @@ namespace KeePass.Forms
+ 			m_pluginManager.Initialize(m_pluginDefaultHost);
+ 
+ 			m_pluginManager.UnloadAllPlugins();
+-			if(AppPolicy.Current.Plugins) m_pluginManager.LoadAllPlugins();
+$DO_LOADS$+
+ 
+ 			// Delete old files *after* loading plugins (when timestamps
+ 			// of loaded plugins have been updated already)
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..f6814119b5a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/2.0.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, cmake, libgcrypt, qt4, xorg, ... }:
+
+stdenv.mkDerivation rec {
+  name = "keepassx2-${version}";
+  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 jgeerds ];
+    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..b6258491a8c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/community.nix
@@ -0,0 +1,106 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, qttools
+
+, curl
+, libargon2
+, libgcrypt
+, libsodium
+, zlib
+, libmicrohttpd
+, libXtst
+, qtbase
+, libgpgerror
+, glibcLocales
+, libyubikey
+, yubikey-personalization
+, libXi
+, qtx11extras
+, qtmacextras
+
+, withKeePassBrowser ? true
+, withKeePassSSHAgent ? true
+, withKeePassHTTP ? false
+, withKeePassNetworking ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "keepassxc-${version}";
+  version = "2.3.4";
+
+  src = fetchFromGitHub {
+    owner = "keepassxreboot";
+    repo = "keepassxc";
+    rev = "${version}";
+    sha256 = "1gja402dsbws4z8ybnhqbw7rc9svgqnshqjgf7158d6x0ni386m3";
+  };
+
+  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
+    ./qt511.patch
+  ];
+
+  cmakeFlags = [
+    "-DKEEPASSXC_BUILD_TYPE=Release"
+    "-DWITH_GUI_TESTS=ON"
+    "-DWITH_XC_AUTOTYPE=ON"
+    "-DWITH_XC_YUBIKEY=ON"
+  ]
+  ++ (optional withKeePassBrowser "-DWITH_XC_BROWSER=ON")
+  ++ (optional withKeePassHTTP "-DWITH_XC_HTTP=ON")
+  ++ (optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON")
+  ++ (optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON");
+
+  doCheck = true;
+  checkPhase = ''
+    export LC_ALL="en_US.UTF-8"
+    make test ARGS+="-E testgui --output-on-failure"
+  '';
+
+  nativeBuildInputs = [ cmake makeWrapper qttools ];
+
+  buildInputs = [
+    curl
+    glibcLocales
+    libXi
+    libXtst
+    libargon2
+    libgcrypt
+    libgpgerror
+    libmicrohttpd
+    libsodium
+    libyubikey
+    qtbase
+    qtx11extras
+    yubikey-personalization
+    zlib
+  ] ++ stdenv.lib.optional stdenv.isDarwin qtmacextras;
+
+  postInstall = optionalString stdenv.isDarwin ''
+    # Make it work without Qt in PATH.
+    wrapProgram $out/Applications/KeePassXC.app/Contents/MacOS/KeePassXC \
+      --set QT_PLUGIN_PATH ${qtbase.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  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 and via CLI. Includes optional http-interface to allow browser-integration with plugins like PassIFox (https://github.com/pfn/passifox).";
+    homepage = https://keepassxc.org/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ s1lvester jonafato ];
+    platforms = with platforms; linux ++ 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..1edf0a573a31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/darwin.patch
@@ -0,0 +1,52 @@
+Remove the use of macdeployqt to avoid copying dependencies and
+reduce installation size from 90 MB to 9 MB.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -250,8 +250,8 @@ else()
+   set(PROGNAME keepassxc)
+ endif()
+ 
+-if(APPLE AND WITH_APP_BUNDLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
+-  set(CMAKE_INSTALL_PREFIX "/Applications")
++if(APPLE AND WITH_APP_BUNDLE)
++  set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Applications")
+   set(CMAKE_INSTALL_MANDIR "/usr/local/share/man")
+ endif()
+ 
+@@ -262,7 +262,7 @@ if(MINGW)
+   set(PLUGIN_INSTALL_DIR ".")
+   set(DATA_INSTALL_DIR   "share")
+ elseif(APPLE AND WITH_APP_BUNDLE)
+-  set(CLI_INSTALL_DIR    "/usr/local/bin")
++  set(CLI_INSTALL_DIR    "../bin")
+   set(PROXY_INSTALL_DIR  "/usr/local/bin")
+   set(BIN_INSTALL_DIR    ".")
+   set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 69526967..38f7c5d4 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -319,11 +319,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 08c53278..b833b692 100644
+--- a/src/autotype/mac/CMakeLists.txt
++++ b/src/autotype/mac/CMakeLists.txt
+@@ -14,7 +14,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..ed706b138cc5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, bzip2, qt4, qmake4Hook, libX11, xextproto, libXtst }:
+
+stdenv.mkDerivation rec {
+  name = "keepassx-${version}";
+  version = "0.4.4";
+
+  src = fetchurl {
+    url = "https://www.keepassx.org/releases/${version}/${name}.tar.gz";
+    sha256 = "1i5dq10x28mg7m4c0yacm32xfj4j7imir4ph8x9p0s2ym260c9ry";
+  };
+
+  patches = [ ./random.patch ];
+
+  buildInputs = [ bzip2 qt4 libX11 xextproto 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 jgeerds ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/keepassx/qt511.patch b/nixpkgs/pkgs/applications/misc/keepassx/qt511.patch
new file mode 100644
index 000000000000..b4d312c8c263
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/keepassx/qt511.patch
@@ -0,0 +1,15 @@
+diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
+index 6fd65c1a..e99275b0 100644
+--- a/src/gui/entry/EditEntryWidget.cpp
++++ b/src/gui/entry/EditEntryWidget.cpp
+@@ -29,6 +29,7 @@
+ #include <QMenu>
+ #include <QSortFilterProxyModel>
+ #include <QTemporaryFile>
++#include <QButtonGroup>
+ #include <QMimeData>
+ #include <QEvent>
+ #include <QColorDialog>
+-- 
+2.17.1
+
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..bc2c8978a67e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/khal/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, pkgs, python3 }:
+
+with python3.pkgs; buildPythonApplication rec {
+  pname = "khal";
+  version = "0.9.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "03h0j0d3xyqh98x5v2gv63wv3g91hip3vsaxvybsn5iz331d23h4";
+  };
+
+  LC_ALL = "en_US.UTF-8";
+
+  propagatedBuildInputs = [
+    atomicwrites
+    click
+    configobj
+    dateutil
+    icalendar
+    lxml
+    pkgs.vdirsyncer
+    pytz
+    pyxdg
+    requests_toolbelt
+    tzlocal
+    urwid
+    pkginfo
+    freezegun
+  ];
+  nativeBuildInputs = [ setuptools_scm pkgs.glibcLocales ];
+  checkInputs = [ pytest ];
+
+  postInstall = ''
+    install -D misc/__khal $out/share/zsh/site-functions/__khal
+  '';
+
+  # One test fails as of 0.9.10 due to the upgrade to icalendar 4.0.3
+  doCheck = false;
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://lostpackets.de/khal/;
+    description = "CLI calendar application";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jgeerds gebner ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/khard/default.nix b/nixpkgs/pkgs/applications/misc/khard/default.nix
new file mode 100644
index 000000000000..8ec4e7f06d16
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/khard/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchurl, glibcLocales, python3 }:
+
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+
+      # https://github.com/pimutils/khal/issues/780
+      python-dateutil = super.python-dateutil.overridePythonAttrs (oldAttrs: rec {
+        version = "2.6.1";
+        src = oldAttrs.src.override {
+          inherit version;
+          sha256 = "891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca";
+        };
+      });
+
+    };
+  };
+
+in with python.pkgs; buildPythonApplication rec {
+  version = "0.12.2";
+  name = "khard-${version}";
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz";
+    sha256 = "0lxcvzmafpvqcifgq2xjh1ca07z0vhihn5jnw8zrpmsqdc9p6b4j";
+  };
+
+  # setup.py reads the UTF-8 encoded readme.
+  LC_ALL = "en_US.UTF-8";
+  buildInputs = [ glibcLocales ];
+
+  propagatedBuildInputs = [
+    atomicwrites
+    configobj
+    vobject
+    argparse
+    ruamel_yaml
+    ruamel_base
+    unidecode
+  ];
+
+  postInstall = ''
+    install -D misc/zsh/_khard $out/share/zsh/site-functions/_khard
+  '';
+
+  # Fails; but there are no tests anyway.
+  doCheck = false;
+
+  meta = {
+    homepage = https://github.com/scheibler/khard;
+    description = "Console carddav client";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/kitty/default.nix b/nixpkgs/pkgs/applications/misc/kitty/default.nix
new file mode 100644
index 000000000000..d3f20f0282f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, substituteAll, fetchFromGitHub, python3Packages, glfw, libunistring,
+  harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel,
+  libstartup_notification, libX11, libXrandr, libXinerama, libXcursor,
+  libxkbcommon, libXi, libXext, wayland-protocols, wayland,
+  which, dbus
+}:
+
+with python3Packages;
+buildPythonApplication rec {
+  version = "0.13.1";
+  name = "kitty-${version}";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "kovidgoyal";
+    repo = "kitty";
+    rev = "v${version}";
+    sha256 = "1j24zjasdh48z7majfpqr71n1wn5a9688wsmmqn26v8kfb68pqs4";
+  };
+
+  buildInputs = [
+    fontconfig glfw ncurses libunistring harfbuzz libX11
+    libXrandr libXinerama libXcursor libxkbcommon libXi libXext
+    wayland-protocols wayland dbus
+  ];
+
+  nativeBuildInputs = [ pkgconfig which sphinx ];
+
+  outputs = [ "out" "terminfo" ];
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so";
+    })
+  ];
+
+  buildPhase = ''
+    python3 setup.py linux-package
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out
+    cp -r linux-package/{bin,share,lib} $out
+    wrapProgram "$out/bin/kitty" --prefix PATH : "$out/bin:${stdenv.lib.makeBinPath [ imagemagick xsel ]}"
+    runHook postInstall
+  '';
+
+  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; {
+    homepage = https://github.com/kovidgoyal/kitty;
+    description = "A modern, hackable, featureful, OpenGL based terminal emulator";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ tex rvolosatovs ];
+  };
+}
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..e22f4570a4b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kitty/fix-paths.patch
@@ -0,0 +1,27 @@
+--- a/kitty/desktop.c
++++ b/kitty/desktop.c
+@@ -30,7 +30,7 @@
+ static PyObject*
+ init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) {
+     static bool done = false;
+-    static const char* libname = "libstartup-notification-1.so";
++    static const char* libname = "@libstartup_notification@";
+     if (!done) {
+         done = true;
+
+--- a/docs/Makefile
++++ b/docs/Makefile
+@@ -3,7 +3,7 @@
+# Patching is needed here for the following reasons:
+# * `sphinx-build` in nixpkgs is not a Python file but a wrapper shell script
+# * 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    = -T $(FAIL_WARN)
+-SPHINXBUILD   = python3 .. +launch :sphinx-build
++SPHINXBUILD   = PYTHONPATH=${PYTHONPATH}:.. HOME=${TMPDIR}/kitty-build-home sphinx-build
+ SPHINXPROJ    = kitty
+ SOURCEDIR     = .
+ BUILDDIR      = _build
diff --git a/nixpkgs/pkgs/applications/misc/kiwix/default.nix b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
new file mode 100644
index 000000000000..9ea8210e67e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
@@ -0,0 +1,110 @@
+{ 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";
+    name = "pugixml-${version}";
+
+    src = fetchurl {
+      url = "http://download.kiwix.org/dev/${name}.tar.gz";
+      sha256 = "0sqk0vdwjq44jxbbkj1cy8qykrmafs1sickzldb2w2nshsnjshhg";
+    };
+
+    buildInputs = [ cmake ];
+
+    unpackPhase = ''
+      # not a nice src archive: all the files are in the root :(
+      mkdir ${name}
+      cd ${name}
+      tar -xf ${src}
+
+      # and the build scripts are in there :'(
+      cd scripts
+    '';
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "kiwix-${version}";
+  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-static"
+    "--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 = http://kiwix.org;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ robbinch ];
+    knownVulnerabilities = [
+      "CVE-2015-1032"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/krename/default.nix b/nixpkgs/pkgs/applications/misc/krename/default.nix
new file mode 100644
index 000000000000..52233ad2f2f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/krename/default.nix
@@ -0,0 +1,31 @@
+{
+  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";
+  };
+
+  meta = with lib; {
+    homepage = http://www.krename.net;
+    description = "A powerful batch renamer for KDE";
+    license = licenses.gpl2;
+    inherit (kconfig.meta) platforms;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+
+  buildInputs = [ taglib exiv2 podofo ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
+  propagatedBuildInputs = [ kconfig kcrash kinit kjsembed ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/krusader/default.nix b/nixpkgs/pkgs/applications/misc/krusader/default.nix
new file mode 100644
index 000000000000..70915ca87073
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/krusader/default.nix
@@ -0,0 +1,27 @@
+{
+  mkDerivation, fetchurl, lib,
+  extra-cmake-modules, kdoctools, wrapGAppsHook,
+  karchive, kconfig, kcrash, kguiaddons, kinit, kparts, kwindowsystem
+}:
+
+let
+  pname = "krusader";
+  version = "2.7.1";
+in mkDerivation rec {
+  name = "krusader-${version}";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/${name}.tar.xz";
+    sha256 = "1svxj1qygyr3a4dkx0nh2d6r4q7pfj00brzghl94mf4q0rz4vhfm";
+  };
+
+  meta = with lib; {
+    description = "Norton/Total Commander clone for KDE";
+    license = licenses.gpl2;
+    homepage = http://www.krusader.org;
+    maintainers = with maintainers; [ sander ];
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
+  propagatedBuildInputs = [ karchive kconfig kcrash kguiaddons kinit kparts kwindowsystem ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/kupfer/default.nix b/nixpkgs/pkgs/applications/misc/kupfer/default.nix
new file mode 100644
index 000000000000..33a2cf932095
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/kupfer/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, fetchurl
+, intltool
+, python3Packages
+, gobject-introspection
+, gtk3
+, libwnck3
+, keybinder3
+, hicolor-icon-theme
+, wrapGAppsHook
+, wafHook
+}:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  name = "kupfer-${version}";
+  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 = [ hicolor-icon-theme docutils libwnck3 keybinder3 ];
+  propagatedBuildInputs = [ pygobject3 gtk3 pyxdg dbus-python pycairo ];
+
+  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..a00a85b7a81c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/latte-dock/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, lib, cmake, xorg, plasma-framework, fetchurl
+, extra-cmake-modules, karchive, kwindowsystem, qtx11extras, kcrash, knewstuff }:
+
+mkDerivation rec {
+  pname = "latte-dock";
+  version = "0.8.3";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://download.kde.org/stable/${pname}/${name}.tar.xz";
+    sha256 = "1jgg1ag8sxrkif1bqgz5pizn1xmiljas00rqcskszx10j0595mnk";
+    name = "${name}.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..9018a5926424
--- /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 {
+  name = "lenmus-${version}";
+  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..13e7e4f98011
--- /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 {
+  name = "libosmocore-${version}";
+  version = "0.12.1";
+
+  src = fetchFromGitHub {
+    owner = "osmocom";
+    repo = "libosmocore";
+    rev = version;
+    sha256 = "140c9jii0qs00s50kji1znc2339s22x8sz259x4pj35rrjzyyjgp";
+  };
+
+  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..ca9a90777e33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/librecad/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, qt4, qmake4Hook, muparser, which, boost, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  version = "2.1.3";
+  name = "librecad-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/LibreCAD/LibreCAD/tarball/${version}";
+    name = name + ".tar.gz";
+    sha256 = "1czp8bja61hfav2m7184cq1np1n76w3w6vn0hlkp81hhz9zc62sx";
+  };
+
+  patchPhase = ''
+    sed -i -e s,/bin/bash,`type -P bash`, scripts/postprocess-unix.sh
+    sed -i -e s,/usr/share,$out/share, librecad/src/lib/engine/rs_system.cpp
+  '';
+
+  qmakeFlags = [ "MUPARSER_DIR=${muparser}" "BOOST_DIR=${boost.dev}" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share
+    cp -R unix/librecad $out/bin
+    cp -R unix/resources $out/share/librecad
+  '';
+
+  buildInputs = [ qt4 muparser which boost ];
+  nativeBuildInputs = [ pkgconfig qmake4Hook ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A 2D CAD package based upon Qt";
+    homepage = https://librecad.org;
+    repositories.git = git://github.com/LibreCAD/LibreCAD.git;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.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..7b5b40d65a36
--- /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..948ae7b14a11
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lilyterm/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, lib, fetchurl, fetchFromGitHub
+, pkgconfig
+, autoconf, automake, intltool, gettext
+, gtk, vte
+
+, flavour ? "stable"
+}:
+
+assert lib.assertOneOf "flavour" flavour [ "stable"  "git" ];
+
+let
+  stuff =
+    if flavour == "stable"
+    then rec {
+        version = "0.9.9.4";
+        src = fetchurl {
+          url = "https://lilyterm.luna.com.tw/file/lilyterm-${version}.tar.gz";
+          sha256 = "0x2x59qsxq6d6xg5sd5lxbsbwsdvkwqlk17iw3h4amjg3m1jc9mp";
+        };
+      }
+    else {
+        version = "2017-01-06";
+        src = fetchFromGitHub {
+          owner = "Tetralet";
+          repo = "lilyterm";
+          rev = "20cce75d34fd24901c9828469d4881968183c389";
+          sha256 = "0am0y65674rfqy69q4qz8izb8cq0isylr4w5ychi40jxyp68rkv2";
+        };
+      };
+
+in
+stdenv.mkDerivation rec {
+  name = "lilyterm-${version}";
+
+  inherit (stuff) src version;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ autoconf automake intltool gettext 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/limesuite/default.nix b/nixpkgs/pkgs/applications/misc/limesuite/default.nix
new file mode 100644
index 000000000000..e1cdc4a0f863
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/limesuite/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, cmake
+, sqlite, wxGTK30, libusb1, soapysdr
+, mesa_glu, libX11, gnuplot, fltk
+} :
+
+let
+  version = "18.10.0";
+
+in stdenv.mkDerivation {
+  name = "limesuite-${version}";
+
+  src = fetchFromGitHub {
+    owner = "myriadrf";
+    repo = "LimeSuite";
+    rev = "v${version}";
+    sha256 = "0nbyvcdwvfvln1wic9qwb7y221v3jv454gp5v6ms9112a41zj46h";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    libusb1
+    sqlite
+    wxGTK30
+    fltk
+    gnuplot
+    libusb1
+    soapysdr
+    mesa_glu
+    libX11
+  ];
+
+  postInstall = ''
+    mkdir -p $out/lib/udev/rules.d
+    cp ../udev-rules/64-limesuite.rules $out/lib/udev/rules.d
+
+    mkdir -p $out/share/limesuite
+    cp bin/Release/lms7suite_mcu/* $out/share/limesuite
+  '';
+
+  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/misc/llpp/default.nix b/nixpkgs/pkgs/applications/misc/llpp/default.nix
new file mode 100644
index 000000000000..ed3aca996e15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/llpp/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, lib, substituteAll, makeWrapper, fetchgit, ocaml, mupdf, libX11,
+libGLU_combined, freetype, xclip }:
+
+assert lib.versionAtLeast (lib.getVersion ocaml) "4.07";
+
+stdenv.mkDerivation rec {
+  name = "llpp-${version}";
+  version = "30";
+
+  src = fetchgit {
+    url = "git://repo.or.cz/llpp.git";
+    rev = "v${version}";
+    sha256 = "0iilpzf12hs0zky58j55l4y5dvzv7fc53nsrg324n9vka92mppvd";
+    fetchSubmodules = false;
+  };
+
+  patches = (substituteAll {
+    inherit version;
+    src = ./fix-build-bash.patch;
+  });
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ ocaml mupdf libX11 libGLU_combined 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 $out/lib
+    install build/llpp $out/bin
+    wrapProgram $out/bin/llpp \
+        --prefix CAML_LD_LIBRARY_PATH ":" "$out/lib" \
+        --prefix PATH ":" "${xclip}/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..25d503290ce8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/llpp/fix-build-bash.patch
@@ -0,0 +1,88 @@
+From cccadedfbcb6764a38382154838113a6b2fd4dee Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Mon, 10 Dec 2018 15:08:01 +1100
+Subject: [PATCH] Patch build.bash for nixpkgs
+
+---
+ build.bash | 37 ++-----------------------------------
+ 1 file changed, 2 insertions(+), 35 deletions(-)
+
+diff --git a/build.bash b/build.bash
+index 1588011..72117d9 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=native
+ mulibs="$mudir/build/$mbt/libmupdf.a" # $mudir/build/$mbt/libmupdf-third.a
+ 
+-keycmd="(cd $mudir && git describe --tags --dirty); digest $mulibs"
+-isfresh "$mulibs" "$(eval $keycmd)" || (
+-    make -C "$mudir" build=$mbt -j $mjobs libs
+-    echo "k='$(eval $keycmd)'" >$mudir/build/$mbt/libmupdf.a.past
+-) && vecho "fresh mupdf"
+-
+ oincs() {
+     local i=
+     local incs1=
+@@ -90,32 +83,6 @@ mflags() {
+ }
+ 
+ overs="$(ocamlc -vnum 2>/dev/null)" || overs=""
+-test "$overs" = "4.07.0" || {
+-    url=https://caml.inria.fr/pub/distrib/ocaml-4.07/ocaml-4.07.0.tar.xz
+-    txz=$outd/$(basename $url)
+-    isfresh $txz $url || {
+-        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
+-        echo "k=$url" >$txz.past
+-    } && vecho "fresh $txz"
+-    absprefix=$(cd $outd &>/dev/null; pwd -P)
+-    export PATH=$absprefix/bin:$PATH
+-    isfresh $absprefix/bin/ocamlc "$url" || (
+-        tar xf $txz -C $outd
+-        bn=$(basename $url)
+-        cd $outd/${bn%.tar.xz}
+-        ./configure -prefix $absprefix                                      \
+-                    -no-graph -no-debugger -no-ocamldoc -no-native-compiler
+-        make -j $mjobs world
+-        make install
+-        echo "k='$url'" >$absprefix/bin/ocamlc.past
+-    ) && vecho "fresh ocamlc"
+-    overs=$(ocamlc -vnum 2>/dev/null)
+-}
+ 
+ bocaml1() {
+     grep -q "$3" $outd/ordered || {
+@@ -224,7 +191,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"
+@@ -278,7 +245,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"
+-- 
+2.19.2
+
diff --git a/nixpkgs/pkgs/applications/misc/loxodo/default.nix b/nixpkgs/pkgs/applications/misc/loxodo/default.nix
new file mode 100644
index 000000000000..291e225d6c4f
--- /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 rec {
+  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 = http://www.christoph-sommer.de/loxodo/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix b/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix
new file mode 100644
index 000000000000..4972aa28e589
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ltwheelconf/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, libusb1, pkgconfig, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "ltwheelconf";
+  version = "0.2.7";
+  name = "${pname}-${version}";
+
+  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/lxterminal/default.nix b/nixpkgs/pkgs/applications/misc/lxterminal/default.nix
new file mode 100644
index 000000000000..4fd86a5a4f52
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lxterminal/default.nix
@@ -0,0 +1,49 @@
+{ 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 rec {
+  name = "lxterminal-${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..ad3bd499cde9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/lyx/default.nix
@@ -0,0 +1,53 @@
+{ fetchurl, stdenv, pkgconfig, python, file, bc, fetchpatch
+, qtbase, qtsvg, hunspell, makeWrapper #, mythes, boost
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.3.0";
+  name = "lyx-${version}";
+
+  src = fetchurl {
+    url = "ftp://ftp.lyx.org/pub/lyx/stable/2.3.x/${name}.tar.xz";
+    sha256 = "0axri2h8xkna4mkfchfyyysbjl7s486vx80p5hzj9zgsvdm5a3ri";
+  };
+
+  # 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
+  postFixup = ''
+    wrapProgram "$out/bin/lyx" \
+      --prefix PATH : '${python}/bin'
+  '';
+
+  patches = [
+    (fetchpatch {
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-office/lyx/files/lyx-2.3.0-qt-5.11.patch?id=07e82fd1fc07bf055c78b81eaa128f8f837da80d";
+      sha256 = "1bnx0il2iv36lnrnyb370wyvww0rd8bphcy6z8d7zmvd3pwhyfql";
+    })
+  ];
+
+  meta = with stdenv.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..f2dacb7890f0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/madonctl/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "madonctl-${version}";
+  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/Use-rm-from-PATH.patch b/nixpkgs/pkgs/applications/misc/makeself/Use-rm-from-PATH.patch
new file mode 100644
index 000000000000..80b9ebf4d571
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/makeself/Use-rm-from-PATH.patch
@@ -0,0 +1,43 @@
+From 81cf57e4653360af7f1718391e424fa05d8ea000 Mon Sep 17 00:00:00 2001
+From: Keshav Kini <keshav.kini@gmail.com>
+Date: Thu, 9 Aug 2018 18:36:15 -0700
+Subject: [PATCH] Use `rm` from PATH
+
+On NixOS (a Linux distribution), there is no `/bin/rm`, but an `rm`
+command will generally be available in one's path when running shell
+scripts. Here, I change a couple of invocations of `/bin/rm` into
+invocations of `rm` to deal with this issue.
+
+Since `rm` is already called elsewhere in the script without an
+absolute path, I assume this change will not cause any
+regressions. Still, I've tested this on a CentOS machine and a NixOS
+machine, though not other platforms.
+---
+ makeself-header.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/makeself-header.sh b/makeself-header.sh
+index 4d2c005..2babf34 100755
+--- a/makeself-header.sh
++++ b/makeself-header.sh
+@@ -515,7 +515,7 @@ if test x"\$quiet" = xn; then
+ fi
+ res=3
+ if test x"\$keep" = xn; then
+-    trap 'echo Signal caught, cleaning up >&2; cd \$TMPROOT; /bin/rm -rf "\$tmpdir"; eval \$finish; exit 15' 1 2 3 15
++    trap 'echo Signal caught, cleaning up >&2; cd \$TMPROOT; rm -rf "\$tmpdir"; eval \$finish; exit 15' 1 2 3 15
+ fi
+ 
+ if test x"\$nodiskspace" = xn; then
+@@ -581,7 +581,7 @@ if test x"\$script" != x; then
+ fi
+ if test x"\$keep" = xn; then
+     cd "\$TMPROOT"
+-    /bin/rm -rf "\$tmpdir"
++    rm -rf "\$tmpdir"
+ fi
+ eval \$finish; exit \$res
+ EOF
+-- 
+2.14.1
+
diff --git a/nixpkgs/pkgs/applications/misc/makeself/default.nix b/nixpkgs/pkgs/applications/misc/makeself/default.nix
new file mode 100644
index 000000000000..a6af1762e289
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/makeself/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "2.4.0";
+  name = "makeself-${version}";
+
+  src = fetchFromGitHub {
+    owner = "megastep";
+    repo = "makeself";
+    rev = "release-${version}";
+    sha256 = "1lw3gx1zpzp2wmzrw5v7k31vfsrdzadqha9ni309fp07g8inrr9n";
+  };
+
+  # backported from https://github.com/megastep/makeself/commit/77156e28ff21231c400423facc7049d9c60fd1bd
+  patches = [ ./Use-rm-from-PATH.patch ];
+
+  postPatch = ''
+    sed -e "s|^HEADER=.*|HEADER=$out/share/${name}/makeself-header.sh|" -i makeself.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/{${name},man/man1}}
+    cp makeself.lsm README.md $out/share/${name}
+    cp makeself.sh $out/bin/makeself
+    cp makeself.1  $out/share/man/man1/
+    cp makeself-header.sh $out/share/${name}
+  '';
+
+  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..3d8ed3627f2a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mako/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, scdoc, systemd, pango, cairo
+, wayland, wayland-protocols }:
+
+stdenv.mkDerivation rec {
+  name = "mako-${version}";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "emersion";
+    repo = "mako";
+    rev = "v${version}";
+    sha256 = "112b7s5bkvwlgsm2kng2vh8mn6wr3a6c7n1arl9adxlghdym449h";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+  buildInputs = [ systemd pango cairo wayland wayland-protocols ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight Wayland notification daemon";
+    homepage = https://wayland.emersion.fr/mako/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.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..2928d271efcf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/masterpdfeditor/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, sane-backends, qtbase, qtsvg, nss, autoPatchelfHook, lib, makeWrapper }:
+
+let
+  version = "5.2.20";
+
+in stdenv.mkDerivation {
+  name = "masterpdfeditor-${version}";
+
+  src = fetchurl {
+    url = "https://code-industry.net/public/master-pdf-editor-${version}_qt5.amd64.tar.gz";
+    sha256 = "1399zv3m7a2rxvmy213f5yii3krsqyahpwdzsw8j535xrb9f3z1m";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = [ nss qtbase qtsvg sane-backends stdenv.cc.cc ];
+
+  dontStrip = true;
+
+  # Please remove this when #44047 is fixed
+  postInstall = ''
+    wrapProgram $out/bin/masterpdfeditor5 --prefix QT_PLUGIN_PATH : ${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
+  '';
+
+  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/mdp/default.nix b/nixpkgs/pkgs/applications/misc/mdp/default.nix
new file mode 100644
index 000000000000..cd7bdd1fe7e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mdp/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "1.0.15";
+  name = "mdp-${version}";
+
+  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; [ 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..904fb95ca6c6
--- /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 = "18.12";
+  name = "mediainfo-gui-${version}";
+  src = fetchurl {
+    url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
+    sha256 = "01pk57ff297lifm3g2hrbmfmchgyy5rir8103n2j3l0dkn2i0g3d";
+  };
+
+  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..69e33fbfc184
--- /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 = "18.08.1";
+  name = "mediainfo-${version}";
+  src = fetchurl {
+    url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
+    sha256 = "0rq2dczjq26g5i0ac8px7xmxjvqq4h0rzd97fy5824yb2c5ksxs9";
+  };
+
+  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/memo/default.nix b/nixpkgs/pkgs/applications/misc/memo/default.nix
new file mode 100644
index 000000000000..c112cf0c928f
--- /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 {
+
+  name = "memo-${version}";
+
+  version = "0.6";
+
+  src = fetchFromGitHub {
+    owner  = "mrVanDalo";
+    repo   = "memo";
+    rev    = "${version}";
+    sha256 = "1cvjs36f6vxzfz5d63yhyw8j7gdw5hn6cfzccf7ag08lamjhfhbr";
+  };
+
+  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..56854e7863fe
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/menumaker/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  name = "menumaker-${version}";
+  version = "0.99.10";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/menumaker/${name}.tar.gz";
+    sha256 = "1mm4cvg3kphkkd8nwrhcg6d9nm5ar7mgc0wf6fxk6zck1l7xn8ky";
+  };
+
+  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..70a6efb90ddc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/merkaartor/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, qmake, pkgconfig, boost, gdal, proj
+, qtbase, qtsvg, qtwebkit }:
+
+stdenv.mkDerivation rec {
+  name = "merkaartor-${version}";
+  version = "0.18.3";
+
+  src = fetchFromGitHub {
+    owner = "openstreetmap";
+    repo = "merkaartor";
+    rev = version;
+    sha256 = "0ls3q8m1hxiwyrypy6qca8wczhl4969ncl0sszfdwfv70rzxjk88";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+
+  buildInputs = [ boost gdal proj qtbase qtsvg qtwebkit ];
+
+  enableParallelBuilding = true;
+
+  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..602d4a032efd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/metamorphose2/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchgit, makeWrapper, gettext
+, python27, python2Packages
+}:
+
+stdenv.mkDerivation rec {
+  name    = "metamorphose2-${version}";
+  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..ca4f91533ecf
--- /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/milu/default.nix b/nixpkgs/pkgs/applications/misc/milu/default.nix
new file mode 100644
index 000000000000..09c4d1db2904
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/milu/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, unzip, pkgconfig, glib, llvmPackages }:
+
+stdenv.mkDerivation rec {
+  name = "milu-nightly-${version}";
+  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/minergate-cli/default.nix b/nixpkgs/pkgs/applications/misc/minergate-cli/default.nix
new file mode 100644
index 000000000000..6aa7eea3d7e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/minergate-cli/default.nix
@@ -0,0 +1,36 @@
+{ fetchurl, stdenv, dpkg, makeWrapper, openssl }:
+
+stdenv.mkDerivation rec {
+  version = "8.2";
+  name = "minergate-cli-${version}";
+  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..d11e889e932c
--- /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 rec {
+  version = "8.1";
+  name = "minergate-${version}";
+  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/mlterm/default.nix b/nixpkgs/pkgs/applications/misc/mlterm/default.nix
new file mode 100644
index 000000000000..c872af68cef7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mlterm/default.nix
@@ -0,0 +1,94 @@
+{ 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 {
+  name = "mlterm-${version}";
+  version = "3.8.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/mlterm/01release/${name}/${name}.tar.gz";
+    sha256 = "10j7q7rk6ck86xl1898maxhgkp1h7vy7nliv9sk5bqgs7rdwn4kl";
+  };
+
+  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 rec {
+    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; {
+    homepage = http://mlterm.sourceforge.net/;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ vrthra ramkromberg ];
+    platforms = with 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..76c2ba69d35b
--- /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, pkgconfig, xorg, libvdpau, libpulseaudio, libcec
+, curl, expat, avahi, enet, libuuid
+}:
+
+stdenv.mkDerivation rec {
+  name = "moonlight-embedded-${version}";
+  version = "2.4.7";
+
+  src = fetchFromGitHub {
+    owner = "irtimmer";
+    repo = "moonlight-embedded";
+    rev = "v${version}";
+    sha256 = "0ihgb0kh4rhbgn55s25rfbs8063zqvcyqn137jn3nsc0is1595a9";
+    fetchSubmodules = true;
+  };
+
+  outputs = [ "out" "man" ];
+
+  nativeBuildInputs = [ cmake perl ];
+  buildInputs = [
+    alsaLib libevdev libopus udev SDL2
+    ffmpeg pkgconfig xorg.libxcb libvdpau libpulseaudio libcec
+    xorg.libpthreadstubs curl expat avahi enet libuuid
+  ];
+
+  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..b9179bbe5463
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mop/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "mop-${version}";
+  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/mpvc/default.nix b/nixpkgs/pkgs/applications/misc/mpvc/default.nix
new file mode 100644
index 000000000000..fffa95952622
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mpvc/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, socat, fetchFromGitHub, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  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..eea166d8df75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mqtt-bench/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch }:
+
+buildGoPackage rec {
+  name = "mqtt-bench-${version}";
+  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..3f7ce3cc5d5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mrxvt/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, libX11, libXft, libXi, inputproto, libSM, libICE
+, freetype, pkgconfig, which }:
+
+stdenv.mkDerivation {
+  name = "mrxvt-0.5.4";
+
+  buildInputs =
+    [ libX11 libXft libXi inputproto 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/mucommander/default.nix b/nixpkgs/pkgs/applications/misc/mucommander/default.nix
new file mode 100644
index 000000000000..d6153d2268b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mucommander/default.nix
@@ -0,0 +1,84 @@
+{ stdenv, fetchFromGitHub, gradle_3_5, perl, makeWrapper, jre, gsettings-desktop-schemas }:
+
+let
+  version = "0.9.2";
+  name = "mucommander-${version}";
+
+  src = fetchFromGitHub {
+    owner = "mucommander";
+    repo = "mucommander";
+    rev = version;
+    sha256 = "1fvij0yjjz56hsyddznx7mdgq1zm25fkng3axl03iyrij976z7b8";
+  };
+
+  postPatch = ''
+    # there is no .git anyway
+    substituteInPlace build.gradle \
+      --replace "git = org.ajoberstar.grgit.Grgit.open(file('.'))"  "" \
+      --replace "revision = git.head().id"                          "revision = 'abcdefgh'"
+
+    # 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_3_5 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 = "199a9rc1pp9jjwpy83743qhjczfz0d1mkbic6si9bh8l62nw8qc7";
+  };
+
+in stdenv.mkDerivation {
+  inherit name src postPatch;
+  nativeBuildInputs = [ gradle_3_5 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 build
+  '';
+
+  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..02541842c36e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/multibootusb/default.nix
@@ -0,0 +1,59 @@
+{ lib, python36Packages, fetchFromGitHub, libxcb, mtools, p7zip, parted, procps, utillinux, qt5 }:
+python36Packages.buildPythonApplication rec {
+  pname = "multibootusb";
+  name = "${pname}-${version}";
+  version = "9.2.0";
+
+  buildInputs = [
+    python36Packages.dbus-python
+    python36Packages.pyqt5
+    python36Packages.pytest-shutil
+    python36Packages.python
+    python36Packages.pyudev
+    python36Packages.six
+    libxcb
+    mtools
+    p7zip
+    parted
+    procps
+    qt5.full
+    utillinux
+  ];
+
+  src = fetchFromGitHub {
+    owner = "mbusb";
+    repo = pname;
+    rev = "v${version}";
+
+    sha256 = "0wlan0cp6c2i0nahixgpmkm0h4n518gj8rc515d579pqqp91p2h3";
+  };
+
+  # Skip the fixup stage where stuff is shrinked (can't shrink text files)
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    share="$out/share/${pname}"
+    mkdir -p "$share"
+    cp -r data "$share/data"
+    cp -r scripts "$share/scripts"
+    cp "${pname}" "$share/${pname}"
+
+    mkdir "$out/bin"
+    cat > "$out/bin/${pname}" <<EOF
+      #!/bin/sh
+      cd "$share"
+      export PYTHONPATH="$PYTHONPATH:$share"
+      export PATH="$PATH:${parted}/bin:${procps}/bin"
+
+      "${python36Packages.python}/bin/python" "${pname}"
+    EOF
+    chmod +x "$out/bin/${pname}"
+  '';
+
+  meta = with lib; {
+    description = "Multiboot USB creator for Linux live disks";
+    homepage = http://multibootusb.org/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jD91mZM2 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/multimon-ng/default.nix b/nixpkgs/pkgs/applications/misc/multimon-ng/default.nix
new file mode 100644
index 000000000000..3fb268017750
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/multimon-ng/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }:
+let
+  version = "1.1.6";
+in
+stdenv.mkDerivation {
+  name = "multimon-ng-${version}";
+
+  src = fetchFromGitHub {
+    owner = "EliasOenal";
+    repo = "multimon-ng";
+    rev = "${version}";
+    sha256 = "1a166mh73x77yrrnhhhzk44qrkgwav26vpidv1547zj3x3m8p0bm";
+  };
+
+  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;
+    maintainers = with maintainers; [ the-kenny ];
+  };
+}
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..d4f59272c9c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mupdf/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, lib, fetchurl, 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.concatStringsSep "." (lib.lists.take 2
+      (lib.splitString "." (lib.getVersion openjpeg)));
+
+
+in stdenv.mkDerivation rec {
+  version = "1.14.0";
+  name = "mupdf-${version}";
+
+  src = fetchurl {
+    url = "https://mupdf.com/downloads/archive/${name}-source.tar.gz";
+    sha256 = "093p7lv6pgyymagn28n58fs0np928r0i5p2az9cc4gwccwx4hhy4";
+  };
+
+  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 -lmupdfthird
+    Cflags: -I$dev/include
+    EOF
+
+    moveToOutput "bin" "$bin"
+    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
+    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..d15382619397
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mwic/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.7";
+  name = "mwic-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/jwilk/mwic/releases/download/${version}/${name}.tar.gz";
+    sha256 = "0l4anwiiqclymx0awwn4hzaj8n26ycg8nz76wjphsyscn7z2awad";
+  };
+
+  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; [ ];
+  };
+}
+
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..daeb8b159f7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/mysql-workbench/default.nix
@@ -0,0 +1,109 @@
+{ 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
+, 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.13";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz";
+    sha256 = "1p4xy2a5cin1l06j4ixpgp1ynhjdj5gax4fjhznspch3c63jp9hj";
+  };
+
+  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";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake ninja pkgconfig jre swig wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3 gtkmm3 libX11 antlr4_7.runtime.cpp python2 mysql libxml2
+    libmysqlconnectorcpp vsqlite gdal boost libssh openssl
+    libiodbc pcre cairo libuuid libzip libsecret
+    libsigcxx proj
+    # python dependencies:
+    paramiko pycairo pyodbc # sqlanydb
+    # transitive dependencies:
+    libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus
+  ];
+
+  postPatch = ''
+    patchShebangs tools/get_wb_version.sh
+  '';
+
+  NIX_CFLAGS_COMPILE = [
+    # error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated
+    "-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}"
+  ];
+
+  # 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}"
+        wrapProgram "''${file}" "''${gappsWrapperArgs[@]}"
+      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/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/nanoblogger/default.nix b/nixpkgs/pkgs/applications/misc/nanoblogger/default.nix
new file mode 100644
index 000000000000..022829040b81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nanoblogger/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl, stdenv, bash }:
+
+stdenv.mkDerivation rec {
+  version = "3.5-rc1";
+  name = "nanoblogger-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/nanoblogger/${name}.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..9a40e3bc1053
--- /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..3e763f157985
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/navit/default.nix
@@ -0,0 +1,90 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gtk2, fontconfig, freetype, imlib2
+, SDL_image, libGLU_combined, 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 {
+  name = "navit-${version}";
+  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 = 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_combined 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 = http://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..21a5ab0cd0f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/neap/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, python2Packages }:
+
+stdenv.mkDerivation rec {
+  name = "neap-${version}";
+  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..1b800f654340
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/browser/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchurl, pkgconfig, libpng, openssl, curl, gtk2, check, SDL
+, libxml2, libidn, perl, nettools, perlPackages
+, libXcursor, libXrandr, makeWrapper
+, uilib ? "framebuffer"
+, buildsystem
+, nsgenbind
+, libnsfb
+, libwapcaplet
+, libparserutils
+, libcss
+, libhubbub
+, libdom
+, libnsbmp
+, libnsgif
+, libnsutils
+, libutf8proc
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${version}";
+  version = "3.5";
+
+  # UI libs incldue Framebuffer, and gtk
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/netsurf/releases/source/netsurf-${version}-src.tar.gz";
+    sha256 = "1k0x8mzgavfy7q9kywl6kzsc084g1xlymcnsxi5v6jp279nsdwwq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libpng openssl curl gtk2 check libxml2 libidn perl
+    nettools perlPackages.HTMLParser libXcursor libXrandr makeWrapper SDL
+    buildsystem
+    nsgenbind
+    libnsfb
+    libwapcaplet
+    libparserutils
+    libcss
+    libhubbub
+    libdom
+    libnsbmp
+    libnsgif
+    libnsutils
+    libutf8proc
+ ];
+
+  preConfigure = ''
+    cat <<EOF > Makefile.conf
+    override NETSURF_GTK_RESOURCES := $out/share/Netsurf/${uilib}/res
+    override NETSURF_USE_GRESOURCE := YES
+    EOF
+  '';
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+    "TARGET=${uilib}"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/Netsurf/${uilib}
+    cmd=$(case "${uilib}" in framebuffer) echo nsfb;; gtk) echo nsgtk;; esac)
+    cp $cmd $out/bin/netsurf
+    wrapProgram $out/bin/netsurf --set NETSURFRES $out/share/Netsurf/${uilib}/res
+    tar -hcf - ${uilib}/res | (cd $out/share/Netsurf/ && tar -xvpf -)
+  '';
+
+  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..882bb75219d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/buildsystem/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-buildsystem-${version}";
+  version = "1.7";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/buildsystem-${version}.tar.gz";
+    sha256 = "1q23aaycv35ma5471l1gxib8lfq2s9kprrkaqgfc926d04rlbmhw";
+  };
+
+  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.linux;
+  };
+}
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..e97452249bcf
--- /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.6.0";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0qp4p1q1dwgdra4pkrzd081zjzisxkgwx650ijx323j8bj725daf";
+  };
+
+  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..50a6dadadb5c
--- /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.3.0";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1kk6qbqagx5ypiy9kf0059iqdzyz8fqaw336vzhb5gnrzjw3wv4a";
+  };
+
+  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..715196871512
--- /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.3";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "101781iw32p47386fxqr01nrkywi12w17ajh02k2vlga4z8zyv86";
+  };
+
+  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..7e99f8f5b86a
--- /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.3";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0gmvzw1whh7553d6s98vr4ri2whjwrgggcq1z5b160gwjw20mzyy";
+  };
+
+  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..24235f43a114
--- /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.1.4";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "176f8why9gzbaca9nnxjqasl02qzc6g507z5w3dzkcjifnkz4mzl";
+  };
+
+  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..836bfd5f3e0a
--- /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.1.3";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "1a4z45gh0fw4iybf34fig725av25h31ffk0azi0snzh4130cklnk";
+  };
+
+  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.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..1e8dbe271370
--- /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.2";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "03p4xmd08yhj70nyj7acjccmmshs59lv4n4zsqpsn5lgkwa23lzy";
+  };
+
+  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..ed9433b9f570
--- /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.3";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "01gzlsabgl6x0icd8758d9jqs8rrf9574bdkjainn04w3fs3znf5";
+  };
+
+  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/libutf8proc/default.nix b/nixpkgs/pkgs/applications/misc/netsurf/libutf8proc/default.nix
new file mode 100644
index 000000000000..a905f3a12a8f
--- /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 = "1.3.1";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0xf659y3c6ikjnip47r30wv796a34d71p6qhc4xjs64iqszm1sbq";
+  };
+
+  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..509cbeb4503f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/libwapcaplet/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-${libname}-${version}";
+  libname = "libwapcaplet";
+  version = "0.3.0";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/${libname}-${version}-src.tar.gz";
+    sha256 = "0cs1dd2afjgc3wf5gqg434hv6jdabrp9qvlpl4dp53nhkyfywna3";
+  };
+
+  buildInputs = [ buildsystem ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "NSSHARED=${buildsystem}/share/netsurf-buildsystem"
+  ];
+
+  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..971e16848ae7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/netsurf/nsgenbind/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl
+, flex, bison
+, buildsystem
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "netsurf-nsgenbind-${version}";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "http://download.netsurf-browser.org/libs/releases/nsgenbind-${version}-src.tar.gz";
+    sha256 = "16xsazly7gxwywmlkf2xix9b924sj3skhgdak7218l0nc62a08gg";
+  };
+
+  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..7e5a3a7840d7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nix-tour/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, electron } :
+
+stdenv.mkDerivation rec {
+  name = "nix-tour-${version}";
+  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 "#!${stdenv.shell}" > $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..145abfba5d5c
--- /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 {
+  name = "nixnote2-${version}";
+  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..0e60c2bfa16e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nnn/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pkgconfig, ncurses, readline, conf ? null }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "nnn-${version}";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "jarun";
+    repo = "nnn";
+    rev = "v${version}";
+    sha256 = "1vkrhsdwgacln335rjywdf7nj7fg1x55szmm8xrvwda8y2qjqhc4";
+  };
+
+  configFile = optionalString (conf!=null) (builtins.toFile "nnn.h" conf);
+  preBuild = optionalString (conf!=null) "cp ${configFile} nnn.h";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses readline ];
+
+  installFlags = [ "DESTDIR=$(out)" "PREFIX=" ];
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/noice/default.nix b/nixpkgs/pkgs/applications/misc/noice/default.nix
new file mode 100644
index 000000000000..bcf2edd8f2f6
--- /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 {
+  name = "noice-${version}";
+  version = "0.6";
+
+  src = fetchgit {
+    url = "git://git.2f30.org/noice.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "03rwglcy47fh6rb630vws10m95bxpcfv47nxrlws2li2ljam8prw";
+  };
+
+  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/notejot/default.nix b/nixpkgs/pkgs/applications/misc/notejot/default.nix
new file mode 100644
index 000000000000..a687e1046050
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notejot/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, vala_0_40, pkgconfig, meson, ninja, python3, granite
+, gtk3, gnome3, gtksourceview, json-glib, gobject-introspection, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "notejot";
+  version = "1.5.2";
+
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "lainsce";
+    repo = pname;
+    rev = version;
+    sha256 = "17rqyckq7z5cxj3mbfrar1zzgwbzhrx87ps7mm6bf798hwflm9qk";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala_0_40 # should be `elementary.vala` when elementary attribute set is merged
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gnome3.defaultIconTheme # should be `elementary.defaultIconTheme`when elementary attribute set is merged
+    gnome3.libgee
+    granite
+    gtk3
+    gtksourceview
+    json-glib
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  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..828c39d5ed87
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notify-osd-customizable/default.nix
@@ -0,0 +1,47 @@
+{ stdenv
+, dbus-glib
+, fetchurl
+, glib
+, gnome3
+, libnotify
+, libtool
+, libwnck3
+, makeWrapper
+, pkgconfig
+}:
+
+let baseURI = "https://launchpad.net/~leolik/+archive/leolik";
+in stdenv.mkDerivation rec {
+  name = "notify-osd-${version}";
+  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
+    gnome3.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..f602ce9db66a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/notify-osd/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, glib, libwnck3, libnotify, dbus-glib, makeWrapper, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "notify-osd-${version}";
+  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
+    gnome3.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..69f74d66dd01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nrsc5/default.nix
@@ -0,0 +1,52 @@
+{ 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 {
+  name = "nrsc5-${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..816918ca0638
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/nut/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, pkgconfig, neon, libusb, openssl, udev, avahi, freeipmi
+, libtool, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "nut-2.7.4";
+
+  src = fetchurl {
+    url = "http://www.networkupstools.org/source/2.7/${name}.tar.gz";
+    sha256 = "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq";
+  };
+
+  buildInputs = [ neon libusb openssl udev avahi freeipmi libtool ];
+
+  nativeBuildInputs = [ 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.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 = http://www.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/ocropus/default.nix b/nixpkgs/pkgs/applications/misc/ocropus/default.nix
new file mode 100644
index 000000000000..40432c18aa38
--- /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 {
+  name = "ocropus-${version}";
+  version = "20170811";
+
+  src = fetchFromGitHub {
+    sha256 = "0qx0d8yj0w66qglkrmfavp5dh1sky72njfaqii7bnrpv5n4j3q39";
+    rev = "ae84a8edaf0b76135f749ba66fc30c272d0726d0";
+    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..9622689199a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, lib, fetchFromGitHub, python2 }:
+
+let
+  mkOverride = attrname: version: sha256:
+    self: super: {
+      ${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: {
+        inherit version;
+        src = oldAttrs.src.override {
+          inherit version sha256;
+        };
+      });
+    };
+
+  py = python2.override {
+    packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([
+      (mkOverride "flask"       "0.10.1" "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc")
+      (mkOverride "flask_login" "0.2.11" "1rg3rsjs1gwi2pw6vr9jmhaqm9b3vc9c4hfcsvp4y8agbh7g3mc3")
+      (mkOverride "jinja2"      "2.8.1"  "14aqmhkc9rw5w0v311jhixdm6ym8vsm29dhyxyrjfqxljwx1yd1m")
+      (mkOverride "pylru"       "1.0.9"  "0b0pq0l7xv83dfsajsc49jcxzc99kb9jfx1a1dlx22hzcy962dvi")
+      (mkOverride "sarge"       "0.1.4"  "08s8896973bz1gg0pkr592w6g4p6v47bkfvws5i91p9xf8b35yar")
+      (mkOverride "tornado"     "4.5.3"  "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d")
+    ]);
+  };
+
+  ignoreVersionConstraints = [
+    "Click"
+    "Flask-Assets"
+    "Flask-Babel"
+    "Flask-Principal"
+    "PyYAML"
+    "emoji"
+    "flask"
+    "future"
+    "futures"
+    "pkginfo"
+    "psutil"
+    "pyserial"
+    "python-dateutil"
+    "requests"
+    "rsa"
+    "scandir"
+    "semantic_version"
+    "websocket-client"
+    "werkzeug"
+    "wrapt"
+  ];
+
+in py.pkgs.buildPythonApplication rec {
+  pname = "OctoPrint";
+  version = "1.3.9";
+
+  src = fetchFromGitHub {
+    owner  = "foosel";
+    repo   = "OctoPrint";
+    rev    = version;
+    sha256 = "1yqbsfmkx4wiykjrh66a05lhn15qhpc9ay67l37kv8bhdqf2xkj4";
+  };
+
+  propagatedBuildInputs = with py.pkgs; [
+    awesome-slugify flask_assets rsa requests pkginfo watchdog
+    semantic-version flask_principal werkzeug flaskbabel tornado
+    psutil pyserial flask_login netaddr markdown sockjs-tornado
+    pylru pyyaml sarge feedparser netifaces click websocket_client
+    scandir chainmap future dateutil futures wrapt monotonic emoji
+    frozendict
+  ];
+
+  checkInputs = with py.pkgs; [ nose mock ddt ];
+
+  postPatch = ''
+    sed -r -i \
+      ${lib.concatStringsSep "\n" (map (e:
+        ''-e 's@${e}[<>=]+.*@${e}",@g' \''
+      ) ignoreVersionConstraints)}
+      setup.py
+  '';
+
+  checkPhase = "nosetests";
+
+  meta = with stdenv.lib; {
+    homepage = https://octoprint.org/;
+    description = "The snappy web interface for your 3D printer";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
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..2e3bc058280a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
@@ -0,0 +1,111 @@
+{ stdenv, fetchFromGitHub, octoprint, python2Packages }:
+
+let
+  buildPlugin = args: python2Packages.buildPythonPackage (args // {
+    propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ octoprint ];
+    # none of the following have tests
+    doCheck = false;
+  });
+
+  self = {
+
+    # Deprecated alias
+    m3d-fio = self.m33-fio; # added 2016-08-13
+
+    m33-fio = buildPlugin rec {
+      name = "M33-Fio-${version}";
+      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; {
+        homepage = https://github.com/donovan6000/M33-Fio;
+        description = "OctoPrint plugin for the Micro 3D printer";
+        platforms = platforms.all;
+        license = licenses.gpl3;
+        maintainers = with maintainers; [ abbradar ];
+      };
+    };
+
+    mqtt = buildPlugin rec {
+      name = "OctoPrint-MQTT-${version}";
+      version = "0.8.0";
+
+      src = fetchFromGitHub {
+        owner = "OctoPrint";
+        repo = "OctoPrint-MQTT";
+        rev = version;
+        sha256 = "1318pgwy39gkdqgll3q5lwm7avslgdwyiwb5v8m23cgyh5w8cjq7";
+      };
+
+      propagatedBuildInputs = with python2Packages; [ paho-mqtt ];
+
+      meta = with stdenv.lib; {
+        homepage = https://github.com/OctoPrint/OctoPrint-MQTT;
+        description = "Publish printer status MQTT";
+        platforms = platforms.all;
+        license = licenses.agpl3;
+        maintainers = with maintainers; [ peterhoeg ];
+      };
+    };
+
+    titlestatus = buildPlugin rec {
+      name = "OctoPrint-TitleStatus-${version}";
+      version = "0.0.4";
+
+      src = fetchFromGitHub {
+        owner = "MoonshineSG";
+        repo = "OctoPrint-TitleStatus";
+        rev = version;
+        sha256 = "1l78xrabn5hcly2mgxwi17nwgnp2s6jxi9iy4wnw8k8icv74ag7k";
+      };
+
+      meta = with stdenv.lib; {
+        homepage = https://github.com/MoonshineSG/OctoPrint-TitleStatus;
+        description = "Show printers status in window title";
+        platforms = platforms.all;
+        license = licenses.agpl3;
+        maintainers = with maintainers; [ abbradar ];
+      };
+    };
+
+    stlviewer = buildPlugin rec {
+      name = "OctoPrint-STLViewer-${version}";
+      version = "0.4.1";
+
+      src = fetchFromGitHub {
+        owner = "jneilliii";
+        repo = "OctoPrint-STLViewer";
+        rev = "v${version}";
+        sha256 = "1f64s37g2d79g76v0vjnjrc2jp2gwrsnfgx7w3n0hkf1lz1pjkm0";
+      };
+
+      meta = with stdenv.lib; {
+        homepage = https://github.com/jneilliii/Octoprint-STLViewer;
+        description = "A simple stl viewer tab for OctoPrint";
+        platforms = platforms.all;
+        license = licenses.agpl3;
+        maintainers = with maintainers; [ abbradar ];
+      };
+    };
+
+  };
+
+in self
diff --git a/nixpkgs/pkgs/applications/misc/ola/default.nix b/nixpkgs/pkgs/applications/misc/ola/default.nix
new file mode 100644
index 000000000000..e16d9354bb43
--- /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 {
+  name = "ola-${version}";
+  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..660b5db61058
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/omegat.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, unzip, jdk, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  version = "4.1.5.2";
+  pname = "omegat";
+
+  src = fetchurl {  # their zip has repeated files or something, so no fetchzip
+    url = mirror://sourceforge/project/omegat/OmegaT%20-%20Latest/OmegaT%204.1.5%20update%202/OmegaT_4.1.5_02_Beta_Without_JRE.zip;
+    sha256 = "1mdnsvjgsccpd5xwpqzgva5jjp8yd1akq9aqpild4v6k70lqql2b";
+  };
+
+  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..dbd79ba3e1b3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/onboard/default.nix
@@ -0,0 +1,157 @@
+{ fetchurl
+, stdenv
+, aspellWithDicts
+, at-spi2-core ? null
+, atspiSupport ? true
+, bash
+, glib
+, glibcLocales
+, gnome3
+, gobject-introspection
+, gsettings-desktop-schemas
+, gtk3
+, hunspell
+, hunspellDicts
+, hunspellWithDicts
+, intltool
+, isocodes
+, libcanberra-gtk3
+, udev
+, libxkbcommon
+, pkgconfig
+, procps
+, python3
+, wrapGAppsHook
+, xorg
+, yelp
+}:
+
+let
+  customHunspell = hunspellWithDicts [hunspellDicts.en-us];
+  majorVersion = "1.4";
+  version = "${majorVersion}.1";
+in python3.pkgs.buildPythonApplication rec {
+  name = "onboard-${version}";
+  src = fetchurl {
+    url = "https://launchpad.net/onboard/${majorVersion}/${version}/+download/${name}.tar.gz";
+    sha256 = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865";
+  };
+
+  patches = [
+    # Allow loading hunspell dictionaries installed in NixOS system path
+    ./hunspell-use-xdg-datadirs.patch
+  ];
+
+  # For tests
+  LC_ALL = "en_US.UTF-8";
+  doCheck = false;
+  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
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    python3
+    python3.pkgs.dbus-python
+    python3.pkgs.distutils_extra
+    python3.pkgs.pyatspi
+    python3.pkgs.pycairo
+    python3.pkgs.pygobject3
+    python3.pkgs.systemd
+  ];
+
+  buildInputs = [
+    bash
+    gnome3.dconf
+    gsettings-desktop-schemas
+    gtk3
+    hunspell
+    isocodes
+    libcanberra-gtk3
+    udev
+    libxkbcommon
+    wrapGAppsHook
+    xorg.libXtst
+    xorg.libxkbfile
+  ] ++ stdenv.lib.optional atspiSupport at-spi2-core;
+
+  nativeBuildInputs = [
+    glibcLocales
+    gobject-introspection # populate GI_TYPELIB_PATH
+    intltool
+    pkgconfig
+  ];
+
+  propagatedUserEnvPkgs = [
+    gnome3.dconf
+  ];
+
+  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  ./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",'
+  '';
+
+  postInstall = ''
+    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/
+  '';
+
+  meta = {
+    homepage = https://launchpad.net/onboard;
+    description = "An onscreen keyboard useful for tablet PC users and for mobility impaired users.";
+    maintainers = with stdenv.lib.maintainers; [ johnramsden ];
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
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..b87f11d7b05d
--- /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";
+  name = "oneko-${version}";
+  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..8ff9a2f44d55
--- /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 {
+  name = "openbox-menu-${version}";
+  version = "0.8.0";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/fabriceT/openbox-menu/downloads/${name}.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..b8b6e42d5cf5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openbrf/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, qtbase, vcg, glew, qmake, libGLU_combined }:
+
+
+stdenv.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_combined ]}" \
+      $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..120d3a82b5e9
--- /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 {
+  name = "opencpn-${version}";
+  version = "4.8.8";
+
+  src = fetchFromGitHub {
+    owner = "OpenCPN";
+    repo = "OpenCPN";
+    rev = "v${version}";
+    sha256 = "1z9xfc5fgbdslzak3iqg9nx6wggxwv8qwfxfhvfblkyg6kjw30dg";
+  };
+
+  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..fdc4cd5b6d93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/openjump/default.nix
@@ -0,0 +1,39 @@
+{stdenv, fetchurl, unzip}:
+
+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
+    #!/bin/sh
+    cd $dir/bin
+    exec /bin/sh 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..cd9a86e7fac7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/opentx/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchFromGitHub
+, cmake, gcc-arm-embedded, binutils-arm-embedded, python
+, qt5, SDL, gtest
+, dfu-util, avrdude
+}:
+
+let
+
+  version = "2.2.1";
+
+in stdenv.mkDerivation {
+
+  name = "opentx-${version}";
+
+  src = fetchFromGitHub {
+    owner = "opentx";
+    repo = "opentx";
+    rev = version;
+    sha256 = "01lnnkrxach21aivnx1k1iqhih02nixh8c4nk6rpw408p13him9g";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    cmake
+    gcc-arm-embedded binutils-arm-embedded
+  ];
+
+  buildInputs = with qt5; [
+    python python.pkgs.pyqt4
+    qtbase qtmultimedia qttranslations
+    SDL
+  ];
+
+  postPatch = ''
+    sed -i companion/src/burnconfigdialog.cpp -e 's|/usr/.*bin/dfu-util|${dfu-util}/bin/dfu-util|'
+    sed -i companion/src/burnconfigdialog.cpp -e 's|/usr/.*bin/avrdude|${avrdude}/bin/avrdude|'
+  '';
+
+  cmakeFlags = [
+    "-DGTEST_ROOT=${gtest.src}/googletest"
+    "-DQT_TRANSLATIONS_DIR=${qt5.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"
+    "-DNANO=NO"
+  ];
+
+  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://open-tx.org/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = [ "i686-linux" "x86_64-linux" ];
+    maintainers = with maintainers; [ elitak ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/misc/orca/default.nix b/nixpkgs/pkgs/applications/misc/orca/default.nix
new file mode 100644
index 000000000000..f52215fa4a26
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/orca/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, pkgconfig, fetchurl, buildPythonApplication
+, autoreconfHook, wrapGAppsHook, gobject-introspection
+, intltool, 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, setproctitle, gst_all_1, gst-python
+}:
+
+let
+  pname = "orca";
+  version = "3.30.1";
+in buildPythonApplication rec {
+  name = "${pname}-${version}";
+
+  format = "other";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
+    sha256 = "1b9s69frjmghjm1p9a4rrvknl9m0qlwr7mr4lsxkvjnblhsnw0g7";
+  };
+
+  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
+    intltool yelp-tools itstool gobject-introspection
+  ];
+
+  propagatedBuildInputs = [
+    # TODO: re-add liblouis when it is fixed
+    pygobject3 pyatspi dbus-python pyxdg brltty speechd gst-python setproctitle
+  ];
+
+  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
+  ];
+
+  # Run intltoolize to create po/Makefile.in.in
+  preConfigure = ''
+    intltoolize
+  '';
+
+  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 ] ++ gnome3.maintainers;
+    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..bc6aa242f338
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/orpie/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, ocamlPackages, ncurses, gsl }:
+
+stdenv.mkDerivation rec {
+  name = "orpie-${version}";
+  version = "1.5.2";
+
+  src = fetchurl {
+    url = "http://pessimization.com/software/orpie/${name}.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..5787adef2a3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/osm2xmap/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, libroxml, proj, libyamlcpp, boost } :
+
+stdenv.mkDerivation rec {
+  name = "osm2xmap-${version}";
+  version = "2.0";
+
+  src = fetchFromGitHub {
+    sha256 = "1d3f18wzk240yp0q8i2vskhcfj5ar61s4hw83vgps0wr2aglph3w";
+    repo = "osm2xmap";
+    owner = "sembruk";
+    rev = "v${version}";
+  };
+
+  makeFlags = [
+    "GIT_VERSION=$(version)"
+    "GIT_TIMESTAMP="
+    "SHAREDIR=$(out)/share/"
+    "INSTALL_BINDIR=$(out)/bin"
+    "INSTALL_MANDIR=$(out)/share/man/man1"
+    "INSTALL_SHAREDIR=$(out)/share/"
+  ];
+
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  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..bb53782fb7d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/osmctools/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, zlib } :
+
+let
+
+  convert_src = fetchurl {
+    url = http://m.m.i24.cc/osmconvert.c;
+    sha256 = "1mvmb171c1jqxrm80jc7qicwk4kgg7yq694n7ci65g6i284r984x";
+    # version = 0.8.5
+  };
+
+  filter_src = fetchurl {
+    url = http://m.m.i24.cc/osmfilter.c;
+    sha256 = "0vm3bls9jb2cb5b11dn82sxnc22qzkf4ghmnkivycigrwa74i6xl";
+    # version = 1.4.0
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "osmctools-${version}";
+  version = "0.8.5plus1.4.0";
+
+  buildInputs = [ zlib ];
+
+  phases = [ "buildPhase" "installPhase" ];
+
+  buildPhase = ''
+    cc ${convert_src} -lz -O3 -o osmconvert
+    cc ${filter_src} -O3 -o osmfilter
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv osmconvert $out/bin
+    mv osmfilter $out/bin
+  '';
+
+  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
+    ];
+    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..2b35cb770389
--- /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 {
+  name = "osmium-tool-${version}";
+  version = "1.10.0";
+
+  src = fetchFromGitHub {
+    owner = "osmcode";
+    repo = "osmium-tool";
+    rev = "v${version}";
+    sha256 = "1balhz78nva0agmbp8n9vg8fhmdssnd9fjxj20bpw7b45mxhjc20";
+  };
+
+  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..d7f601b50cd8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/overmind/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, tmux, which, makeWrapper }:
+
+buildGoPackage rec {
+  name = "overmind-${version}";
+  version = "1.2.1";
+  goPackagePath = "github.com/DarthSim/overmind";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram "$bin/bin/overmind" --prefix PATH : "${stdenv.lib.makeBinPath [ tmux which ]}"
+  '';
+
+  src = fetchFromGitHub {
+    owner = "DarthSim";
+    repo = "overmind";
+    rev = "v${version}";
+    sha256 = "11ws9rsy8ladjp1y3b6vva9sjmw4s24xc1w18lyhfz63xc908nfw";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/DarthSim/;
+    description = "Process manager for Procfile-based applications and tmux";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.adisbladis ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pbpst/default.nix b/nixpkgs/pkgs/applications/misc/pbpst/default.nix
new file mode 100644
index 000000000000..fcf88200133c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pbpst/default.nix
@@ -0,0 +1,49 @@
+{ 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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pcmanfm/default.nix b/nixpkgs/pkgs/applications/misc/pcmanfm/default.nix
new file mode 100644
index 000000000000..2649c7cbd6a9
--- /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.defaultIconTheme ];
+  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..7fdfbd84d2f6
--- /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 {
+  name = "pcmanx-gtk2-${version}";
+  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..f604684b19a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdf-quench/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, pkgs, pythonPackages, wrapGAppsHook}:
+
+pythonPackages.buildPythonApplication rec {
+  name = "pdf-quench-${version}";
+  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/pdfdiff/default.nix b/nixpkgs/pkgs/applications/misc/pdfdiff/default.nix
new file mode 100644
index 000000000000..ee54904bfd66
--- /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..45d83b5872fa
--- /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 {
+  name = "pdfmod-${version}";
+  version = "0.9.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/pdfmod/0.9/pdfmod-${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/Apps/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..232184c1976c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pdfpc/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, makeWrapper, pkgconfig, vala, gtk3, libgee
+, poppler, libpthreadstubs, gstreamer, gst-plugins-base, librsvg, pcre, gobject-introspection }:
+
+stdenv.mkDerivation rec {
+  name = "${product}-${version}";
+  product = "pdfpc";
+  version = "4.3.0";
+
+  src = fetchFromGitHub {
+    repo = "pdfpc";
+    owner = "pdfpc";
+    rev = "v${version}";
+    sha256 = "1ild2p2lv89yj74fbbdsg3jb8dxpzdamsw0l0xs5h20fd2lsrwcd";
+  };
+
+  nativeBuildInputs = [
+    cmake pkgconfig vala
+    # For setup hook
+    gobject-introspection
+  ];
+  buildInputs = [ gstreamer gst-plugins-base gtk3 libgee poppler
+    libpthreadstubs makeWrapper librsvg pcre ];
+
+  cmakeFlags = stdenv.lib.optionalString stdenv.isDarwin "-DMOVIES=OFF";
+
+  postInstall = ''
+    wrapProgram $out/bin/pdfpc \
+      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+  '';
+
+  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/pell/default.nix b/nixpkgs/pkgs/applications/misc/pell/default.nix
new file mode 100644
index 000000000000..d55c7a2af12b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pell/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, scsh, sox, libnotify }:
+
+stdenv.mkDerivation rec {
+  pname = "pell";
+  version = "0.0.4";
+  name = "${pname}-${version}";
+
+  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..8804e438b7e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/perkeep/default.nix
@@ -0,0 +1,32 @@
+{ buildGo110Package, fetchzip, lib }:
+
+buildGo110Package rec {
+  name = "perkeep-${version}";
+  version = "0.10.1";
+
+  src = fetchzip {
+    url = "https://perkeep.org/dl/perkeep-${version}-src.zip";
+    sha256 = "0rqibc6w4m1r50i2pjcgz1k9dxh18v7jwj4s29y470bc526wv422";
+  };
+
+  goPackagePath = "perkeep.org";
+
+  buildPhase = ''
+    cd "$NIX_BUILD_TOP/go/src/$goPackagePath"
+    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..7e7850668b84
--- /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 {
+  name = "pgadmin3-${version}";
+  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..113a63f7fe18
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pgmanage/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, postgresql, openssl } :
+
+stdenv.mkDerivation rec {
+  name = "pgmanage-${version}";
+  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/phwmon/default.nix b/nixpkgs/pkgs/applications/misc/phwmon/default.nix
new file mode 100644
index 000000000000..0cee74522ab2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/phwmon/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitLab, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  name = "phwmon-${version}";
+  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..626e400eac4b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plank/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, vala, atk, cairo, glib, gnome3, gtk3, libwnck3
+, libX11, libXfixes, libXi, pango, intltool, pkgconfig, libxml2
+, bamf, gdk_pixbuf, libdbusmenu-gtk3, file
+, wrapGAppsHook, autoreconfHook, gobject-introspection }:
+
+stdenv.mkDerivation rec {
+  pname = "plank";
+  version = "0.11.4";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://launchpad.net/${pname}/1.0/${version}/+download/${name}.tar.xz";
+    sha256 = "1f41i45xpqhjxql9nl4a1sz30s0j46aqdhbwbvgrawz6himcvdc8";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    libxml2 # xmllint
+    wrapGAppsHook
+    gobject-introspection
+    autoreconfHook
+  ];
+
+  buildInputs = [ vala atk cairo glib gnome3.gnome-menus
+                  gtk3 gnome3.libgee libwnck3 libX11 libXfixes
+                  libXi pango gnome3.gnome-common bamf gdk_pixbuf
+                  libdbusmenu-gtk3 gnome3.dconf ];
+
+  # fix paths
+  makeFlags = [
+    "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0/"
+    "INTROSPECTION_TYPELIBDIR=$(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 ];
+  };
+}
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..6c23d160f47c
--- /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 {
+  name = "plasma-applet-volumewin7mixer-${version}";
+  version = "23";
+
+  src = fetchFromGitHub {
+    owner = "Zren";
+    repo = "plasma-applet-volumewin7mixer";
+    rev = "v${version}";
+    sha256 = "1j2bq343lnhwqz26qfsvg7vjxv84ibzbc4y86rjkh07nqjwb3xsc";
+  };
+
+  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..e1b6b7fcc464
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/playonlinux/default.nix
@@ -0,0 +1,104 @@
+{ stdenv
+, makeWrapper
+, fetchurl
+, cabextract
+, gettext
+, glxinfo
+, gnupg1compat
+, icoutils
+, imagemagick
+, netcat-gnu
+, p7zip
+, python2Packages
+, unzip
+, wget
+, wine
+, xdg-user-dirs
+, xterm
+, pkgs
+, pkgsi686Linux
+, which
+, curl
+}:
+
+let
+  version = "4.3.3";
+
+  binpath = stdenv.lib.makeBinPath
+    [ cabextract
+      python2Packages.python
+      gettext
+      glxinfo
+      gnupg1compat
+      icoutils
+      imagemagick
+      netcat-gnu
+      p7zip
+      unzip
+      wget
+      wine
+      xdg-user-dirs
+      xterm
+      which
+      curl
+    ];
+
+  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 [ pkgs.xorg.libX11 ];
+
+in stdenv.mkDerivation {
+  name = "playonlinux-${version}";
+
+  src = fetchurl {
+    url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
+    sha256 = "117xivwa87i2w66klplmwd5q7pfxcbrj2rjm11wl8iy5h3xpqkak";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs =
+    [ python2Packages.python
+      python2Packages.wxPython
+      python2Packages.setuptools
+    ];
+
+  patchPhase = ''
+    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 PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
+      --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..b9323ece1f44
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/plover/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, python27Packages, python36Packages, wmctrl }:
+
+{
+  stable = with python27Packages; buildPythonPackage rec {
+    name    = "plover-${version}";
+    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";
+    };
+
+    buildInputs           = [ pytest mock ];
+    propagatedBuildInputs = [
+      six setuptools pyserial appdirs hidapi wxPython xlib wmctrl
+    ];
+  };
+
+  dev = with python36Packages; buildPythonPackage rec {
+    name    = "plover-${version}";
+    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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/pmenu/default.nix b/nixpkgs/pkgs/applications/misc/pmenu/default.nix
new file mode 100644
index 000000000000..b14bb445b5d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pmenu/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitLab, python2Packages, gnome3 }:
+
+stdenv.mkDerivation rec {
+  name = "pmenu-${version}";
+  version = "2018-01-01";
+
+  src = fetchFromGitLab {
+    owner = "o9000";
+    repo = "pmenu";
+    rev = "f98a5bdf20deb0b7f0543e5ce6a8f5574f695e07";
+    sha256 = "131nqafbmbfpgsgss27pz4cyb9fb29m5h1ai1fyvcn286rr9dnp2";
+  };
+
+  nativeBuildInputs = [ python2Packages.wrapPython ];
+
+  buildInputs = [ python2Packages.pygtk gnome3.gnome-menus ];
+
+  pythonPath = [ python2Packages.pygtk ];
+    
+  installPhase = ''
+    mkdir -p $out/bin $out/share/applications
+    ./install.sh $out
+  '';
+
+  postFixup = ''
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    homepage = https://gitlab.com/o9000/pmenu;
+    description = "Start menu for Linux/BSD";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.romildo ];
+  };
+}
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..bcff0db65ab1
--- /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 {
+  name = "polar-bookshelf-${version}";
+  version = "1.5.1";
+
+  # 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 = "1nnbybrzk1ms83490gbw5gakfim0j2c8gp83d9iaqwl4590qgwlg";
+  };
+
+  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..0310b1a2f748
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/polybar/default.nix
@@ -0,0 +1,80 @@
+{ cairo, cmake, fetchgit, libXdmcp, libpthreadstubs, libxcb, pcre, pkgconfig
+, python2, stdenv, xcbproto, xcbutil, xcbutilcursor, xcbutilimage
+, xcbutilrenderutil, xcbutilwm, xcbutilxrm, makeWrapper
+
+# 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 {
+    name = "polybar-${version}";
+    version = "3.2.1";
+    src = fetchgit {
+      url = "https://github.com/jaagr/polybar";
+      rev = version;
+      sha256 = "1z45swj2l0h8x8li7prl963cgl6zm3birsswpij8qwcmjaj5l8vz";
+    };
+
+    meta = with stdenv.lib; {
+      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 = [ maintainers.afldcr ];
+      platforms = platforms.unix;
+    };
+
+    buildInputs = [
+      cairo libXdmcp libpthreadstubs libxcb pcre python2 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)
+    ];
+
+    postConfigure = ''
+      substituteInPlace ../include/settings.hpp --replace \
+        "${stdenv.cc}" "${stdenv.cc.name}"
+    '';
+
+    postInstall = if (i3Support || i3GapsSupport) then ''
+      wrapProgram $out/bin/polybar \
+        --prefix PATH : "${if i3Support then i3 else i3-gaps}/bin"
+    '' else "";
+
+    nativeBuildInputs = [
+      cmake pkgconfig
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/misc/posterazor/default.nix b/nixpkgs/pkgs/applications/misc/posterazor/default.nix
new file mode 100644
index 000000000000..45db856dbb9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/posterazor/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, cmake, unzip, pkgconfig, libXpm, fltk13, freeimage }:
+
+stdenv.mkDerivation rec {
+  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..34144e35bd5a
--- /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..cd3a46ab09ba
--- /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..5ba8e1b6e313
--- /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 {
+  name = "projectlibre-${version}";
+  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/pstree/default.nix b/nixpkgs/pkgs/applications/misc/pstree/default.nix
new file mode 100644
index 000000000000..3cd52af6d321
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pstree/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "pstree-2.39";
+
+  src = fetchurl {
+    urls = [
+      "http://www.sfr-fresh.com/unix/misc/${name}.tar.gz"
+      "https://distfiles.macports.org/pstree/${name}.tar.gz"
+    ];
+    sha256 = "17s7v15c4gryjpi11y1xq75022nkg4ggzvjlq2dkmyg67ssc76vw";
+  };
+
+  unpackPhase = "unpackFile \$src; sourceRoot=.";
+
+  buildPhase = "pwd; $CC -o pstree pstree.c";
+  installPhase = "mkdir -p \$out/bin; cp pstree \$out/bin";
+
+  meta = {
+    description = "Show the set of running processes as a tree";
+    license = "GPL";
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
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..db023c59d7fd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/Gemfile.lock
@@ -0,0 +1,45 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    builder (3.2.2)
+    colored (1.2)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    domain_name (0.5.25)
+      unf (>= 0.0.5, < 1.0.0)
+    highline (1.7.8)
+    hirb (0.7.3)
+    http-cookie (1.0.2)
+      domain_name (~> 0.5)
+    mime-types (2.99)
+    mini_portile2 (2.0.0)
+    netrc (0.11.0)
+    nokogiri (1.6.7.1)
+      mini_portile2 (~> 2.0.0.rc2)
+    nokogiri-happymapper (0.5.9)
+      nokogiri (~> 1.5)
+    pivotal-tracker (0.5.13)
+      builder
+      crack
+      nokogiri (>= 1.5.5)
+      nokogiri-happymapper (>= 0.5.4)
+      rest-client (>= 1.8.0)
+    pt (0.7.3)
+      colored (>= 1.2)
+      highline (>= 1.6.1)
+      hirb (>= 0.4.5)
+      pivotal-tracker (>= 0.4.1)
+    rest-client (1.8.0)
+      http-cookie (>= 1.0.2, < 2.0)
+      mime-types (>= 1.16, < 3.0)
+      netrc (~> 0.7)
+    safe_yaml (1.0.4)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  pt
diff --git a/nixpkgs/pkgs/applications/misc/pt/default.nix b/nixpkgs/pkgs/applications/misc/pt/default.nix
new file mode 100644
index 000000000000..dbda7664bde0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/default.nix
@@ -0,0 +1,16 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv {
+  name = "pt-0.7.3";
+
+  inherit ruby;
+  gemdir = ./.;
+
+  meta = with lib; {
+    description = "Minimalist command-line Pivotal Tracker client";
+    homepage    = http://www.github.com/raul/pt;
+    license     = licenses.mit;
+    maintainers = with maintainers; [ ebzzry ];
+    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..cde3c386fb5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pt/gemset.nix
@@ -0,0 +1,164 @@
+{
+  "builder" = {
+    version = "3.2.2";
+    source = {
+      type = "gem";
+      sha256 = "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2";
+    };
+  };
+  "colored" = {
+    version = "1.2";
+    source = {
+      type = "gem";
+      sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx";
+    };
+  };
+  "crack" = {
+    version = "0.4.3";
+    source = {
+      type = "gem";
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+    };
+    dependencies = [
+      "safe_yaml"
+    ];
+  };
+  "domain_name" = {
+    version = "0.5.25";
+    source = {
+      type = "gem";
+      sha256 = "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav";
+    };
+    dependencies = [
+      "unf"
+    ];
+  };
+  "highline" = {
+    version = "1.7.8";
+    source = {
+      type = "gem";
+      sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr";
+    };
+  };
+  "hirb" = {
+    version = "0.7.3";
+    source = {
+      type = "gem";
+      sha256 = "0mzch3c2lvmf8gskgzlx6j53d10j42ir6ik2dkrl27sblhy76cji";
+    };
+  };
+  "http-cookie" = {
+    version = "1.0.2";
+    source = {
+      type = "gem";
+      sha256 = "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw";
+    };
+    dependencies = [
+      "domain_name"
+    ];
+  };
+  "mime-types" = {
+    version = "2.99";
+    source = {
+      type = "gem";
+      sha256 = "1hravghdnk9qbibxb3ggzv7mysl97djh8n0rsswy3ssjaw7cbvf2";
+    };
+  };
+  "mini_portile2" = {
+    version = "2.0.0";
+    source = {
+      type = "gem";
+      sha256 = "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l";
+    };
+  };
+  "netrc" = {
+    version = "0.11.0";
+    source = {
+      type = "gem";
+      sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
+    };
+  };
+  "nokogiri" = {
+    version = "1.6.7.1";
+    source = {
+      type = "gem";
+      sha256 = "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2";
+    };
+    dependencies = [
+      "mini_portile2"
+    ];
+  };
+  "nokogiri-happymapper" = {
+    version = "0.5.9";
+    source = {
+      type = "gem";
+      sha256 = "0xv5crnzxdbd0ykx1ikfg1h0yw0h70lk607x1g45acsb1da97mkq";
+    };
+    dependencies = [
+      "nokogiri"
+    ];
+  };
+  "pivotal-tracker" = {
+    version = "0.5.13";
+    source = {
+      type = "gem";
+      sha256 = "0vxs69qb0k4g62250zbf5x78wpkhpj98clg2j09ncy3s8yklr0pd";
+    };
+    dependencies = [
+      "builder"
+      "crack"
+      "nokogiri"
+      "nokogiri-happymapper"
+      "rest-client"
+    ];
+  };
+  "pt" = {
+    version = "0.7.3";
+    source = {
+      type = "gem";
+      sha256 = "0bf821yf0zq5bhs65wmx339bm771lcnd6dlsljj3dnisjj068dk8";
+    };
+    dependencies = [
+      "colored"
+      "highline"
+      "hirb"
+      "pivotal-tracker"
+    ];
+  };
+  "rest-client" = {
+    version = "1.8.0";
+    source = {
+      type = "gem";
+      sha256 = "1m8z0c4yf6w47iqz6j2p7x1ip4qnnzvhdph9d5fgx081cvjly3p7";
+    };
+    dependencies = [
+      "http-cookie"
+      "mime-types"
+      "netrc"
+    ];
+  };
+  "safe_yaml" = {
+    version = "1.0.4";
+    source = {
+      type = "gem";
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+    };
+  };
+  "unf" = {
+    version = "0.1.4";
+    source = {
+      type = "gem";
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+    };
+    dependencies = [
+      "unf_ext"
+    ];
+  };
+  "unf_ext" = {
+    version = "0.0.7.1";
+    source = {
+      type = "gem";
+      sha256 = "0ly2ms6c3irmbr1575ldyh52bz2v0lzzr2gagf0p526k12ld2n5b";
+    };
+  };
+}
\ 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..81e316eb0ee9
--- /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/pwsafe/default.nix b/nixpkgs/pkgs/applications/misc/pwsafe/default.nix
new file mode 100644
index 000000000000..7b0e299924cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pwsafe/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, zip, gettext, perl
+, wxGTK31, libXi, libXt, libXtst, xercesc, xextproto
+, libqrencode, libuuid, libyubikey, yubikey-personalization
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pwsafe";
+  version = "1.06";
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "${pname}";
+    repo = "${pname}";
+    rev = "${version}BETA";
+    sha256 = "1q3xi7i4r3nmz3hc79lx8l15sr1nqhwbi3lrnfqr356nv6aaf03y";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig zip ];
+  buildInputs = [
+    gettext perl libqrencode libuuid
+    libXi libXt libXtst wxGTK31 xercesc xextproto
+    libyubikey yubikey-personalization
+  ];
+  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=$(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/pytrainer/default.nix b/nixpkgs/pkgs/applications/misc/pytrainer/default.nix
new file mode 100644
index 000000000000..cdeca96568df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pytrainer/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchFromGitHub, perl, python, sqlite, gpsbabel
+, withWebKit ? false }:
+
+let
+
+  # Pytrainer needs a matplotlib with GTK backend. Also ensure we are
+  # using the pygtk with glade support as needed by pytrainer.
+  matplotlibGtk = python.pkgs.matplotlib.override {
+    enableGtk2 = true;
+    pygtk = python.pkgs.pyGtkGlade;
+  };
+
+in
+
+python.pkgs.buildPythonApplication rec {
+  name = "pytrainer-${version}";
+  version = "1.12.1";
+
+  src = fetchFromGitHub {
+    owner = "pytrainer";
+    repo = "pytrainer";
+    rev = "v${version}";
+    sha256 = "0rzf8kks96qzlknh6g3b9pjq04j7qk6rmz58scp7sck8xz9rjbwx";
+  };
+
+  namePrefix = "";
+
+  patches = [
+    # The test fails in the UTC timezone and C locale.
+    ./fix-test-tz.patch
+
+    # The existing use of pywebkitgtk shows raw HTML text instead of
+    # map. This patch solves the problems by showing the file from a
+    # string, which allows setting an explicit MIME type.
+    ./pytrainer-webkit.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace ./setup.py \
+      --replace "'mysqlclient'," ""
+  '';
+
+  propagatedBuildInputs = with python.pkgs; [
+    dateutil lxml matplotlibGtk pyGtkGlade sqlalchemy sqlalchemy_migrate psycopg2
+  ] ++ stdenv.lib.optional withWebKit [ pywebkitgtk ];
+
+  buildInputs = [ perl gpsbabel sqlite ];
+
+  # This package contains no binaries to patch or strip.
+  dontPatchELF = true;
+  dontStrip = true;
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover
+  '';
+
+  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-test-tz.patch b/nixpkgs/pkgs/applications/misc/pytrainer/fix-test-tz.patch
new file mode 100644
index 000000000000..ca4875769013
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pytrainer/fix-test-tz.patch
@@ -0,0 +1,45 @@
+diff -Nurp source.orig/pytrainer/test/core/test_activity.py source/pytrainer/test/core/test_activity.py
+--- source.orig/pytrainer/test/core/test_activity.py	2018-02-27 22:15:32.078243354 +0100
++++ source/pytrainer/test/core/test_activity.py	2018-02-27 22:16:33.936867052 +0100
+@@ -92,7 +92,7 @@ class ActivityTest(unittest.TestCase):
+         self.assertEquals(self.activity.time, self.activity.duration)
+ 
+     def test_activity_starttime(self):
+-        self.assertEquals(self.activity.starttime, '12:58:23 PM')
++        self.assertEquals(self.activity.starttime, '12:58:23')
+ 
+     def test_activity_time_tuple(self):
+         self.assertEquals(self.activity.time_tuple, (2, 3, 46))
+diff -Nurp source.orig/pytrainer/test/imports/test_garmintcxv2.py source/pytrainer/test/imports/test_garmintcxv2.py
+--- source.orig/pytrainer/test/imports/test_garmintcxv2.py	2018-02-27 22:15:32.079243364 +0100
++++ source/pytrainer/test/imports/test_garmintcxv2.py	2018-02-27 22:17:10.778333751 +0100
+@@ -39,7 +39,7 @@ class GarminTCXv2Test(unittest.TestCase)
+             self.fail()
+ 
+     def test_workout_summary(self):
+-        summary = [(0, False, '2012-10-14T12:02:42', '10.12', '00:39:51', 'Running')]
++        summary = [(0, False, '2012-10-14T10:02:42', '10.12', '00:39:51', 'Running')]
+         try:
+             current_path = os.path.dirname(os.path.abspath(__file__))
+             data_path = os.path.dirname(os.path.dirname(os.path.dirname(current_path))) + "/"
+@@ -52,7 +52,7 @@ class GarminTCXv2Test(unittest.TestCase)
+             self.fail()
+ 
+     def test_summary_in_database(self):
+-        summary = [(0, True, '2012-10-14T12:02:42', '10.12', '00:39:51', 'Running')]
++        summary = [(0, True, '2012-10-14T10:02:42', '10.12', '00:39:51', 'Running')]
+         activity = Activity(date_time_utc='2012-10-14T10:02:42Z', sport_id='1')
+         self.ddbb.session.add(activity)
+         self.ddbb.session.commit(
+diff -Nurp source.orig/pytrainer/test/lib/test_date.py source/pytrainer/test/lib/test_date.py
+--- source.orig/pytrainer/test/lib/test_date.py	2018-05-10 21:15:22.196275555 +0200
++++ source/pytrainer/test/lib/test_date.py	2018-05-10 21:22:43.647870401 +0200
+@@ -47,7 +47,7 @@ class DateFunctionTest(unittest.TestCase
+     def test_getDateTime(self):
+         utctime, localtime = getDateTime('Tue Nov 24 17:29:05 UTC 2015')
+         self.assertEqual(datetime.datetime(2015, 11, 24, 17, 29, 5, tzinfo=tzutc()), utctime)
+-        self.assertEqual(datetime.datetime(2015, 11, 24, 19, 29, 5, tzinfo=tzlocal()), localtime)
++        self.assertEqual(datetime.datetime(2015, 11, 24, 17, 29, 5, tzinfo=tzlocal()), localtime)
+ 
+ class DateRangeTest(unittest.TestCase):
+ 
diff --git a/nixpkgs/pkgs/applications/misc/pytrainer/pytrainer-webkit.patch b/nixpkgs/pkgs/applications/misc/pytrainer/pytrainer-webkit.patch
new file mode 100644
index 000000000000..0f894c46a53b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/pytrainer/pytrainer-webkit.patch
@@ -0,0 +1,14 @@
+diff -Nurp pytrainer-1.10.0-orig/pytrainer/extensions/mapviewer.py pytrainer-1.10.0/pytrainer/extensions/mapviewer.py
+--- pytrainer-1.10.0-orig/pytrainer/extensions/mapviewer.py	2013-03-31 12:28:29.000000000 +0200
++++ pytrainer-1.10.0/pytrainer/extensions/mapviewer.py	2014-12-22 11:44:44.367032126 +0100
+@@ -46,7 +46,9 @@ class MapViewer:
+ 		logging.debug(">>")
+ 		if htmlfile is None:
+ 			htmlfile = self.createErrorHtml()
+-		self.wkview.load_uri("file://%s" % (htmlfile))
++		content = open(htmlfile, 'r').read()
++		self.wkview.load_string(content, 'text/html', 'UTF-8', 'file:///')
++		#self.wkview.load_uri("file://%s" % (htmlfile))
+ 		#self.box.show_all()
+ 		logging.debug("<<")
+ 
diff --git a/nixpkgs/pkgs/applications/misc/qdirstat/default.nix b/nixpkgs/pkgs/applications/misc/qdirstat/default.nix
new file mode 100644
index 000000000000..cbbac11424ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qdirstat/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub, qmake
+, coreutils, xdg_utils, bash
+, perl, makeWrapper, perlPackages }:
+
+let
+  version = "1.4";
+in stdenv.mkDerivation rec {
+  name = "qdirstat-${version}";
+
+  src = fetchFromGitHub {
+    owner = "shundhammer";
+    repo = "qdirstat";
+    rev = "${version}";
+    sha256 = "1ppasbr0mq301q6n3rm0bsmprs7vgkcjmmc0gbgqpgw84nmp9fqh";
+  };
+
+  nativeBuildInputs = [ qmake makeWrapper ];
+
+  buildInputs = [ perl ];
+
+  preBuild = ''
+    substituteInPlace scripts/scripts.pro \
+      --replace /bin/true ${coreutils}/bin/true \
+      --replace /usr/bin $out/bin
+    substituteInPlace src/src.pro \
+      --replace /usr/bin $out/bin \
+      --replace /usr/share $out/share
+    for i in doc/doc.pro doc/stats/stats.pro
+    do
+      substituteInPlace $i \
+        --replace /usr/share $out/share
+    done
+
+    for i in src/MainWindow.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
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/qdirstat-cache-writer \
+      --set PERL5LIB "${stdenv.lib.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/qlcplus/default.nix b/nixpkgs/pkgs/applications/misc/qlcplus/default.nix
new file mode 100644
index 000000000000..eae3216c964f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qlcplus/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, udev
+, qtmultimedia, qtscript, alsaLib, ola, libftdi1, libusb
+, libsndfile, libmad
+}:
+
+mkDerivation rec {
+  name = "qlcplus-${version}";
+  version = "4.11.2";
+
+  src = fetchFromGitHub {
+    owner = "mcallegari";
+    repo = "qlcplus";
+    rev = "QLC+_${version}";
+    sha256 = "0ry7j8d5mm3h3mzd49xqlagnldmfhfr6plwk73pz62hxr4j58s6w";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig ];
+  buildInputs = [
+    udev qtmultimedia qtscript alsaLib ola libftdi1 libusb 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
+  '';
+
+  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 = "http://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..7b2e8bed10e5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qmapshack/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake, qtscript, qtwebengine, gdal, proj, routino, quazip }:
+
+stdenv.mkDerivation rec {
+  name = "qmapshack-${version}";
+  version = "1.12.1";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/maproom/qmapshack/downloads/${name}.tar.gz";
+    sha256 = "1d6n7xk0ksxb1fw43s5lb08vgxf6h93k3rb401cbka1inpyf2232";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtscript qtwebengine gdal proj routino quazip ];
+
+  cmakeFlags = [
+    "-DROUTINO_XML_PATH=${routino}/share/routino"
+    "-DQUAZIP_INCLUDE_DIR=${quazip}/include/quazip"
+    "-DLIBQUAZIP_LIBRARY=${quazip}/lib/libquazip.so"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://bitbucket.org/maproom/qmapshack/wiki/Home;
+    description = "Plan your next outdoor trip";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dotlambda ];
+    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..49993f2f7ea7
--- /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/qpdfview/default.nix b/nixpkgs/pkgs/applications/misc/qpdfview/default.nix
new file mode 100644
index 000000000000..263bc37660c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qpdfview/default.nix
@@ -0,0 +1,44 @@
+{stdenv, fetchurl, qmake, qtbase, qtsvg, pkgconfig, poppler, djvulibre, libspectre, cups
+, file, ghostscript
+}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="qpdfview";
+    version = "0.4.16";
+    name="${baseName}-${version}";
+    url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
+    sha256 = "0zysjhr58nnmx7ba01q3zvgidkgcqxjdj4ld3gx5fc7wzvl1dm7s";
+  };
+  nativeBuildInputs = [ qmake pkgconfig ];
+  buildInputs = [
+    qtbase qtsvg poppler djvulibre libspectre cups file ghostscript
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit nativeBuildInputs buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  qmakeFlags = [
+    "*.pro"
+    "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/qradiolink/default.nix b/nixpkgs/pkgs/applications/misc/qradiolink/default.nix
new file mode 100644
index 000000000000..63906d996ba6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qradiolink/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, alsaLib, boost
+, qt4, libpulseaudio, codec2, libconfig
+, gnuradio, gnuradio-osmosdr, gsm
+, libopus, libjpeg, protobuf, qwt, speex
+} :
+
+let
+  version = "0.5.0";
+
+in stdenv.mkDerivation {
+  name = "qradiolink-${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
+    gnuradio-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/misc/qsstv/default.nix b/nixpkgs/pkgs/applications/misc/qsstv/default.nix
new file mode 100644
index 000000000000..c8401cdbf49e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qsstv/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, qtbase, qmake, makeDesktopItem, openjpeg, pkgconfig, fftw,
+  libpulseaudio, alsaLib, hamlib, libv4l, fftwFloat }:
+
+stdenv.mkDerivation rec {
+  version = "9.2.6";
+  name = "qsstv-${version}";
+
+  src = fetchurl {
+    url = "http://users.telenet.be/on4qz/qsstv/downloads/qsstv_${version}.tar.gz";
+    sha256 = "0sx70yk389fq5djvjwnam6ics5knmg9b5x608bk2sjbfxkila108";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    qmake
+    pkgconfig
+  ];
+
+  buildInputs = [ qtbase openjpeg fftw libpulseaudio alsaLib hamlib libv4l
+                  fftwFloat ];
+
+  desktopItem = makeDesktopItem {
+    name = "QSSTV";
+    exec = "qsstv";
+    icon = "qsstv.png";
+    comment = "Qt-based slow-scan TV and fax";
+    desktopName = "QSSTV";
+    genericName = "qsstv";
+    categories = "Application;HamRadio;";
+  };
+
+  installPhase = ''
+    # Install binary to the right location
+    make install INSTALL_ROOT=$out
+    mv $out/usr/bin $out/
+    rm -r $out/usr
+
+    # Install desktop icon
+    install -D qsstv/icons/qsstv.png $out/share/pixmaps/qsstv.png
+
+    # Install desktop item
+    cp -rv ${desktopItem}/share $out
+  '';
+
+  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/misc/qsyncthingtray/default.nix b/nixpkgs/pkgs/applications/misc/qsyncthingtray/default.nix
new file mode 100644
index 000000000000..6ae8f380fe28
--- /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";
+  name = "qsyncthingtray-${version}";
+
+  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/qtbitcointrader/default.nix b/nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix
new file mode 100644
index 000000000000..444c72602d35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qtbitcointrader/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchzip, qt5 }:
+
+let
+  version = "1.40.30";
+in
+stdenv.mkDerivation {
+  name = "qtbitcointrader-${version}";
+
+  src = fetchzip {
+    url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz";
+    sha256 = "0xbgdmwb8d3lrddcnx2amfsknd3g408f5gy5mdydcm3vqqfi9a0c";
+  };
+
+  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..e03dd65b9eb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qtpass/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, git, gnupg, pass, qtbase, qtsvg, qttools, qmake, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "qtpass-${version}";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner  = "IJHack";
+    repo   = "QtPass";
+    rev    = "v${version}";
+    sha256 = "0pp38b3fifkfwqcb6vi194ccgb8j3zc8j8jq8ww5ib0wvhldzsg8";
+  };
+
+  patches = [ ./hidpi.patch ];
+
+  buildInputs = [ git gnupg pass qtbase qtsvg qttools ];
+
+  nativeBuildInputs = [ makeWrapper qmake ];
+
+  postPatch = ''
+    substituteInPlace qtpass.pro --replace "SUBDIRS += src tests main" "SUBDIRS += src main"
+    substituteInPlace qtpass.pro --replace "main.depends = tests" "main.depends = src"
+  '';
+
+  postInstall = ''
+    install -D qtpass.desktop $out/share/applications/qtpass.desktop
+    install -D artwork/icon.svg $out/share/icons/hicolor/scalable/apps/qtpass-icon.svg
+    wrapProgram $out/bin/qtpass \
+      --suffix PATH : ${git}/bin \
+      --suffix PATH : ${gnupg}/bin \
+      --suffix PATH : ${pass}/bin
+  '';
+
+  meta = with stdenv.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/qtpass/hidpi.patch b/nixpkgs/pkgs/applications/misc/qtpass/hidpi.patch
new file mode 100644
index 000000000000..629bcbb5baca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/qtpass/hidpi.patch
@@ -0,0 +1,13 @@
+diff --git a/main/main.cpp b/main/main.cpp
+index 8a18409c..1cddd911 100644
+--- a/main/main.cpp
++++ b/main/main.cpp
+@@ -35,7 +35,7 @@
+  * @return
+  */
+ int main(int argc, char *argv[]) {
+-  qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
++  QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+   QString text = "";
+   for (int i = 1; i < argc; ++i) {
+     if (i > 1)
diff --git a/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix b/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix
new file mode 100644
index 000000000000..b2616bf7b778
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/quicksynergy/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, pkgconfig, gtk2, synergy}:
+
+stdenv.mkDerivation rec {
+  name = "quicksynergy-${version}";
+  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/ranger/default.nix b/nixpkgs/pkgs/applications/misc/ranger/default.nix
new file mode 100644
index 000000000000..5417a135dda4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ranger/default.nix
@@ -0,0 +1,61 @@
+{ 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.2";
+
+  src = fetchFromGitHub {
+    owner = "ranger";
+    repo = "ranger";
+    rev = "v${version}";
+    sha256= "1ws6g8z1m1hfp8bv4msvbaa9f7948p687jmc8h69yib4jkv3qyax";
+  };
+
+  checkInputs = with python3Packages; [ pytest ];
+  propagatedBuildInputs = [ file ];
+
+  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/redis-desktop-manager/default.nix b/nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix
new file mode 100644
index 000000000000..bf4559e91178
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redis-desktop-manager/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, lib, fetchgit, pkgconfig, libssh2
+, qtbase, qtdeclarative, qtgraphicaleffects, qtimageformats, qtquickcontrols
+, qtsvg, qttools, qtquick1, qtcharts
+, qmake
+}:
+
+let
+  breakpad_lss = fetchgit {
+    url = "https://chromium.googlesource.com/linux-syscall-support";
+    rev = "08056836f2b4a5747daff75435d10d649bed22f6";
+    sha256 = "1ryshs2nyxwa0kn3rlbnd5b3fhna9vqm560yviddcfgdm2jyg0hz";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "redis-desktop-manager-${version}";
+  version = "0.9.1";
+
+  src = fetchgit {
+    url = "https://github.com/uglide/RedisDesktopManager.git";
+    fetchSubmodules = true;
+    rev = "refs/tags/${version}";
+    sha256 = "0yd4i944d4blw8jky0nxl7sfkkj975q4d328rdcbhizwvf6dx81f";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    libssh2 qtbase qtdeclarative qtgraphicaleffects qtimageformats
+    qtquick1 qtquickcontrols qtsvg qttools qtcharts
+  ];
+
+  dontUseQmakeConfigure = true;
+
+  # 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..03b8d709fce2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redshift-plasma-applet/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, cmake, extra-cmake-modules, plasma-framework, kwindowsystem, redshift, fetchFromGitHub, }:
+
+let version = "1.0.18"; in
+
+stdenv.mkDerivation {
+  name = "redshift-plasma-applet-${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..d8512754f6a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/redshift/default.nix
@@ -0,0 +1,93 @@
+{ stdenv, fetchFromGitHub, autoconf, automake, gettext, intltool
+, libtool, pkgconfig, wrapGAppsHook, wrapPython, gobject-introspection
+, gtk3, python, pygobject3, hicolor-icon-theme, 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
+}:
+
+stdenv.mkDerivation rec {
+  name = "redshift-${version}";
+  version = "1.12";
+
+  src = fetchFromGitHub {
+    owner = "jonls";
+    repo = "redshift";
+    rev = "v${version}";
+    sha256 = "12cb4gaqkybp4bkkns8pam378izr2mwhr2iy04wkprs2v92j7bz6";
+  };
+
+  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
+    hicolor-icon-theme
+  ] ++ 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 ]
+    ;
+
+  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;
+
+  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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/regextester/default.nix b/nixpkgs/pkgs/applications/misc/regextester/default.nix
new file mode 100644
index 000000000000..2b902d27a353
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/regextester/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, fetchFromGitHub
+, gettext
+, libxml2
+, pkgconfig
+, glib
+, granite
+, gtk3
+, gnome3
+, meson
+, ninja
+, gobject-introspection
+, gsettings-desktop-schemas
+, vala_0_40
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "regextester-${version}";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "artemanufrij";
+    repo = "regextester";
+    rev = version;
+    sha256 = "1xwwv1hccni1mrbl58f7ly4qfq6738vn24bcbl2q346633cd7kx3";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    meson
+    ninja
+    gettext
+    gobject-introspection
+    libxml2
+    vala_0_40 # should be `elementary.vala` when elementary attribute set is merged
+    wrapGAppsHook
+  ];
+  buildInputs = [
+    glib
+    granite
+    gtk3
+    gnome3.defaultIconTheme
+    gnome3.libgee
+    gsettings-desktop-schemas
+  ];
+
+  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/rescuetime/default.nix b/nixpkgs/pkgs/applications/misc/rescuetime/default.nix
new file mode 100644
index 000000000000..d9cd85d5098a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rescuetime/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, fetchurl, dpkg, patchelf, qt4, libXtst, libXext, libX11, 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 = "06q1jwqsrjvlj820dd4vl80jznwafsqshsg0p6si8qx4721blryz";
+    } else fetchurl {
+      name = "rescuetime-installer.deb";
+      url = "https://www.rescuetime.com/installers/rescuetime_current_amd64.deb";
+      sha256 = "0b56iglg8g45biddwsdn1hmx9gsz4kxr64civwyy7f69f022ppab";
+    };
+in stdenv.mkDerivation {
+  # https://www.rescuetime.com/updates/linux_release_notes.html
+  name = "rescuetime-2.10.0.1322";
+  inherit src;
+  buildInputs = [ dpkg makeWrapper ];
+  # 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 [ qt4 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..be365cb94e4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/robo3t/default.nix
@@ -0,0 +1,78 @@
+{ stdenv, fetchurl, zlib, glib, xorg, dbus, fontconfig, libGL,
+  freetype, xkeyboard_config, makeDesktopItem, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "robo3t-${version}";
+  version = "1.1.1";
+
+  src = fetchurl {
+    url = "https://download.robomongo.org/1.1.1/linux/robo3t-${version}-linux-x86_64-c93c6b0.tar.gz";
+    sha256 = "140cn80vg7c8vpdjasqi4b3kyqj4n033lcm3ikz5674x3jr7r5zs";
+  };
+
+  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;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
+    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..76593eba5fc4
--- /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 {
+  name = "robomongo-${version}";
+  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-menugen/default.nix b/nixpkgs/pkgs/applications/misc/rofi-menugen/default.nix
new file mode 100644
index 000000000000..9b1b01577697
--- /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; [ garbas ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rofi/config.patch b/nixpkgs/pkgs/applications/misc/rofi/config.patch
new file mode 100644
index 000000000000..46982d51e00c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi/config.patch
@@ -0,0 +1,54 @@
+diff --git a/script/rofi-theme-selector b/script/rofi-theme-selector
+index 0646e4bc..f827dbfe 100755
+--- a/script/rofi-theme-selector
++++ b/script/rofi-theme-selector
+@@ -42,34 +42,7 @@ function find_themes()
+     DIRS=${XDG_DATA_DIRS}
+     OLDIFS=${IFS}
+     IFS=:
+-    if [ -z "${XDG_DATA_DIRS}" ]
+-    then
+-        echo "XDG_DATA_DIRS needs to be set for this script to function correctly."
+-        echo -n "Using dirs from \$PATH: "
+-        DIRS=
+-        # Iterate over items in $PATH
+-        for p in ${PATH}; do
+-            # Remove trailing / if exists.
+-            x=${p%/}
+-            # remove both /bin and /sbin and /games from end
+-            x=${x%/bin}
+-            x=${x%/sbin}
+-            x=${x%/games}
+-            # Add /share
+-            x=${x}/share
+-            # Check if entry exists Prepend : so :${x}: matches nicely
+-            case ":${DIRS}" in
+-                *$x:*);;
+-                *) DIRS+="$x:";;
+-            esac
+-        done
+-        # Remove trailing :
+-        DIRS=${DIRS%:}
+-        echo "${DIRS}"
+-    fi
+-    # Add user dir.
+-    DIRS+=":${HOME}/.local/share/"
+-    DIRS+=":${HOME}/.config/"
++    DIRS+=":%ROFIOUT%/"
+     for p in ${DIRS}; do 
+     	p=${p%/}
+         TD=${p}/rofi/themes
+@@ -164,7 +137,12 @@ Current theme: <b>${CUR}</b>"""
+ ###
+ function set_theme()
+ {
+-    CDIR="${HOME}/.config/rofi/"
++    if [ -d "${XDG_CONFIG_HOME}" ]; then
++      CDIR="${XDG_CONFIG_HOME}/rofi/"
++    else
++      CDIR="${HOME}/.config/rofi/"
++    fi
++
+     if [ ! -d "${CDIR}" ]
+     then
+         mkdir -p ${CDIR}
diff --git a/nixpkgs/pkgs/applications/misc/rofi/default.nix b/nixpkgs/pkgs/applications/misc/rofi/default.nix
new file mode 100644
index 000000000000..63b047976b3d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, autoreconfHook, pkgconfig, libxkbcommon, pango, which, git
+, cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification
+, bison, flex, librsvg, check
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.5.1";
+  name = "rofi-unwrapped-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/DaveDavenport/rofi/releases/download/${version}/rofi-${version}.tar.gz";
+    sha256 = "1dc33zf33z38jcxb0lxpyd31waalpf6d4cd9z5f9m5qphdk1g679";
+  };
+
+  # config.patch may be removed in the future - https://github.com/DaveDavenport/rofi/pull/781
+  patches = [ ./config.patch ];
+
+  preConfigure = ''
+    patchShebangs "script"
+    # root not present in build /etc/passwd
+    sed -i 's/~root/~nobody/g' test/helper-expand.c
+  '';
+
+  postFixup = ''
+    substituteInPlace "$out"/bin/rofi-theme-selector \
+        --replace "%ROFIOUT%" "$out/share"
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libxkbcommon pango cairo git bison flex librsvg check
+    libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which
+  ];
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Window switcher, run dialog and dmenu replacement";
+    homepage = https://davedavenport.github.io/rofi;
+    license = licenses.mit;
+    maintainers = with maintainers; [ mbakke garbas ma27 ];
+    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..c2384f56faa1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rofi/wrapper.nix
@@ -0,0 +1,22 @@
+{ stdenv, rofi-unwrapped, makeWrapper, theme ? null }:
+
+if theme == null then rofi-unwrapped else
+stdenv.mkDerivation {
+  name = "rofi-${rofi-unwrapped.version}";
+  buildInputs = [ makeWrapper ];
+  preferLocalBuild = true;
+  passthru.unwrapped = rofi-unwrapped;
+  buildCommand = ''
+    mkdir $out
+    ln -s ${rofi-unwrapped}/* $out
+    rm $out/bin
+    mkdir $out/bin
+    ln -s ${rofi-unwrapped}/bin/* $out/bin
+    rm $out/bin/rofi
+    makeWrapper ${rofi-unwrapped}/bin/rofi $out/bin/rofi --add-flags "-theme ${theme}"
+  '';
+
+  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..11a75e4064f4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/roxterm/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl, docbook_xsl, dbus, dbus-glib, expat
+, gsettings-desktop-schemas, gdk_pixbuf, gtk3, hicolor-icon-theme
+, imagemagick, itstool, librsvg, libtool, libxslt, makeWrapper
+, pkgconfig, python, pythonPackages, vte
+, wrapGAppsHook}:
+
+# TODO: Still getting following warning.
+# WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
+# Seems related to this:
+# https://forums.gentoo.org/viewtopic-t-947210-start-0.html
+
+let version = "3.3.2";
+in stdenv.mkDerivation rec {
+  name = "roxterm-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/roxterm/${name}.tar.xz";
+    sha256 = "0vjh7k4jm4bd01j88w9bmvq27zqsajjzy131fpi81zkii5lisl1k";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+
+  buildInputs =
+    [ docbook_xsl expat imagemagick itstool librsvg libtool libxslt
+      makeWrapper python pythonPackages.lockfile dbus dbus-glib
+      gdk_pixbuf gsettings-desktop-schemas gtk3
+      hicolor-icon-theme vte ];
+
+  NIX_CFLAGS_COMPILE = [ "-I${dbus-glib.dev}/include/dbus-1.0"
+                         "-I${dbus.dev}/include/dbus-1.0"
+                         "-I${dbus.lib}/lib/dbus-1.0/include" ];
+
+  # Fix up python path so the lockfile library is on it.
+  PYTHONPATH = stdenv.lib.makeSearchPathOutput "lib" python.sitePackages [
+    pythonPackages.lockfile
+  ];
+
+  buildPhase = ''
+    # Fix up the LD_LIBRARY_PATH so that expat is on it
+    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${expat.out}/lib"
+
+    python mscript.py configure --prefix="$out" --disable-nls --disable-translations
+    python mscript.py build
+  '';
+
+  installPhase = ''
+    python mscript.py install
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://roxterm.sourceforge.net/;
+    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/rsibreak/default.nix b/nixpkgs/pkgs/applications/misc/rsibreak/default.nix
new file mode 100644
index 000000000000..6ee9966401b5
--- /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/rtl-sdr/default.nix b/nixpkgs/pkgs/applications/misc/rtl-sdr/default.nix
new file mode 100644
index 000000000000..aedc847ee69f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rtl-sdr/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchpatch, fetchgit, cmake, pkgconfig, libusb1 }:
+
+stdenv.mkDerivation rec {
+  name = "rtl-sdr-${version}";
+  version = "0.6.0";
+
+  src = fetchgit {
+    url = "git://git.osmocom.org/rtl-sdr.git";
+    rev = "refs/tags/${version}";
+    sha256 = "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ cmake 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/misc/rtl_433/default.nix b/nixpkgs/pkgs/applications/misc/rtl_433/default.nix
new file mode 100644
index 000000000000..5d012437e6ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rtl_433/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libusb1, rtl-sdr }:
+stdenv.mkDerivation rec {
+
+  version = "18.12";
+  name = "rtl_433-${version}";
+
+  src = fetchFromGitHub {
+    owner = "merbanan";
+    repo = "rtl_433";
+    rev = "18.12";
+    sha256 = "0y73g9ffpsgnmfk8lbihyl9d1fd9v91wsn8k8xhsdmgmn4ra1jk5";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ libusb1 rtl-sdr ];
+
+  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/misc/rtv/default.nix b/nixpkgs/pkgs/applications/misc/rtv/default.nix
new file mode 100644
index 000000000000..05b19bbbff9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rtv/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+with python3Packages;
+buildPythonApplication rec {
+  version = "1.24.0";
+  pname = "rtv";
+
+  src = fetchFromGitHub {
+    owner = "michael-lazar";
+    repo = "rtv";
+    rev = "v${version}";
+    sha256 = "0vzhnqys8nr6ymsi1mnv092z3i7nwyhgnj4jv6mjifak9j3164fw";
+  };
+
+  # 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; [ jgeerds wedens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt/default.nix b/nixpkgs/pkgs/applications/misc/rxvt/default.nix
new file mode 100644
index 000000000000..8e63cdb6d16c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl
+, pkgconfig, libtool
+, libX11, libXt, libXpm }:
+
+stdenv.mkDerivation rec {
+  name = "rxvt-${version}";
+  version = "2.7.10";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/rxvt/${name}.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/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..f872e8008363
--- /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 {
+  name = "urxvt-autocomplete-all-the-things-${version}";
+  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-font-size/default.nix b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix
new file mode 100644
index 000000000000..4f4319af6cbd
--- /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..13e005014f10
--- /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..544789e865b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perls/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "urxvt-perls-${version}";
+  version = "2.2";
+
+  src = fetchFromGitHub {
+    owner = "muennich";
+    repo = "urxvt-perls";
+    rev = version;
+    sha256 = "1cb0jbjmwfy2dlq2ny8wpc04k79jp3pz9qhbmgagsxs3sp1jg2hz";
+  };
+
+  installPhase = ''
+    mkdir -p $out/lib/urxvt/perl
+    cp clipboard \
+       keyboard-select \
+       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-tabbedex/default.nix b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-tabbedex/default.nix
new file mode 100644
index 000000000000..68be8b738de6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-tabbedex/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, perl }:
+
+stdenv.mkDerivation {
+  name = "urxvt-tabbedex-2016-08-17";
+
+  src = fetchFromGitHub {
+    owner = "mina86";
+    repo = "urxvt-tabbedex";
+    rev = "089d0cb724eeb62fa8a5dfcb00ced7761e794149";
+    sha256 = "0a5jrb7ryafj55fgi8fhpy3gmb1xh5j7pbn8p5j5k6s2fnh0g0hq";
+  };
+
+  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..f4a41a89e1c4
--- /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; [ garbas ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.nix b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.nix
new file mode 100644
index 000000000000..2f2c20558031
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.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;
+  };
+  
+}
\ No newline at end of file
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..0e59ef5512d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl, makeDesktopItem, perlSupport, libX11, libXt, libXft,
+  ncurses, perl, fontconfig, freetype, pkgconfig, libXrender,
+  gdkPixbufSupport, gdk_pixbuf, unicode3Support }:
+
+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
+
+stdenv.mkDerivation (rec {
+
+  name = "${pname}${if perlSupport then "-with-perl" else ""}${if unicode3Support then "-with-unicode3" else ""}-${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 ]
+    ++ stdenv.lib.optional perlSupport perl
+    ++ stdenv.lib.optional gdkPixbufSupport gdk_pixbuf;
+
+  outputs = [ "out" "terminfo" ];
+
+  patches = [
+    ./rxvt-unicode-9.06-font-width.patch
+    ./rxvt-unicode-256-color-resources.patch
+  ]
+  ++ stdenv.lib.optional stdenv.isDarwin ./rxvt-unicode-makefile-phony.patch;
+
+  preConfigure =
+    ''
+      mkdir -p $terminfo/share/terminfo
+      configureFlags="--with-terminfo=$terminfo/share/terminfo --enable-256-color ${if perlSupport then "--enable-perl" else "--disable-perl"} ${if unicode3Support then "--enable-unicode3" else "--disable-unicode3"}";
+      export TERMINFO=$terminfo/share/terminfo # without this the terminfo won't be compiled by tic, see man tic
+      NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype.dev}/include/freetype2"
+      NIX_LDFLAGS="$NIX_LDFLAGS -lfontconfig -lXrender "
+    ''
+    # make urxvt find its perl file lib/perl5/site_perl is added to PERL5LIB automatically
+    + stdenv.lib.optionalString perlSupport ''
+      mkdir -p $out/lib/perl5
+      ln -s $out/{lib/urxvt,lib/perl5/site_perl}
+    '';
+
+  postInstall = ''
+    mkdir -p $out/nix-support
+    echo "$terminfo" >> $out/nix-support/propagated-user-env-packages
+    cp -r ${desktopItem}/share/applications/ $out/share/
+  '';
+
+  meta = with stdenv.lib; {
+    inherit description;
+    homepage = http://software.schmorp.de/pkg/rxvt-unicode.html;
+    downloadPage = "http://dist.schmorp.de/rxvt-unicode/Attic/";
+    maintainers = [ ];
+    platforms = platforms.unix;
+    license = licenses.gpl3;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-256-color-resources.patch b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-256-color-resources.patch
new file mode 100644
index 000000000000..c8d2acfbdc51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-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/rxvt-unicode-9.06-font-width.patch b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch
new file mode 100644
index 000000000000..636083218fa5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-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/rxvt-unicode-makefile-phony.patch b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-makefile-phony.patch
new file mode 100644
index 000000000000..5e42e17c156a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-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..909c267def82
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/rxvt_unicode/wrapper.nix
@@ -0,0 +1,21 @@
+{ symlinkJoin, rxvt_unicode, makeWrapper, plugins }:
+
+let
+  rxvt_name = builtins.parseDrvName rxvt_unicode.name;
+
+in symlinkJoin {
+  name = "${rxvt_name.name}-with-plugins-${rxvt_name.version}";
+
+  paths = [ rxvt_unicode ] ++ plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/urxvt \
+      --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl"
+    wrapProgram $out/bin/urxvtd \
+      --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl"
+  '';
+
+  passthru.plugins = plugins;
+}
diff --git a/nixpkgs/pkgs/applications/misc/safeeyes/default.nix b/nixpkgs/pkgs/applications/misc/safeeyes/default.nix
new file mode 100644
index 000000000000..54c2a68fd597
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/safeeyes/default.nix
@@ -0,0 +1,71 @@
+{ 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 {
+  name = "${pname}-${version}";
+  pname = "safeeyes";
+  version = "2.0.6";
+  namePrefix = "";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0s14pxicgq33srvhf6bvfq48wv3z4rlsmzkccz4ky9vh3gfx7zka";
+  };
+
+  buildInputs = [
+    gtk3
+    gobject-introspection
+    gnome3.defaultIconTheme
+    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..33df8e8f0a27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sakura/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, cmake, pkgconfig, gtk3, perl, vte, pcre, glib , makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "sakura-${version}";
+  version = "3.6.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/sakura/trunk/${version}/+download/${name}.tar.bz2";
+    sha256 = "1q463qm41ym7jb3kbzjz7b6x549vmgkb70arpkhsf86yxly1y5m1";
+  };
+
+  nativeBuildInputs = [ cmake perl pkgconfig ];
+
+  buildInputs = [ makeWrapper gtk3 vte pcre 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/sbagen/default.nix b/nixpkgs/pkgs/applications/misc/sbagen/default.nix
new file mode 100644
index 000000000000..6f38ba5662b5
--- /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..280a42fde14c
--- /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";
+  name = "sc-im-${version}";
+
+  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..cc8c30043b29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sdcv/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, glib, gettext, readline }:
+
+stdenv.mkDerivation rec {
+  name = "sdcv-${version}";
+  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..9bbae33b3e41
--- /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..670e2be47164
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sequeler/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, vala, gobject-introspection, gettext, wrapGAppsHook, python3, desktop-file-utils
+, gtk3, glib, granite, libgee, libgda, gtksourceview, libxml2, libsecret }:
+
+
+let
+  version = "0.6.5";
+  sqlGda = libgda.override {
+    mysqlSupport = true;
+    postgresSupport = true;
+  };
+
+in stdenv.mkDerivation rec {
+  name = "sequeler-${version}";
+
+  src = fetchFromGitHub {
+    owner = "Alecaddd";
+    repo = "sequeler";
+    rev = "v${version}";
+    sha256 = "18d0dwrsn69fx1lwm6ihhk2r4996pxiy4hfv608gc1kl4s4f4sqp";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig vala gobject-introspection gettext wrapGAppsHook python3 desktop-file-utils ];
+
+  buildInputs = [ gtk3 glib granite libgee sqlGda gtksourceview libxml2 libsecret ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  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 ];
+    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..fc63745ebb84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sequelpro/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, undmg }:
+
+stdenv.mkDerivation rec {
+  name = "sequel-pro-${version}";
+  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/sigal/default.nix b/nixpkgs/pkgs/applications/misc/sigal/default.nix
new file mode 100644
index 000000000000..e57e9394c105
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sigal/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildPythonApplication, fetchPypi, pythonPackages, ffmpeg }:
+
+buildPythonApplication rec {
+  version = "1.4.1";
+  pname   = "sigal";
+
+  src = fetchPypi {
+    inherit version pname;
+    sha256 = "1fg32ii26j3xpq3cryi212lx9z33qnicm1cszwv1wfpg6sr2rr61";
+  };
+
+  buildInputs = with pythonPackages; [ pytest ];
+  propagatedBuildInputs = with pythonPackages; [
+    jinja2
+    markdown
+    pillow
+    pilkit
+    clint
+    click
+    blinker
+  ];
+
+  makeWrapperArgs = [ "--prefix PATH : ${ffmpeg}/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 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/simplenote/default.nix b/nixpkgs/pkgs/applications/misc/simplenote/default.nix
new file mode 100644
index 000000000000..719b8d32b330
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/simplenote/default.nix
@@ -0,0 +1,64 @@
+{ fetchurl, 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 ,libXScrnSaver, gnome2 }:
+
+stdenv.mkDerivation rec {
+
+  name = "simplenote-${pkgver}";
+  pkgver = "1.1.3";
+
+  src = fetchurl {
+    url = "https://github.com/Automattic/simplenote-electron/releases/download/v${pkgver}/Simplenote-linux-${pkgver}.tar.gz";
+    sha256 = "1z92yyjmg3bgfqfdpnysf98h9hhhnqzdqqigwlmdmn3d7fy49kcf";
+  };
+
+  buildCommand = 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 libcap systemd libnotify libXScrnSaver gnome2.GConf
+      xorg.libxcb
+    ];
+
+    libPathNative = lib.makeLibraryPath packages;
+    libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
+    libPath = "${libPathNative}:${libPath64}";
+
+  in ''
+    mkdir -p $out/share/
+    mkdir -p $out/bin
+    tar xvzf $src -C $out/share/
+    mv $out/share/Simplenote-linux-x64 $out/share/simplenote
+    mv $out/share/simplenote/Simplenote $out/share/simplenote/simplenote
+    mkdir -p $out/share/applications
+
+    cat > $out/share/applications/simplenote.desktop << EOF
+    [Desktop Entry]
+    Name=Simplenote
+    Comment=Simplenote for Linux
+    Exec=$out/bin/simplenote
+    Icon=$out/share/simplenote/Simplenote.png
+    Type=Application
+    StartupNotify=true
+    Categories=Development;
+    EOF
+
+    fixupPhase
+
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}:$out/share/simplenote" \
+      $out/share/simplenote/simplenote
+
+    ln -s $out/share/simplenote/simplenote $out/bin/simplenote
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The simplest way to keep notes";
+    homepage = https://github.com/Automattic/simplenote-electron;
+    license = licenses.lgpl2;
+    platforms = [ "x86_64-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..fc6be074a079
--- /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 {
+  name = "slade-${version}";
+  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..9ee30d347b0a
--- /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..cf5c4625c952
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sleepyhead/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchgit, qt5, zlib, libGLU, libX11 }:
+
+let
+  name = "sleepyhead-${version}";
+  version = "1.0.0-beta-git";
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchgit {
+    url = https://gitlab.com/sleepyhead/sleepyhead-code.git;
+    rev = "9e2329d8bca45693231b5e3dae80063717c24578";
+    sha256 = "0448z8gyaxpgpnksg34lzmffj36jdpm0ir4xxa5gvzagkx0wk07h";
+  };
+
+  buildInputs = [
+    qt5.qtbase qt5.qtwebkit qt5.qtserialport
+    zlib
+    libGLU
+    libX11
+  ];
+
+  patchPhase = ''
+    patchShebangs configure
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp sleepyhead/SleepyHead $out/bin
+  '';
+
+  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/default.nix b/nixpkgs/pkgs/applications/misc/slic3r/default.nix
new file mode 100644
index 000000000000..7b28462d5527
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slic3r/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchgit, perl, makeWrapper, makeDesktopItem
+, which, perlPackages, boost
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.3.0";
+  name = "slic3r-${version}";
+
+  src = fetchgit {
+    url = "git://github.com/alexrj/Slic3r";
+    rev = version;
+    sha256 = "1pg4jxzb7f58ls5s8mygza8kqdap2c50kwlsdkf28bz1xi611zbi";
+  };
+
+  buildInputs = 
+  [boost] ++ 
+  (with perlPackages; [ perl makeWrapper which
+    EncodeLocale MathClipper ExtUtilsXSpp threads
+    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
+  '';
+
+  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 = http://slic3r.org/;
+    license = licenses.agpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bjornfor the-kenny ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/slic3r/prusa3d.nix b/nixpkgs/pkgs/applications/misc/slic3r/prusa3d.nix
new file mode 100644
index 000000000000..251ee4d918b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/slic3r/prusa3d.nix
@@ -0,0 +1,132 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, which, cmake, perl, perlPackages,
+  boost, tbb, wxGTK30, pkgconfig, gtk3, fetchurl, gtk2, libGLU,
+  glew, eigen, curl, gtest, nlopt, pcre, xorg }:
+let
+  AlienWxWidgets = perlPackages.buildPerlPackage rec {
+    name = "Alien-wxWidgets-0.69";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MD/MDOOTSON/${name}.tar.gz";
+      sha256 = "075m880klf66pbcfk0la2nl60vd37jljizqndrklh5y4zvzdy1nr";
+    };
+    propagatedBuildInputs = [
+      pkgconfig perlPackages.ModulePluggable perlPackages.ModuleBuild
+      gtk2 gtk3 wxGTK30
+    ];
+  };
+
+  Wx = perlPackages.Wx.overrideAttrs (oldAttrs: {
+    propagatedBuildInputs = [
+      perlPackages.ExtUtilsXSpp
+      AlienWxWidgets
+    ];
+  });
+
+  WxGLCanvas = perlPackages.buildPerlPackage rec {
+    name = "Wx-GLCanvas-0.09";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/M/MB/MBARBON/${name}.tar.gz";
+      sha256 = "1q4gvj4gdx4l8k4mkgiix24p9mdfy1miv7abidf0my3gy2gw5lka";
+    };
+    propagatedBuildInputs = [ Wx perlPackages.OpenGL libGLU ];
+    doCheck = false;
+  };
+in
+stdenv.mkDerivation rec {
+  name = "slic3r-prusa-edition-${version}";
+  version = "1.41.2";
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+  ];
+
+  buildInputs = [
+    curl
+    eigen
+    glew
+    pcre
+    perl
+    tbb
+    which
+    Wx
+    WxGLCanvas
+    xorg.libXdmcp
+    xorg.libpthreadstubs
+  ] ++ checkInputs ++ (with perlPackages; [
+    boost
+    ClassXSAccessor
+    EncodeLocale
+    ExtUtilsMakeMaker
+    ExtUtilsTypemapsDefault
+    ExtUtilsXSpp
+    GrowlGNTP
+    ImportInto
+    IOStringy
+    locallib
+    LWP
+    MathClipper
+    MathConvexHullMonotoneChain
+    MathGeometryVoronoi
+    MathPlanePath
+    ModuleBuildWithXSpp
+    Moo
+    NetDBus
+    OpenGL
+    threads
+    XMLSAX
+  ]);
+
+  checkInputs = [ gtest ];
+
+  # The build system uses custom logic - defined in
+  # xs/src/libnest2d/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 need to set the path via the NLOPT environment variable instead.
+  NLOPT = "${nlopt}";
+
+  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
+
+    # PERL_VENDORARCH and PERL_VENDORLIB aren't set correctly by the build
+    # system, so we have to override them. Setting them as environment variables
+    # doesn't work though, so substituting the paths directly in CMakeLists.txt
+    # seems to be the easiest way.
+    sed -i "s|\''${PERL_VENDORARCH}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt
+    sed -i "s|\''${PERL_VENDORLIB}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt
+  '' + lib.optionalString (lib.versionOlder "2.5" nlopt.version) ''
+    # 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' xs/src/libnest2d/cmake_modules/FindNLopt.cmake
+  '';
+
+  postInstall = ''
+    echo 'postInstall'
+    wrapProgram "$out/bin/slic3r-prusa3d" \
+    --prefix PERL5LIB : "$out/lib/slic3r-prusa3d:$PERL5LIB"
+
+    # it seems we need to copy the icons...
+    mkdir -p $out/bin/var
+    cp -r ../resources/icons/* $out/bin/var/
+    cp -r ../resources $out/bin/
+  '';
+
+  src = fetchFromGitHub {
+    owner = "prusa3d";
+    repo = "Slic3r";
+    sha256 = "046ircwc0wr586v7106ys557ypslmyq9p4qgi34ads1d6bgxhlyy";
+    rev = "version_${version}";
+  };
+
+  meta = with stdenv.lib; {
+    description = "G-code generator for 3D printer";
+    homepage = https://github.com/prusa3d/Slic3r;
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ tweber ];
+    broken = stdenv.hostPlatform.isAarch64;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/slmenu/default.nix b/nixpkgs/pkgs/applications/misc/slmenu/default.nix
new file mode 100644
index 000000000000..193bcf205f5b
--- /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..f4a2e889cd43
--- /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 {
+  name = "slstatus-${version}";
+  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/soapyairspy/default.nix b/nixpkgs/pkgs/applications/misc/soapyairspy/default.nix
new file mode 100644
index 000000000000..1d8056ca1e81
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapyairspy/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake
+, airspy, soapysdr
+} :
+
+let
+  version = "0.1.2";
+
+in stdenv.mkDerivation {
+  name = "soapyairspy-${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/misc/soapybladerf/default.nix b/nixpkgs/pkgs/applications/misc/soapybladerf/default.nix
new file mode 100644
index 000000000000..bab829e05e3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapybladerf/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, libbladeRF, soapysdr
+} :
+
+let
+  version = "0.4.0";
+
+in stdenv.mkDerivation {
+  name = "soapybladerf-${version}";
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyBladeRF";
+    rev = "soapy-bladerf-${version}";
+    sha256 = "1gf1azfydw033nlg2bgs9cbsbp9npjdrgjwlsffn0d9x0qbgxjqp";
+  };
+
+  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/misc/soapyhackrf/default.nix b/nixpkgs/pkgs/applications/misc/soapyhackrf/default.nix
new file mode 100644
index 000000000000..2c5dd058ced3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapyhackrf/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, hackrf, soapysdr
+} :
+
+let
+  version = "0.3.3";
+
+in stdenv.mkDerivation {
+  name = "soapyhackrf-${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/misc/soapyremote/default.nix b/nixpkgs/pkgs/applications/misc/soapyremote/default.nix
new file mode 100644
index 000000000000..f6970c156b8f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapyremote/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, cmake, soapysdr, avahi }:
+
+let
+  version = "0.5.0";
+
+in stdenv.mkDerivation {
+  name = "soapyremote-${version}";
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyRemote";
+    rev = "soapy-remote-${version}";
+    sha256 = "1lyjhf934zap61ky7rbk46bp8s8sjk8sgdyszhryfyf571jv9b2i";
+  };
+
+  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/misc/soapyrtlsdr/default.nix b/nixpkgs/pkgs/applications/misc/soapyrtlsdr/default.nix
new file mode 100644
index 000000000000..d85fe347cd74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapyrtlsdr/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, rtl-sdr, soapysdr
+} :
+
+let
+  version = "0.3.0";
+
+in stdenv.mkDerivation {
+  name = "soapyrtlsdr-${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/misc/soapysdr/default.nix b/nixpkgs/pkgs/applications/misc/soapysdr/default.nix
new file mode 100644
index 000000000000..f14b560bf52c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapysdr/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, lib, lndir, makeWrapper
+, fetchFromGitHub, cmake
+, libusb, pkgconfig
+, python, swig2, numpy, ncurses
+, extraPackages ? []
+} :
+
+let
+  version = "0.7.0";
+
+in stdenv.mkDerivation {
+  name = "soapysdr-${version}";
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapySDR";
+    rev = "soapy-sdr-${version}";
+    sha256 = "14fjwnfj7jz9ixvim2gy4f52y6s7d4xggzxn2ck7g4q35d879x13";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ libusb ncurses numpy swig2 python makeWrapper ];
+
+  cmakeFlags = [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-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 : ${lib.makeSearchPath "lib/SoapySDR/modules0.6" extraPackages}
+    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/misc/soapyuhd/default.nix b/nixpkgs/pkgs/applications/misc/soapyuhd/default.nix
new file mode 100644
index 000000000000..4f2a79c97fe2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/soapyuhd/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, uhd, boost, soapysdr
+} :
+
+let
+  version = "0.3.4";
+
+in stdenv.mkDerivation {
+  name = "soapyuhd-${version}";
+
+  src = fetchFromGitHub {
+    owner = "pothosware";
+    repo = "SoapyUHD";
+    rev = "soapy-uhd-${version}";
+    sha256 = "1da7cjcvfdqhgznm7x14s1h7lwz5lan1b48akw445ah1vxwvh4hl";
+  };
+
+  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/misc/solaar/default.nix b/nixpkgs/pkgs/applications/misc/solaar/default.nix
new file mode 100644
index 000000000000..cb64365a944f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/solaar/default.nix
@@ -0,0 +1,42 @@
+{fetchFromGitHub, stdenv, gtk3, pythonPackages, gobject-introspection}:
+pythonPackages.buildPythonApplication rec {
+  name = "solaar-unstable-${version}";
+  version = "2018-02-02";
+  namePrefix = "";
+  src = fetchFromGitHub {
+    owner = "pwr";
+    repo = "Solaar";
+    rev = "59b7285fdfc875119f0c92cfd5f5909e8a8e578c";
+    sha256 = "0zy5vmjzdybnjf0mpp8rny11sc43gmm8172svsm9s51h7x0v83y3";
+  };
+
+  propagatedBuildInputs = [pythonPackages.pygobject3 pythonPackages.pyudev gobject-introspection gtk3];
+  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"
+  '';
+
+  enableParallelBuilding = true;
+  meta = with stdenv.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.github.io/Solaar/;
+    platforms = platforms.linux;
+    maintainers = [maintainers.spinus maintainers.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..9f20b20f7f3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/spacefm/default.nix
@@ -0,0 +1,53 @@
+{ 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 {
+  name = "spacefm-${version}";
+  version = "1.0.6";
+
+  src = fetchFromGitHub {
+    owner = "IgnorantGuru";
+    repo = "spacefm";
+    rev = "${version}";
+    sha256 = "089r6i40lxcwzp60553b18f130asspnzqldlpii53smz52kvpirx";
+  };
+
+  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/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..a1d5ef153bbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sqliteman/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, cmake, qt4, qscintilla }:
+
+stdenv.mkDerivation rec {
+  name = "sqliteman-${version}";
+  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..aee486ddf0c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/ssocr/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, imlib2, libX11 }:
+
+stdenv.mkDerivation rec {
+  name = "ssocr-${version}";
+  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/st/default.nix b/nixpkgs/pkgs/applications/misc/st/default.nix
new file mode 100644
index 000000000000..f8340b1bd227
--- /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.1";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/st/${name}.tar.gz";
+    sha256 = "09k94v3n20gg32xy7y68p96x9dq5msl80gknf9gbvlyjp3i0zyy4";
+  };
+
+  inherit patches;
+
+  configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
+  preBuild = 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..b63a41bb9156
--- /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.1";
+  name = "xst-${version}";
+in stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchFromGitHub {
+    owner = "neeasade";
+    repo = "xst";
+    rev = "v${version}";
+    sha256 = "1fh4y2w0icaij99kihl3w8j5d5b38d72afp17c81pi57f43ss6pc";
+  };
+
+  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..6d6382faccd4
--- /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 = with stdenv.lib.maintainers; [ ];
+    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..d3cd81f7f13a
--- /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 {
+  name = "stog-${version}";
+  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/stupidterm/default.nix b/nixpkgs/pkgs/applications/misc/stupidterm/default.nix
new file mode 100644
index 000000000000..483fb9cf95a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stupidterm/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, pkgconfig, vte, gtk }:
+
+stdenv.mkDerivation rec {
+  name = "stupidterm-2018-09-25";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ vte gtk ];
+
+  src = fetchFromGitHub {
+    owner = "esmil";
+    repo = "stupidterm";
+    rev = "d1bc020797330df83d427e361d3620e346a4e792";
+    sha256 = "1yh2vhq3d0qbh0dh2h9yc7s9gkffgkb987vvwz2bdnvlskrjmmdj";
+  };
+
+  makeFlags = "PKGCONFIG=${pkgconfig}/bin/pkg-config binary=stupidterm";
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/applications $out/share/stupidterm
+    cp stupidterm $out/bin
+    substituteAll ${./stupidterm.desktop} $out/share/applications/stupidterm.desktop
+    substituteAll stupidterm.ini $out/share/stupidterm/stupidterm.ini
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple wrapper around the VTE terminal emulator widget for GTK+";
+    longDescription = ''
+      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/stupidterm/stupidterm.desktop b/nixpkgs/pkgs/applications/misc/stupidterm/stupidterm.desktop
new file mode 100644
index 000000000000..c26d46060183
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/stupidterm/stupidterm.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=20170315
+Name=stupidterm
+Comment=VTE based terminal emulator
+Exec=stupidterm
+Icon=utilities-terminal
+Terminal=false
+Type=Application
+Categories=System;TerminalEmulator;
diff --git a/nixpkgs/pkgs/applications/misc/styx/default.nix b/nixpkgs/pkgs/applications/misc/styx/default.nix
new file mode 100644
index 000000000000..f9779beec0f4
--- /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 {
+  name    = "styx-${version}";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner  = "styx-static";
+    repo   = "styx";
+    rev    = "v${version}";
+    sha256 = "01lklz7l9klqmmsncikwjnk3glzyz15c30118s82yd1chwpwhpfl";
+  };
+
+  server = "${caddy.bin}/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/default.nix b/nixpkgs/pkgs/applications/misc/subsurface/default.nix
new file mode 100644
index 000000000000..50bb1df2eef2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/subsurface/default.nix
@@ -0,0 +1,111 @@
+{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook, cmake, makeWrapper, pkgconfig, qmake
+, curl, grantlee, libgit2, libusb, libssh2, libxml2, libxslt, libzip, zlib
+, qtbase, qtconnectivity, qtlocation, qtsvg, qttools, qtwebkit, libXcomposite
+}:
+
+let
+  version = "4.8.2";
+
+  libdc = stdenv.mkDerivation rec {
+    name = "libdivecomputer-ssrf-${version}";
+
+    src = fetchurl {
+      url = "https://subsurface-divelog.org/downloads/libdivecomputer-subsurface-branch-${version}.tgz";
+      sha256 = "167qan59raibmilkc574gdqxfjg2f5ww2frn86xzk2kn4qg8190w";
+    };
+
+    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 {
+    name = "googlemaps-${version}";
+
+    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 rec {
+  name = "subsurface-${version}";
+
+  src = fetchurl {
+    url = "https://subsurface-divelog.org/downloads/Subsurface-${version}.tgz";
+    sha256 = "1fzrq6rqb6pzs36wxar2453cl509dqpcy9w7nq4gw7b1v2331wfy";
+  };
+
+  buildInputs = [
+    libdc googlemaps
+    curl grantlee libgit2 libssh2 libusb libxml2 libxslt libzip
+    qtbase qtconnectivity qtsvg qttools qtwebkit
+  ];
+
+  nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
+
+  cmakeFlags = [
+    "-DLIBDC_FROM_PKGCONFIG=ON"
+    "-DNO_PRINTING=OFF"
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/subsurface \
+      --prefix QT_PLUGIN_PATH : "${googlemaps}/${googlemaps.pluginsSubdir}"
+  '';
+
+  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..8102375479be
--- /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..3c56a6a046fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sweethome3d/default.nix
@@ -0,0 +1,101 @@
+{ lib, stdenv, fetchurl, fetchcvs, makeWrapper, makeDesktopItem, jdk, jre, ant
+, gtk3, gsettings-desktop-schemas, p7zip, libXxf86vm }:
+
+let
+
+  getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
+
+  # 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 =
+  { name, module, version, src, license, description, desktopName, icons }:
+
+  stdenv.mkDerivation rec {
+    inherit name version src description;
+    exec = stdenv.lib.toLower module;
+    sweethome3dItem = makeDesktopItem {
+      inherit exec desktopName;
+      name = getDesktopFileName name;
+      icon = getDesktopFileName name;
+      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 (getDesktopFileName name) 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 rec {
+
+  application = mkSweetHome3D rec {
+    version = "5.4";
+    module = "SweetHome3D";
+    name = stdenv.lib.toLower module + "-application-" + version;
+    description = "Design and visualize your future home";
+    license = stdenv.lib.licenses.gpl2Plus;
+    src = fetchcvs {
+      cvsRoot = ":pserver:anonymous@sweethome3d.cvs.sourceforge.net:/cvsroot/sweethome3d";
+      sha256 = "09sk4svmaiw8dabcya3407iq5yjwxbss8pik1rzalrlds2428vyw";
+      module = module;
+      tag = "V_" + d2u version;
+    };
+    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..eef5185aaeed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/sweethome3d/editors.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchcvs, makeWrapper, makeDesktopItem, jdk, jre, ant
+, gtk3, gsettings-desktop-schemas, sweethome3dApp }:
+
+let
+
+  sweetExec = with stdenv.lib;
+    m: "sweethome3d-"
+    + removeSuffix "libraryeditor" (toLower m)
+    + "-editor";
+  sweetName = m: v: sweetExec m + "-" + v;
+
+  getDesktopFileName = drvName: (builtins.parseDrvName drvName).name;
+
+  mkEditorProject =
+  { name, module, version, src, license, description, desktopName }:
+
+  stdenv.mkDerivation rec {
+    application = sweethome3dApp;
+    inherit name module version src description;
+    exec = sweetExec module;
+    editorItem = makeDesktopItem {
+      inherit exec desktopName;
+      name = getDesktopFileName name;
+      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";
+    name = sweetName module version;
+    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";
+    name = sweetName module version;
+    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..ebae6fd7cfed
--- /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_0_38, hicolor-icon-theme, gobject-introspection
+}:
+
+let
+  version = "0.2.99.4";
+in stdenv.mkDerivation rec {
+  name = "synapse-${version}";
+
+  src = fetchurl {
+    url = "https://launchpad.net/synapse-project/0.3/${version}/+download/${name}.tar.xz";
+    sha256 = "1g6x9knb4jy1d8zgssjhzkgac583137pibisy9whjs8mckaj4k1j";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig gettext vala_0_38
+    # For setup hook
+    gobject-introspection
+  ];
+  buildInputs = [
+    glib libnotify gtk3 libgee keybinder3 json-glib zeitgeist
+    hicolor-icon-theme
+  ];
+
+  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..f16a0d29c40d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/syncthing-tray/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, buildGoPackage, pkgconfig, libappindicator-gtk3 }:
+
+buildGoPackage rec {
+  name = "syncthing-tray-${version}";
+  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/synergy/default.nix b/nixpkgs/pkgs/applications/misc/synergy/default.nix
new file mode 100644
index 000000000000..5f12bdb4dfcd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, fetchurl, cmake, xlibsWrapper
+, ApplicationServices, Carbon, Cocoa, CoreServices, ScreenSaver
+, libX11, libXi, libXtst, libXrandr, xinput, curl, openssl, unzip }:
+
+stdenv.mkDerivation rec {
+  name = "synergy-${version}";
+  version = "1.8.8";
+
+  src = fetchFromGitHub {
+    owner = "symless";
+    repo = "synergy-core";
+    rev = "v${version}-stable";
+    sha256 = "0ksgr9hkf09h54572p7k7b9zkfhcdb2g2d5x7ixxn028y8i3jyp3";
+  };
+
+  patches = [./openssl-1.1.patch ./update_gtest_gmock.patch
+  ] ++ lib.optional stdenv.isDarwin ./respect_macos_arch.patch;
+
+  patch_gcc6 = fetchpatch {
+    url = https://raw.githubusercontent.com/gentoo/gentoo/20e2bff3697ebf5f291e9907b34aae3074a36b53/dev-cpp/gmock/files/gmock-1.7.0-gcc6.patch;
+    sha256 = "0j3f381x1lf8qci9pfv6mliggl8qs2w05v5lw3rs3gn7aibg174d";
+  };
+
+  # Due to the included gtest and gmock not supporting clang
+  # we replace it with 1.7.0 for synergy-1.8.8. This should
+  # become unnecessary when we update to a newer version of Synergy.
+  gmock_zip = fetchurl {
+    url = https://github.com/google/googlemock/archive/release-1.7.0.zip;
+    sha256 = "11bd04098rzamv7f9y01zaf9c8zrmzdk6g1qrlwq780pxzlr4ya0";
+  };
+
+  gtest_zip = fetchurl {
+    url = https://github.com/google/googletest/archive/release-1.7.0.zip;
+    sha256 = "1l5n6kzdypjzjrz2jh14ylzrx735lccfx2p3s4ccgci8g9abg35m";
+  };
+
+  postPatch = ''
+    ${unzip}/bin/unzip -d ext/ ${gmock_zip}
+    ${unzip}/bin/unzip -d ext/ ${gtest_zip}
+    mv ext/googlemock-release-1.7.0 ext/gmock-1.7.0
+    mv ext/googletest-release-1.7.0 ext/gtest-1.7.0
+    patch -d ext/gmock-1.7.0 -p1 -i ${patch_gcc6}
+  ''
+    # We have XRRNotifyEvent (libXrandr), but with the upstream CMakeLists.txt
+    # it's not able to find it (it's trying to search the store path of libX11
+    # instead) and we don't get XRandR support, even though the CMake output
+    # _seems_ to say so:
+    #
+    #   Looking for XRRQueryExtension in Xrandr - found
+    #
+    # The relevant part however is:
+    #
+    #   Looking for XRRNotifyEvent - not found
+    #
+    # So let's force it:
+  + lib.optionalString stdenv.isLinux ''
+    sed -i -e '/HAVE_X11_EXTENSIONS_XRANDR_H/c \
+      set(HAVE_X11_EXTENSIONS_XRANDR_H true)
+    ' CMakeLists.txt
+  '';
+
+  cmakeFlags = lib.optionals stdenv.isDarwin [ "-DOSX_TARGET_MAJOR=10" "-DOSX_TARGET_MINOR=7" ];
+
+  buildInputs = [
+    cmake curl openssl
+  ] ++ lib.optionals stdenv.isDarwin [
+    ApplicationServices Carbon Cocoa CoreServices ScreenSaver
+  ] ++ lib.optionals stdenv.isLinux [ xlibsWrapper libX11 libXi libXtst libXrandr xinput ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ../bin/synergyc $out/bin
+    cp ../bin/synergys $out/bin
+    cp ../bin/synergyd $out/bin
+  '';
+
+  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/openssl-1.1.patch b/nixpkgs/pkgs/applications/misc/synergy/openssl-1.1.patch
new file mode 100644
index 000000000000..56dc6112844e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/openssl-1.1.patch
@@ -0,0 +1,18 @@
+--- a/src/lib/net/SecureSocket.cpp	2017-07-22 19:33:22.442645291 +0200
++++ b/src/lib/net/SecureSocket.cpp	2017-07-22 19:36:25.632595581 +0200
+@@ -805,9 +805,14 @@
+ 		showCipherStackDesc(sStack);
+ 	}
+ 
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ 	// m_ssl->m_ssl->session->ciphers is not forward compatable, In future release
+-	// of OpenSSL, it's not visible, need to use SSL_get_client_ciphers() instead
++	// of OpenSSL, it's not visible
+ 	STACK_OF(SSL_CIPHER) * cStack = m_ssl->m_ssl->session->ciphers;
++#else
++	// Use SSL_get_client_ciphers() for newer versions
++	STACK_OF(SSL_CIPHER) * cStack = SSL_get_client_ciphers(m_ssl->m_ssl);
++#endif
+ 		if (cStack == NULL) {
+ 		LOG((CLOG_DEBUG1 "remote cipher list not available"));
+ 	}
diff --git a/nixpkgs/pkgs/applications/misc/synergy/respect_macos_arch.patch b/nixpkgs/pkgs/applications/misc/synergy/respect_macos_arch.patch
new file mode 100644
index 000000000000..003d7d22421a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/respect_macos_arch.patch
@@ -0,0 +1,61 @@
+From 944177c76d4c7ff5ef3460eab28286a45344a0e7 Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Sat, 14 Jul 2018 21:56:59 +1000
+Subject: [PATCH 2/2] Make sure CMake respects the current arch on macOS
+
+Only set the macOS architecture if not defined by the user. Use the
+OpenSSL libraries and headers from Nix on macOS to prevent architecture
+mismatches.
+---
+ CMakeLists.txt     |  2 +-
+ src/CMakeLists.txt | 14 +-------------
+ 2 files changed, 2 insertions(+), 14 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2f37424d..c7217e28 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -172,7 +172,7 @@ if (UNIX)
+ 			# <= 10.5: 32-bit Intel and PowerPC
+ 			set(CMAKE_OSX_ARCHITECTURES "ppc;i386"
+ 				CACHE STRING "" FORCE)
+-		else()
++		elseif (NOT CMAKE_OSX_ARCHITECTURES)
+ 			# >= 10.6: Intel only
+ 			set(CMAKE_OSX_ARCHITECTURES "i386"
+ 				CACHE STRING "" FORCE)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 237ba484..04428636 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -23,11 +23,6 @@ if (WIN32)
+ 	set(OPENSSL_INCLUDE ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/inc32)
+ endif()
+ 
+-if (APPLE)
+-	set(OPENSSL_PLAT_DIR openssl-osx)
+-	set(OPENSSL_INCLUDE ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/include)
+-endif()
+-
+ if (WIN32)
+ 	set(OPENSSL_LIBS
+ 		${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/out32dll/libeay32.lib
+@@ -36,14 +31,7 @@ if (WIN32)
+ endif()
+ 
+ if (UNIX)
+-	if (APPLE)
+-		set(OPENSSL_LIBS
+-		${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libssl.a
+-		${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libcrypto.a
+-		)
+-	else()
+-		set(OPENSSL_LIBS ssl crypto)
+-	endif()
++	set(OPENSSL_LIBS ssl crypto)
+ endif()
+ 
+ add_subdirectory(lib)
+-- 
+2.17.1
+
diff --git a/nixpkgs/pkgs/applications/misc/synergy/update_gtest_gmock.patch b/nixpkgs/pkgs/applications/misc/synergy/update_gtest_gmock.patch
new file mode 100644
index 000000000000..87b53e78585b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/synergy/update_gtest_gmock.patch
@@ -0,0 +1,158 @@
+From eea85dbf4bbde545d8cb07d7ee9fbdca3dcf48fd Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Sat, 14 Jul 2018 22:07:39 +1000
+Subject: [PATCH 1/2] Update gtest and gmock to version 1.7.0
+
+Fixes compilation under clang on macOS as <tr1/tuple> is now found under
+<tuple>.
+---
+ CMakeLists.txt                     |  2 +-
+ ext/toolchain/commands1.py         |  4 ++--
+ src/lib/platform/CMakeLists.txt    |  2 +-
+ src/lib/server/CMakeLists.txt      |  2 +-
+ src/lib/shared/CMakeLists.txt      |  2 +-
+ src/lib/synergy/CMakeLists.txt     |  2 +-
+ src/test/CMakeLists.txt            | 12 ++++++------
+ src/test/integtests/CMakeLists.txt |  4 ++--
+ src/test/unittests/CMakeLists.txt  |  4 ++--
+ 9 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 94c474e8..2f37424d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -178,7 +178,7 @@ if (UNIX)
+ 				CACHE STRING "" FORCE)
+ 		endif()
+ 		
+-		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)
+diff --git a/ext/toolchain/commands1.py b/ext/toolchain/commands1.py
+index f32ec483..bf997cf6 100644
+--- a/ext/toolchain/commands1.py
++++ b/ext/toolchain/commands1.py
+@@ -251,10 +251,10 @@ class InternalCommands:
+ 	macIdentity = None
+ 	
+ 	# gtest dir with version number
+-	gtestDir = 'gtest-1.6.0'
++	gtestDir = 'gtest-1.7.0'
+ 	
+ 	# gmock dir with version number
+-	gmockDir = 'gmock-1.6.0'
++	gmockDir = 'gmock-1.7.0'
+ 
+ 	win32_generators = {
+ 		1 : VisualStudioGenerator('10'),
+diff --git a/src/lib/platform/CMakeLists.txt b/src/lib/platform/CMakeLists.txt
+index 481d8ef9..1ce67eca 100644
+--- a/src/lib/platform/CMakeLists.txt
++++ b/src/lib/platform/CMakeLists.txt
+@@ -31,7 +31,7 @@ endif()
+ 
+ include_directories(
+ 	../
+-	../../../ext/gtest-1.6.0/include
++	../../../ext/gtest-1.7.0/include
+ )
+ 
+ if (UNIX)
+diff --git a/src/lib/server/CMakeLists.txt b/src/lib/server/CMakeLists.txt
+index 3cb582ec..0525d627 100644
+--- a/src/lib/server/CMakeLists.txt
++++ b/src/lib/server/CMakeLists.txt
+@@ -24,7 +24,7 @@ endif()
+ include_directories(
+ 	../
+ 	../../../ext
+-	../../../ext/gtest-1.6.0/include
++	../../../ext/gtest-1.7.0/include
+ )
+ 
+ if (UNIX)
+diff --git a/src/lib/shared/CMakeLists.txt b/src/lib/shared/CMakeLists.txt
+index 891f4aa7..16c8b04a 100644
+--- a/src/lib/shared/CMakeLists.txt
++++ b/src/lib/shared/CMakeLists.txt
+@@ -25,7 +25,7 @@ add_library(shared STATIC ${sources})
+ include_directories(
+ 	../
+ 	../../../ext
+-	../../../ext/gtest-1.6.0/include
++	../../../ext/gtest-1.7.0/include
+ )
+ 
+ target_link_libraries(shared arch base)
+diff --git a/src/lib/synergy/CMakeLists.txt b/src/lib/synergy/CMakeLists.txt
+index 0972be8c..e19fcce5 100644
+--- a/src/lib/synergy/CMakeLists.txt
++++ b/src/lib/synergy/CMakeLists.txt
+@@ -36,7 +36,7 @@ endif()
+ include_directories(
+ 	../
+ 	../../../ext
+-	../../../ext/gtest-1.6.0/include
++	../../../ext/gtest-1.7.0/include
+ )
+ 
+ if (UNIX)
+diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
+index 8812150a..04cdfc50 100644
+--- a/src/test/CMakeLists.txt
++++ b/src/test/CMakeLists.txt
+@@ -15,13 +15,13 @@
+ # along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ include_directories(
+-	../../ext/gtest-1.6.0
+-	../../ext/gtest-1.6.0/include
+-	../../ext/gmock-1.6.0
+-	../../ext/gmock-1.6.0/include)
++	../../ext/gtest-1.7.0
++	../../ext/gtest-1.7.0/include
++	../../ext/gmock-1.7.0
++	../../ext/gmock-1.7.0/include)
+ 	
+-add_library(gtest STATIC ../../ext/gtest-1.6.0/src/gtest-all.cc)
+-add_library(gmock STATIC ../../ext/gmock-1.6.0/src/gmock-all.cc)
++add_library(gtest STATIC ../../ext/gtest-1.7.0/src/gtest-all.cc)
++add_library(gmock STATIC ../../ext/gmock-1.7.0/src/gmock-all.cc)
+ 
+ if (UNIX)
+ 	# ignore warnings in gtest and gmock
+diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt
+index 2f1ca7f3..6ddbd29a 100644
+--- a/src/test/integtests/CMakeLists.txt
++++ b/src/test/integtests/CMakeLists.txt
+@@ -56,8 +56,8 @@ endif()
+ include_directories(
+ 	../../
+ 	../../lib/
+-	../../../ext/gtest-1.6.0/include
+-	../../../ext/gmock-1.6.0/include
++	../../../ext/gtest-1.7.0/include
++	../../../ext/gmock-1.7.0/include
+ )
+ 
+ if (UNIX)
+diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt
+index 3e49dc3c..5f6c4fac 100644
+--- a/src/test/unittests/CMakeLists.txt
++++ b/src/test/unittests/CMakeLists.txt
+@@ -51,8 +51,8 @@ list(APPEND headers ${platform_sources})
+ include_directories(
+ 	../../
+ 	../../lib/
+-	../../../ext/gtest-1.6.0/include
+-	../../../ext/gmock-1.6.0/include
++	../../../ext/gtest-1.7.0/include
++	../../../ext/gmock-1.7.0/include
+ 	../../../ext
+ )
+ 
+-- 
+2.17.1
+
diff --git a/nixpkgs/pkgs/applications/misc/tabula/default.nix b/nixpkgs/pkgs/applications/misc/tabula/default.nix
new file mode 100644
index 000000000000..52e39b98a3b6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tabula/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchzip, jre, makeWrapper }:
+
+
+stdenv.mkDerivation rec {
+  name = "tabula-${version}";
+  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/tangogps/default.nix b/nixpkgs/pkgs/applications/misc/tangogps/default.nix
new file mode 100644
index 000000000000..bde30d9041ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tangogps/default.nix
@@ -0,0 +1,45 @@
+{ fetchurl, stdenv, pkgconfig, gettext, gtk2, gconf
+, curl, libexif, sqlite, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "tangogps-0.99.2";
+
+  src = fetchurl {
+    url = "http://www.tangogps.org/downloads/${name}.tar.gz";
+    sha256 = "15q2kkrv4mfsivfdzjgpxr7s2amw7d501q2ayjl3ff4vmvfn5516";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gettext gtk2 gconf curl libexif sqlite libxml2 ];
+
+  # bogus includes fail with newer library version
+  postPatch = ''
+    sed -i -e 's,#include <glib/.*>,#include <glib.h>,g' src/*.c
+    sed -i -e 's,#include <curl/.*>,#include <curl/curl.h>,g' src/*.c src/*.h
+  '';
+
+  meta = {
+    description = "User friendly map and GPS user interface";
+
+    longDescription = ''
+      tangoGPS is an easy to use, fast and lightweight mapping
+      application for use with or without GPS.
+
+      It runs on any Linux platform from the desktop over eeePC down
+      to phones like the Openmoko Neo.
+
+      By default tangoGPS uses map data from the OpenStreetMap
+      project.  Additionally a variety of other repositories can be
+      easily added.
+
+      The maps are automagically downloaded and cached for offline use
+      while you drag or zoom the map.  Furthermore you can
+      conveniently pre-cache areas with tangoGPS.
+    '';
+
+    #homepage = http://www.tangogps.org/; # no longer valid, I couldn't find any other
+
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskell/default.nix b/nixpkgs/pkgs/applications/misc/taskell/default.nix
new file mode 100644
index 000000000000..6cb78e6d6bd7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskell/default.nix
@@ -0,0 +1,59 @@
+{ haskell, lib, haskellPackages, fetchFromGitHub }:
+
+let
+  version = "1.3.2";
+  sha256  = "0cyysvkl8m1ldlprmw9mpvch3r244nl25yv74dwcykga3g5mw4aa";
+
+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
+    http-conduit
+    http-client
+    http-types
+    lens
+    # mtl
+    # template-haskell
+    # text
+    time
+    vty
+  ];
+
+  executableHaskellDepends = [];
+
+  testHaskellDepends = with haskellPackages; [
+    tasty
+    tasty-discover
+    tasty-expected-failure
+    tasty-hunit
+  ];
+
+  license = lib.licenses.bsd3;
+})
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..6b38c3d59c29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/2.x/default.nix
@@ -0,0 +1,76 @@
+{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/
+  '';
+
+  installFlags =
+    # kde_locale is not defined when installing without kde.
+    "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..d1642e76fa65
--- /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
+   1.10.5
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..23252d0c4807
--- /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..e65ab3451a62
--- /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..77cbaeeed793
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile
@@ -0,0 +1,2 @@
+source 'http://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..ebd04c20ea6d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/Gemfile.lock
@@ -0,0 +1,21 @@
+GEM
+  remote: http://rubygems.org/
+  specs:
+    mail (2.7.0)
+      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.6.0)
+      tins (~> 1.0)
+    tins (1.16.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  taskjuggler
+
+BUNDLED WITH
+   1.14.6
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix
new file mode 100644
index 000000000000..f3f9285b312d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/default.nix
@@ -0,0 +1,21 @@
+{ lib, bundlerApp, ruby }:
+
+bundlerApp {
+  pname = "taskjuggler";
+
+  inherit ruby;
+  gemdir = ./.;
+
+  exes = [
+    "tj3" "tj3client" "tj3d" "tj3man" "tj3ss_receiver" "tj3ss_sender"
+    "tj3ts_receiver" "tj3ts_sender" "tj3ts_summary" "tj3webd"
+  ];
+
+  meta = {
+    description = "A modern and powerful project management tool";
+    homepage    = http://taskjuggler.org/;
+    license     = lib.licenses.gpl2;
+    platforms   = lib.platforms.unix;
+    maintainers = [ lib.maintainers.manveru ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix b/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix
new file mode 100644
index 000000000000..24c1e4311777
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskjuggler/gemset.nix
@@ -0,0 +1,55 @@
+{
+  mail = {
+    dependencies = ["mini_mime"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["http://rubygems.org"];
+      sha256 = "10dyifazss9mgdzdv08p47p344wmphp5pkh5i73s7c04ra8y6ahz";
+      type = "gem";
+    };
+    version = "2.7.0";
+  };
+  mini_mime = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["http://rubygems.org"];
+      sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  taskjuggler = {
+    dependencies = ["mail" "term-ansicolor"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["http://rubygems.org"];
+      sha256 = "0ky3cydl3szhdyxsy4k6zxzjlbll7mlq025aj6xd5jmh49k3pfbp";
+      type = "gem";
+    };
+    version = "3.6.0";
+  };
+  term-ansicolor = {
+    dependencies = ["tins"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["http://rubygems.org"];
+      sha256 = "1b1wq9ljh7v3qyxkk8vik2fqx2qzwh5lval5f92llmldkw7r7k7b";
+      type = "gem";
+    };
+    version = "1.6.0";
+  };
+  tins = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["http://rubygems.org"];
+      sha256 = "0g95xs4nvx5n62hb4fkbkd870l9q3y9adfc4h8j21phj9mxybkb8";
+      type = "gem";
+    };
+    version = "1.16.3";
+  };
+}
\ 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..bf0e964d591f
--- /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";
+  name = "tasknc-${version}";
+
+  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; [ infinisil ];
+    platforms = platforms.linux; # Cannot test others
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/tasksh/default.nix b/nixpkgs/pkgs/applications/misc/tasksh/default.nix
new file mode 100644
index 000000000000..dac447edd7d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tasksh/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, readline }:
+
+stdenv.mkDerivation rec {
+  name = "tasksh-${version}";
+  version = "1.2.0";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "https://taskwarrior.org/download/${name}.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; [ ];
+    platforms = platforms.linux;
+  };
+}
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..1018a53ce21d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/taskwarrior/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, cmake, libuuid, gnutls }:
+
+stdenv.mkDerivation rec {
+  name = "taskwarrior-${version}";
+  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 jgeerds ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/termdown/default.nix b/nixpkgs/pkgs/applications/misc/termdown/default.nix
new file mode 100644
index 000000000000..65963f9aa34f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termdown/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, buildPythonApplication,
+click, pyfiglet, dateutil}:
+
+with stdenv.lib;
+
+buildPythonApplication rec {
+
+  name    = "termdown-${version}";
+  version = "1.14.1";
+
+  src = fetchFromGitHub {
+    rev    = version;
+    sha256 = "0jgjzglna0gwp0j31l48pny69szslczl13aahwjfjypkv9lx8w2a";
+    repo   = "termdown";
+    owner  = "trehn";
+  };
+
+  propagatedBuildInputs = [ dateutil click pyfiglet ];
+
+  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;
+    platforms       = platforms.all;
+  };
+}
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..b05c8a803996
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminal-notifier/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchzip }:
+
+stdenv.mkDerivation rec {
+  name = "terminal-notifier-${version}";
+
+  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
+    #!${stdenv.shell}
+    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..a34c5e4766ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminal-parrot/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+    name = "terminal-parrot-1.1.0";
+    version = "1.1.0";
+    goPackagePath = "github.com/jmhobbs/terminal-parrot";
+
+    src = fetchFromGitHub {
+        owner = "jmhobbs";
+        repo = "terminal-parrot";
+        rev = "22c9bde916c12d8b13cf80ab252995dbf47837d1";
+        sha256 = "1mrxmifsmndf6hdq1956p1gyrrp3abh3rmwjcmxar8x2wqbv748y";
+    };
+
+    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 ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/misc/terminator/default.nix b/nixpkgs/pkgs/applications/misc/terminator/default.nix
new file mode 100644
index 000000000000..f32a27b9b78d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/terminator/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, python2, keybinder3, intltool, file, gtk3, gobject-introspection
+, libnotify, wrapGAppsHook, gnome3
+}:
+
+python2.pkgs.buildPythonApplication rec {
+  name = "terminator-${version}";
+  version = "1.91";
+
+  src = fetchurl {
+    url = "https://launchpad.net/terminator/gtk3/${version}/+download/${name}.tar.gz";
+    sha256 = "95f76e3c0253956d19ceab2f8da709a496f1b9cf9b1c5b8d3cd0b6da3cc7be69";
+  };
+
+  nativeBuildInputs = [ file intltool wrapGAppsHook gobject-introspection ];
+  buildInputs = [ gtk3 gnome3.vte libnotify keybinder3 ];
+  propagatedBuildInputs = with python2.pkgs; [ pygobject3 psutil pycairo ];
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  checkPhase = ''
+    ./run_tests
+  '';
+
+  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://gnometerminator.blogspot.no/p/introduction.html;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ bjornfor globin ];
+    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..c12a4c9f8da6
--- /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";
+  name = "terminus-${version}";
+  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..957b5bc0e8d5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, pkgconfig, vte, gtk3, ncurses, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "termite-${version}";
+  version = "14";
+
+  src = fetchFromGitHub {
+    owner = "thestinger";
+    repo = "termite";
+    rev = "v${version}";
+    sha256 = "0dmz9rpc2fdvcwhcmjnhb48ixn403gxpq03g334d1hgjw2hsyx7x";
+    fetchSubmodules = true;
+  };
+
+  # https://github.com/thestinger/termite/pull/516
+  patches = [ ./url_regexp_trailing.patch ./add_errno_header.patch
+              ] ++ stdenv.lib.optional stdenv.isDarwin ./remove_ldflags_macos.patch;
+
+  makeFlags = [ "VERSION=v${version}" "PREFIX=" "DESTDIR=$(out)" ];
+
+  buildInputs = [ vte gtk3 ncurses ];
+
+  nativeBuildInputs = [ wrapGAppsHook pkgconfig ];
+
+  outputs = [ "out" "terminfo" ];
+
+  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 garbas ];
+    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..0b12a905360c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/termite/wrapper.nix
@@ -0,0 +1,15 @@
+{  makeWrapper, wrapGAppsHook, 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/teseq/default.nix b/nixpkgs/pkgs/applications/misc/teseq/default.nix
new file mode 100644
index 000000000000..9502b3a0abe7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/teseq/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl }:
+
+let
+  version = "1.1.1";
+in
+stdenv.mkDerivation {
+  name = "teseq-${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..1229990b1ab7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/thinking-rock/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl }:
+
+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
+    #!/bin/sh
+    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..4172660182df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tilda/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchzip, pkgconfig
+, autoreconfHook, gettext, expat
+, libconfuse, vte, gtk
+, makeWrapper }:
+
+stdenv.mkDerivation rec {
+
+  name = "tilda-${version}";
+  version = "1.4.1";
+
+  src = fetchzip {
+    url = "https://github.com/lanoxx/tilda/archive/${name}.tar.gz";
+    sha256 = "154rsldqjv2m1bddisb930qicb0y35kx7bxq392n2hn68jr2pxkj";
+  };
+
+  nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ];
+  buildInputs = [ gettext 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 = with stdenv.lib; {
+    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..eb7a8e41d4b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tilix/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, dmd, gnome3, dbus
+, gsettings-desktop-schemas, desktop-file-utils, gettext, gtkd, libsecret
+, perlPackages, wrapGAppsHook, xdg_utils }:
+
+stdenv.mkDerivation rec {
+  name = "tilix-${version}";
+  version = "1.8.5";
+
+  src = fetchFromGitHub {
+    owner = "gnunn1";
+    repo = "tilix";
+    rev = "${version}";
+    sha256 = "1ixhkssz0xn3x75n2iw6gd3hka6bgmgwfgbvblbjhhx8gcpbw3s7";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook dmd desktop-file-utils perlPackages.Po4a pkgconfig xdg_utils
+    wrapGAppsHook
+  ];
+  buildInputs = [ gnome3.dconf gettext gsettings-desktop-schemas gtkd dbus libsecret ];
+
+  preBuild = ''
+    makeFlagsArray=(
+      DCFLAGS='-O -inline -release -version=StdLoggerDisableTrace'
+    )
+  '';
+
+  postInstall = with gnome3; ''
+    ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
+
+    wrapProgram $out/bin/tilix \
+      --prefix LD_LIBRARY_PATH ":" "${libsecret}/lib"
+  '';
+
+
+  preFixup = ''
+    substituteInPlace $out/share/applications/com.gexperts.Tilix.desktop \
+      --replace "Exec=tilix" "Exec=$out/bin/tilix"
+    sed -i '/^DBusActivatable=/d' $out/share/applications/com.gexperts.Tilix.desktop
+  '';
+
+  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 ];
+    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..4ca7a86e6f7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/timewarrior/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake }:
+
+stdenv.mkDerivation rec {
+  name = "timewarrior-${version}";
+  version = "1.1.1";
+
+  enableParallelBuilding = true;
+
+  src = fetchurl {
+    url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
+    sha256 = "1jfcfzdwk5qqhxznj1bgy0sx3lnp3z5lqr9kch9a7iazwmi9lz8z";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "A command-line time tracker";
+    homepage = https://taskwarrior.org/docs/timewarrior;
+    license = licenses.mit;
+    maintainers = with maintainers; [ 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..c70503cbff2f
--- /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, hicolor-icon-theme, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "tint2-${version}";
+  version = "16.6.1";
+
+  src = fetchFromGitLab {
+    owner = "o9000";
+    repo = "tint2";
+    rev = version;
+    sha256 = "1h5bn4vi7gffwi4mpwpn0s6vxvl44rn3m9b23w8q9zyz9v24flz7";
+  };
+
+  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 hicolor-icon-theme ];
+
+  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/tnef/default.nix b/nixpkgs/pkgs/applications/misc/tnef/default.nix
new file mode 100644
index 000000000000..6cf1f27a104b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tnef/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  version = "1.4.17";
+  name = "tnef-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "verdammelt";
+    repo   = "tnef";
+    rev    = version;
+    sha256 = "0cq2xh5wd74qn6k2nnw5rayxgqhjl3jbzf4zlc4babcwxrv32ldh";
+  };
+
+  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..148d6b042f7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todiff/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  name = "todiff-${version}";
+  version = "0.6.1";
+
+  src = fetchFromGitHub {
+    owner = "Ekleog";
+    repo = "todiff";
+    rev = version;
+    sha256 = "1y0v8nkaqb8kn61xwarpbyrq019gxx1f5f5p1hzw73nqxadc1rcm";
+  };
+
+  cargoSha256 = "1r7l9zbw6kq8yb5cv6h0qgl2gp71bkn9xv7b2n49a5r7by98jjqr";
+
+  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/todolist/default.nix b/nixpkgs/pkgs/applications/misc/todolist/default.nix
new file mode 100644
index 000000000000..122567de2e1e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/todolist/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "todolist-${version}";
+  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..bc36ffa5e101
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toggldesktop/default.nix
@@ -0,0 +1,148 @@
+{ stdenv, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig
+, cmake, qmake, cacert, jsoncpp, libX11, libXScrnSaver, lua, openssl, poco
+, qtbase, qtwebkit, 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 = stdenv.mkDerivation rec {
+    name = "bugsnag-qt-${version}";
+    version = "20180522.005732";
+
+    src = fetchzip {
+      url = "https://github.com/yegortimoshenko/bugsnag-qt/archive/${version}.tar.gz";
+      sha256 = "02s6mlggh0i4a856md46dipy6mh47isap82jlwmjr7hfsk2ykgnq";
+    };
+
+    nativeBuildInputs = [ qmake ];
+    buildInputs = [ qtbase ];
+  };
+
+  qxtglobalshortcut = stdenv.mkDerivation rec {
+    name = "qxtglobalshortcut-${version}";
+    version = "f584471dada2099ba06c574bdfdd8b078c2e3550";
+
+    src = fetchzip {
+      url = "https://github.com/hluk/qxtglobalshortcut/archive/${version}.tar.gz";
+      sha256 = "1iy17gypav10z8aa62s5jb6mq9y4kb9ms4l61ydmk3xwlap7igw1";
+    };
+
+    nativeBuildInputs = [ cmake ];
+    buildInputs = [ qtbase qtx11extras ];
+  };
+
+  qt-oauth-lib = stdenv.mkDerivation rec {
+    name = "qt-oauth-lib-${version}";
+    version = "20180521.233208";
+
+    src = fetchzip {
+      url = "https://github.com/yegortimoshenko/qt-oauth-lib/archive/${version}.tar.gz";
+      sha256 = "0f46d44slzvzaqx0lksvv14lsc1jp8vd2mragxd61r820hybf5z3";
+    };
+
+    nativeBuildInputs = [ qmake ];
+    buildInputs = [ qtbase qtwebkit ];
+  };
+
+  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 = stdenv.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 = stdenv.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
+      qtwebkit
+      qt-oauth-lib
+      qtx11extras
+      libX11
+      libXScrnSaver
+    ];
+  };
+
+  toggldesktop-icons = stdenv.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 stdenv.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..ba6e97d61fb3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tomboy/default.nix
@@ -0,0 +1,42 @@
+{ 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 {
+  name = "tomboy-${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..cb3146d4c0dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/toot/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.19.0";
+  name    = "toot-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "ihabunek";
+    repo   = "toot";
+    rev    = "${version}";
+    sha256 = "1z0r6yqi522d5jbpd0w3prd33l067jb1jhfnxf6hkzhnx1wddjsa";
+  };
+
+  checkInputs = with python3Packages; [ pytest ];
+
+  propagatedBuildInputs = with python3Packages;
+    [ requests beautifulsoup4 future ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Mastodon CLI interface";
+    homepage    = "https://github.com/ihabunek/toot";
+    license     = licenses.mit;
+    maintainers = [ ];
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/tootle/default.nix b/nixpkgs/pkgs/applications/misc/tootle/default.nix
new file mode 100644
index 000000000000..c295a8fdb688
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tootle/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, python3
+, gnome3, vala_0_40, gobject-introspection, wrapGAppsHook
+, gtk3, granite
+, json-glib, glib, glib-networking, hicolor-icon-theme
+}:
+
+let
+  pname = "tootle";
+  version = "0.2.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "bleakgrey";
+    repo = pname;
+    rev = version;
+    sha256 = "1z3wyx316nns6gi7vlvcfmalhvxncmvcmmlgclbv6b6hwl5x2ysi";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala_0_40 # should be `elementary.vala` when elementary attribute set is merged
+    wrapGAppsHook
+  ];
+  buildInputs = [
+    gtk3 granite json-glib glib glib-networking hicolor-icon-theme
+    gnome3.libgee gnome3.libsoup gnome3.gsettings-desktop-schemas
+  ];
+
+  postPatch = ''
+    chmod +x ./meson/post_install.py
+    patchShebangs ./meson/post_install.py
+  '';
+
+  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..34952b9c0f4d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/topydo/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, python3Packages, fetchFromGitHub, glibcLocales }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "topydo";
+  version = "0.13";
+  name  = "${pname}-${version}";
+
+  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..09322b47506b
--- /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";
+  name = "tpmmanager-${version}";
+
+  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/tqsl/cmake_lib_path.patch b/nixpkgs/pkgs/applications/misc/tqsl/cmake_lib_path.patch
new file mode 100644
index 000000000000..5eed93834632
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tqsl/cmake_lib_path.patch
@@ -0,0 +1,12 @@
+diff -dur tqsl-2.3.1/src/CMakeLists.txt tqsl-2.3.1b/src/CMakeLists.txt
+--- tqsl-2.3.1/src/CMakeLists.txt	2017-04-17 20:53:22.000000000 -0400
++++ tqsl-2.3.1b/src/CMakeLists.txt	2017-10-05 21:14:39.048329343 -0400
+@@ -54,7 +54,7 @@
+ if(NOT APPLE AND NOT WIN32)
+ set_source_files_properties(location.cpp PROPERTIES COMPILE_DEFINITIONS CONFDIR="${CMAKE_INSTALL_PREFIX}/share/TrustedQSL/")
+ set(HEADERS_TO_INSTALL tqsllib.h tqslerrno.h cabrillo.h adif.h tqslconvert.h)
+-install(TARGETS tqsllib DESTINATION lib$(LIB_SUFFIX))
++install(TARGETS tqsllib DESTINATION lib${LIB_SUFFIX})
+ install(FILES config.xml DESTINATION share/TrustedQSL)
+ install(FILES ${HEADERS_TO_INSTALL} DESTINATION include)
+ endif()
diff --git a/nixpkgs/pkgs/applications/misc/tqsl/default.nix b/nixpkgs/pkgs/applications/misc/tqsl/default.nix
new file mode 100644
index 000000000000..f001cbcaab92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tqsl/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, makeWrapper, cmake, expat, openssl, zlib, db, curl, wxGTK }:
+
+stdenv.mkDerivation rec {
+  name = "tqsl-${version}";
+  version = "2.3.1";
+
+  src = fetchurl {
+    url = "https://www.arrl.org/files/file/LoTW%20Instructions/${name}.tar.gz";
+    sha256 = "10cjlilampwl10hwb7m28m5z9gyrscvvc1rryfjnhj9q2x4ppgxv";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    cmake
+    expat
+    openssl
+    zlib
+    db
+    curl
+    wxGTK
+  ];
+
+  patches = [ ./cmake_lib_path.patch ];
+
+  meta = with stdenv.lib; {
+    description = "Software for using the ARRL Logbook of the World";
+    homepage = https://lotw.arrl.org/;
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.dpflug ];
+  };
+}
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..15c4b8185a22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/translate-shell/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, makeWrapper, curl, fribidi, rlwrap, gawk, groff, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "translate-shell";
+  version = "0.9.6.8";
+
+  src = fetchFromGitHub {
+    owner = "soimort";
+    repo = "translate-shell";
+    rev = "v${version}";
+    sha256 = "17fc5nlc594lvmihx39h4ddmi8ja3qqsyswzxadbaz7l3zm356b8";
+  };
+
+  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..66bfcbcf4d9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tthsum/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "tthsum-${version}";
+  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
+  '';
+
+  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/tvbrowser/bin.nix b/nixpkgs/pkgs/applications/misc/tvbrowser/bin.nix
new file mode 100644
index 000000000000..38865ca4f3d9
--- /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..0667ec49b328
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/twmn/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchgit, qtbase, qtx11extras, qmake, pkgconfig, boost }:
+
+stdenv.mkDerivation rec {
+  name = "twmn-git-2014-09-23";
+
+  src = fetchgit {
+    url = "https://github.com/sboli/twmn.git";
+    rev = "9492a47e25547e602dd57efd807033677c90b150";
+    sha256 = "1a68gka9gyxyzhc9rn8df59rzcdwkjw90cxp1kk0rdfp6svhxhsa";
+  };
+
+  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 stdenv.lib.platforms; linux;
+    maintainers = [ stdenv.lib.maintainers.matejc ];
+    license = stdenv.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..a5d2f206f3a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/tzupdate/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, python }:
+
+let
+  inherit (python.pkgs) buildPythonApplication fetchPypi requests;
+in
+buildPythonApplication rec {
+  pname = "tzupdate";
+  version = "1.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "085kp4v9ijhkfvr0r5rzn4z7nrkb2qig05j0bajb0gkgynwf8wnz";
+  };
+
+  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..3cc4fcc1517b
--- /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..5d96918e42da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/udiskie/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, asciidoc-full, gettext
+, gobject-introspection, gtk3, hicolor-icon-theme, libappindicator-gtk3, libnotify, librsvg
+, udisks2, wrapGAppsHook
+, buildPythonApplication
+, docopt
+, pygobject3
+, pyyaml
+}:
+
+buildPythonApplication rec {
+  name = "udiskie-${version}";
+  version = "1.7.5";
+
+  src = fetchFromGitHub {
+    owner = "coldfix";
+    repo = "udiskie";
+    rev = version;
+    sha256 = "1mcdn8ha5d5nsmrzk6xnnsqrmk94rdrzym9sqm38zk5r8gpyl1k4";
+  };
+
+  buildInputs = [
+    asciidoc-full        # For building man page.
+    hicolor-icon-theme
+    wrapGAppsHook
+    librsvg              # required for loading svg icons (udiskie uses svg icons)
+  ];
+
+  propagatedBuildInputs = [
+    gettext gobject-introspection gtk3 libnotify docopt
+    pygobject3 pyyaml udisks2 libappindicator-gtk3
+  ];
+
+  postBuild = "make -C doc";
+
+  postInstall = ''
+    mkdir -p $out/share/man/man8
+    cp -v doc/udiskie.8 $out/share/man/man8/
+  '';
+
+  # tests require dbusmock
+  doCheck = false;
+
+  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/unixcw/default.nix b/nixpkgs/pkgs/applications/misc/unixcw/default.nix
new file mode 100644
index 000000000000..2aeba5fb5f4a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/unixcw/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, libpulseaudio, alsaLib , pkgconfig, qt5}:
+stdenv.mkDerivation rec {
+  name = "unixcw-${version}";
+  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/misc/unixcw/remove-use-of-dlopen.patch b/nixpkgs/pkgs/applications/misc/unixcw/remove-use-of-dlopen.patch
new file mode 100644
index 000000000000..0475c008ba22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/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/misc/urh/default.nix b/nixpkgs/pkgs/applications/misc/urh/default.nix
new file mode 100644
index 000000000000..4dc8d5cfa3e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/urh/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, python3Packages
+, hackrf, rtl-sdr, airspy, limesuite }:
+
+python3Packages.buildPythonApplication rec {
+  name = "urh-${version}";
+  version = "2.5.1";
+
+  src = fetchFromGitHub {
+    owner = "jopohl";
+    repo = "urh";
+    rev = "v${version}";
+    sha256 = "01n4swm2q2i10qvhfw1q04wxf48xwqlddfg7842ff98i2d9yxy13";
+  };
+
+  buildInputs = [ hackrf rtl-sdr airspy limesuite ];
+  propagatedBuildInputs = with python3Packages; [
+    pyqt5 numpy psutil cython pyzmq
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Universal Radio Hacker: investigate wireless protocols like a boss";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/urlscan/default.nix b/nixpkgs/pkgs/applications/misc/urlscan/default.nix
new file mode 100644
index 000000000000..a82d7792cabd
--- /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.1";
+
+  src = fetchFromGitHub {
+    owner = "firecat53";
+    repo = pname;
+    rev = version;
+    sha256 = "0np7w38wzs72kxap9fsdliafqs0xfqnfj01i7b0fh7k235bgrapz";
+  };
+
+  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..8764c41c8a4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/urlview/default.nix
@@ -0,0 +1,40 @@
+{ 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;
+
+  meta = {
+    description = "Extract URLs from text";
+    homepage = https://packages.qa.debian.org/u/urlview.html;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/usync/default.nix b/nixpkgs/pkgs/applications/misc/usync/default.nix
new file mode 100644
index 000000000000..d12120ca2f11
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/usync/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, scsh, rsync, unison }:
+
+stdenv.mkDerivation rec {
+  pname = "usync";
+  version = "0.0.3";
+  name = "${pname}-${version}";
+
+  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..6752b0182fea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/valentina/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchhg
+, qmake, qttools
+, qtbase, qtsvg, qtxmlpatterns
+, poppler_utils
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "valentina-${version}";
+  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/vcal/default.nix b/nixpkgs/pkgs/applications/misc/vcal/default.nix
new file mode 100644
index 000000000000..7649785524f1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vcal/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, fetchurl, perl }:
+
+stdenv.mkDerivation rec {
+  name = "vcal-${version}";
+  version = "2.8";
+
+  src = fetchurl {
+    url    = "https://waynemorrison.com/software/vcal";
+    sha256 = "0jrm0jzqxb1xjp24hwbzlxsh22gjssay9gj4zszljzdm68r5afvc";
+  };
+
+  nativeBuildInputs = [ perl ]; # for pod2man
+
+  unpackPhase = ":";
+  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..8b64bcca667d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/veracrypt/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig, makeself, yasm, fuse, wxGTK, lvm2 }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "veracrypt";
+  name = "${pname}-${version}";
+  version = "1.23";
+
+  src = fetchurl {
+    url = "https://launchpad.net/${pname}/trunk/${version}/+download/VeraCrypt_${version}_Source.tar.bz2";
+    sha256 = "009lqi43n2w272sxv7y7dz9sqx15qkx6lszkswr8mwmkpgkm0px1";
+  };
+
+  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..f23862c63cd4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/verbiste/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, libgnomeui, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "verbiste-${version}";
+
+  version = "0.1.45";
+
+  src = fetchurl {
+    url = "https://perso.b2b2c.ca/~sarrazip/dev/${name}.tar.gz";
+    sha256 = "180zyhdjspp7lk2291wsqs6bm7y27r7bd00447iimmjpx372s22c";
+  };
+
+  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..c568a056514f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vifm/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl
+, pkgconfig
+, ncurses, libX11
+, utillinux, file, which, groff
+}:
+
+stdenv.mkDerivation rec {
+  name = "vifm-${version}";
+  version = "0.10";
+
+  src = fetchurl {
+    url = "https://github.com/vifm/vifm/releases/download/v${version}/vifm-${version}.tar.bz2";
+    sha256 = "1f380xcyjnm4xmcdazs6dj064bwddhywvn3mgm36k7r7b2gnjnp0";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses libX11 utillinux file which groff ];
+
+  meta = with stdenv.lib; {
+    description = "A vi-like file manager";
+    maintainers = with maintainers; [ raskin garbas ];
+    platforms = platforms.linux;
+    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..b7d0b330e85b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/viking/default.nix
@@ -0,0 +1,49 @@
+{ fetchurl, stdenv, makeWrapper, pkgconfig, intltool, gettext, gtk2, expat, curl
+, gpsd, bc, file, gnome-doc-utils, libexif, libxml2, libxslt, scrollkeeper
+, docbook_xml_dtd_412, gexiv2, sqlite, gpsbabel, expect, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  name = "viking-${version}";
+  version = "1.6.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/viking/viking/viking-${version}.tar.bz2";
+    sha256 = "09kq0sxs2czps0d6xzgkkp41746v44ip63m72qvfs7rsrnqj7qnz";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ makeWrapper intltool gettext gtk2 expat curl gpsd bc file gnome-doc-utils
+    libexif libxml2 libxslt scrollkeeper docbook_xml_dtd_412 gexiv2 sqlite hicolor-icon-theme
+  ];
+
+  configureFlags = [ "--disable-scrollkeeper --disable-mapnik" ];
+
+  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 ];
+    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..20e3c3daccb0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/visidata/default.nix
@@ -0,0 +1,29 @@
+{ buildPythonApplication, lib, fetchFromGitHub
+, dateutil, pyyaml, openpyxl, xlrd, h5py, fonttools, lxml, pandas, pyshp
+}:
+buildPythonApplication rec {
+  name = "${pname}-${version}";
+  pname = "visidata";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "saulpw";
+    repo = "visidata";
+    rev = "v${version}";
+    sha256 = "0schpfksxddbsv0s54pv1jrf151nw9kr51m41fp0ycnw7z2jqirm";
+  };
+
+  propagatedBuildInputs = [dateutil pyyaml openpyxl xlrd h5py fonttools
+    lxml pandas pyshp ];
+
+  doCheck = false;
+
+  meta = {
+    inherit version;
+    description = "Interactive terminal multitool for tabular data";
+    license = lib.licenses.gpl3 ;
+    maintainers = [lib.maintainers.raskin];
+    platforms = lib.platforms.linux;
+    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..40a399247e90
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vit/default.nix
@@ -0,0 +1,36 @@
+{ pkgs, fetchgit, stdenv, makeWrapper, taskwarrior, ncurses,
+perl, perlPackages }:
+
+let
+  version = "1.2";
+in
+stdenv.mkDerivation {
+  name = "vit-${version}";
+
+  src = fetchgit {
+    url = "https://git.tasktools.org/scm/ex/vit.git";
+    rev = "7d0042ca30e9d09cfbf9743b3bc72096e4a8fe1e";
+    sha256 = "92cad7169b3870145dff02256e547ae270996a314b841d3daed392ac6722827f";
+  };
+
+  preConfigure = ''
+    substituteInPlace Makefile.in \
+      --replace sudo ""
+    substituteInPlace configure \
+      --replace /usr/bin/perl ${perl}/bin/perl
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/vit --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  buildInputs = [ taskwarrior ncurses perlPackages.Curses perl makeWrapper ];
+
+  meta = {
+    description = "Visual Interactive Taskwarrior";
+    maintainers = with pkgs.lib.maintainers; [ ];
+    platforms = pkgs.lib.platforms.all;
+    license = pkgs.lib.licenses.gpl3;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/volnoti/default.nix b/nixpkgs/pkgs/applications/misc/volnoti/default.nix
new file mode 100644
index 000000000000..166811fb4ae3
--- /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 rec {
+  name = "volnoti-unstable-${version}";
+  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..e794b82e2f6e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vp/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, SDL, SDL_image }:
+
+stdenv.mkDerivation rec {
+  name = "vp-${version}";
+  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..a448d35485a7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vue/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, jre }:
+
+stdenv.mkDerivation rec {
+  name = "vue-${version}";
+  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 '#!${stdenv.shell}' >> "$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..48818ca3b8b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/vym/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, pkgconfig, qmake, qtsvg }:
+
+stdenv.mkDerivation rec {
+  name = "vym-${version}";
+  version = "2.6.11";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/vym/2.6.0/${name}.tar.bz2";
+    sha256 = "1yznlb47jahd662a2blgh1ccwpl5dp5rjz9chsxjzhj3vbkzx3nl";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [ qtsvg ];
+
+  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/wcalc/default.nix b/nixpkgs/pkgs/applications/misc/wcalc/default.nix
new file mode 100644
index 000000000000..1c6dc8f63c23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wcalc/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, mpfr, readline }:
+
+stdenv.mkDerivation rec {
+  name = "wcalc-${version}";
+  version = "2.5";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/w-calc/${name}.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..544c1252ff41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/weather/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+    version = "2.3";
+    name = "weather-${version}";
+
+    src = fetchurl {
+        url = "http://fungi.yuggoth.org/weather/src/${name}.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 = with stdenv.lib.maintainers; [ ];
+        platforms = with stdenv.lib.platforms; linux; # my only platform
+    };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wego/default.nix b/nixpkgs/pkgs/applications/misc/wego/default.nix
new file mode 100644
index 000000000000..a3d3ace009e1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wego/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "wego-${version}";
+  version = "20170403-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "415efdfab5d5ee68300bf261a0c6f630c6c2584c";
+  
+  goPackagePath = "github.com/schachmat/wego";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/schachmat/wego";
+    sha256 = "0w8sypwg0s2mvhk9cdibqr8bz5ipiiacs60a39sdswrpc4z486hg";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    license = stdenv.lib.licenses.isc;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wego/deps.nix b/nixpkgs/pkgs/applications/misc/wego/deps.nix
new file mode 100644
index 000000000000..74ab69a30e14
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wego/deps.nix
@@ -0,0 +1,38 @@
+[
+  {
+    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.4";
+      sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs";
+    };
+  }
+  {
+    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/schachmat/ingo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/schachmat/ingo";
+      rev = "a4bdc0729a3fda62cc4069b6e490fc657fd54e33";
+      sha256 = "1gw0kddy7jh3467imsqni86cf9yq7k6vpfc0ywkbwj0zsjsdgd49";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/misc/welle-io/default.nix b/nixpkgs/pkgs/applications/misc/welle-io/default.nix
new file mode 100644
index 000000000000..fae591d7ee03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/welle-io/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, qtbase, qtcharts, qtmultimedia, qtquickcontrols, qtquickcontrols2
+, faad2, rtl-sdr, soapysdr-with-plugins, libusb, fftwSinglePrec }:
+let
+
+  version = "1.0";
+
+in stdenv.mkDerivation {
+
+  name = "welle-io-${version}";
+
+  src = fetchFromGitHub {
+    owner = "AlbrechtL";
+    repo = "welle.io";
+    rev = "V${version}";
+    sha256 = "1fsr0c2w16z45mcr85sqmllw1xf2gn6hp6f6fmgx2zfprq8gdmcr";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    faad2
+    fftwSinglePrec
+    libusb
+    qtbase
+    qtcharts
+    qtmultimedia
+    qtquickcontrols
+    qtquickcontrols2
+    rtl-sdr
+    soapysdr-with-plugins
+  ];
+
+  cmakeFlags = [
+    "-DRTLSDR=true" "-DSOAPYSDR=true"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A DAB/DAB+ Software Radio";
+    homepage = https://www.welle.io/;
+    maintainers = with maintainers; [ ck3d ];
+    license = licenses.gpl2;
+    platforms = with platforms; [ "x86_64-linux" "i686-linux" ] ++ darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wikicurses/default.nix b/nixpkgs/pkgs/applications/misc/wikicurses/default.nix
new file mode 100644
index 000000000000..d8628b794d71
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wikicurses/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "1.4";
+  name = "wikicurses-${version}";
+
+  src = fetchFromGitHub {
+    owner = "ids1024";
+    repo = "wikicurses";
+    rev = "v${version}";
+    sha256 = "0f14s4qx3q5pr5vn460c34b5mbz2xs62d8ljs3kic8gmdn8x2knm";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
+
+  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..6a5f7c17b208
--- /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..68f6c4df1593
--- /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/wordnet/default.nix b/nixpkgs/pkgs/applications/misc/wordnet/default.nix
new file mode 100644
index 000000000000..5d153a0e417f
--- /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";
+  name = "wordnet-${version}";
+  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..f9267411dda4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/worker/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, libX11, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "worker-${version}";
+  version = "3.15.2";
+
+  src = fetchurl {
+    url = "http://www.boomerangsworld.de/cms/worker/downloads/${name}.tar.gz";
+    sha256 = "0km17ls51vp4nxlppf58vvxxymyx6w3xlzjc8wghxpjj098v4pp8";
+  };
+
+  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 = [ maintainers.ndowens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/workrave/default.nix b/nixpkgs/pkgs/applications/misc/workrave/default.nix
new file mode 100644
index 000000000000..7e54f943856a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/workrave/default.nix
@@ -0,0 +1,47 @@
+{ 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 {
+  name = "workrave-${version}";
+  version = "1.10.23";
+
+  src = let
+  in fetchFromGitHub {
+    sha256 = "1qhlwfhwk5agv4904d6bsf83k9k89q7bms6agg967vsca4905vcw";
+    rev = with stdenv.lib;
+      "v" + concatStringsSep "_" (splitString "." 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/wsjtx/default.nix b/nixpkgs/pkgs/applications/misc/wsjtx/default.nix
new file mode 100644
index 000000000000..fd6be8f59201
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wsjtx/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, asciidoc, asciidoctor, autoconf, automake, cmake,
+  docbook_xsl, fftw, fftwFloat, gfortran, libtool, qtbase,
+  qtmultimedia, qtserialport, texinfo, libusb1 }:
+
+stdenv.mkDerivation rec {
+  name = "wsjtx-${version}";
+  version = "1.9.1";
+
+  # This is a composite source tarball containing both wsjtx and a hamlib fork
+  src = fetchurl {
+    url = "http://physics.princeton.edu/pulsar/K1JT/wsjtx-${version}.tgz";
+    sha256 = "143r17fri08mwz28g17wcfxy60h3xgfk46mln5lmdr9k6355aqqc";
+  };
+
+  # 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
+    texinfo
+  ];
+  buildInputs = [ fftw fftwFloat libusb1 qtbase qtmultimedia qtserialport ];
+
+  # Composite build 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 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 = http://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 = [ maintainers.lasandell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/wsjtx/wsjtx.patch b/nixpkgs/pkgs/applications/misc/wsjtx/wsjtx.patch
new file mode 100644
index 000000000000..a5bd7ec3e196
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wsjtx/wsjtx.patch
@@ -0,0 +1,12 @@
+Index: wsjtx/CMakeLists.txt
+===================================================================
+--- wsjtx/CMakeLists.txt	(revision 8382)
++++ wsjtx/CMakeLists.txt	(working copy)
+@@ -866,6 +866,7 @@
+ find_package (Qt5Widgets 5 REQUIRED)
+ find_package (Qt5Multimedia 5 REQUIRED)
+ find_package (Qt5PrintSupport 5 REQUIRED)
++find_package (Qt5SerialPort 5 REQUIRED)
+ 
+ if (WIN32)
+   add_definitions (-DQT_NEEDS_QTMAIN)
diff --git a/nixpkgs/pkgs/applications/misc/wtf/default.nix b/nixpkgs/pkgs/applications/misc/wtf/default.nix
new file mode 100644
index 000000000000..a01cef9227bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/wtf/default.nix
@@ -0,0 +1,28 @@
+{ buildGoPackage
+, fetchFromGitHub
+, lib
+}:
+
+buildGoPackage rec {
+  name = "wtf-${version}";
+  version = "0.4.0";
+
+  goPackagePath = "github.com/senorprogrammer/wtf";
+
+  src = fetchFromGitHub {
+    owner = "senorprogrammer";
+    repo = "wtf";
+    rev = "${version}";
+    sha256 = "1vgjqmw27baiq9brmnafic3w3hw11p5qc6ahbdxi5n5n4bx7j6vn";
+  };
+
+  buildFlagsArray = [ "-ldflags=" "-X main.version=${version}" ];
+
+  meta = with lib; {
+    description = "The personal information dashboard for your terminal";
+    homepage = http://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..c677f7371fca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xastir/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, autoreconfHook
+, curl, db, gdal, libgeotiff
+, libXpm, libXt, motif, pcre
+, perl, proj, rastermagick, shapelib
+}:
+
+stdenv.mkDerivation rec {
+  name = "xastir-${version}";
+  version = "208";
+
+  src = fetchFromGitHub {
+    owner = "Xastir";
+    repo = "Xastir";
+    rev = "707f3aa8c7ca3e3fecd32d5a4af3f742437e5dce";
+    sha256 = "1mm22vn3hws7dmg9wpaj4s0zkzb77i3aqa2ay3q6kqjkdhv25brl";
+  };
+
+  buildInputs = [
+    autoreconfHook
+    curl db gdal 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..045354da3d60
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xautoclick/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, xorg, pkgconfig
+, gtkSupport ? true, gtk2
+, qtSupport ? true, qt4
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.31";
+  name = "xautoclick-${version}";
+  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
+  '';
+
+  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..280b30128727
--- /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 {
+  name = "xca-${version}";
+  version = "2.1.2";
+
+  src = fetchFromGitHub {
+    owner  = "chris2511";
+    repo   = "xca";
+    rev    = "RELEASE.${version}";
+    sha256 = "0slfqmz0b01lwmrv4h78hmrsdrhcyc7sjzsxcw05ylgmhvdq3dw9";
+  };
+
+  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..a7a6500fd22a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xchm/default.nix
@@ -0,0 +1,22 @@
+{stdenv, fetchurl, wxGTK, chmlib}:
+
+stdenv.mkDerivation {
+  name = "xchm-1.23";
+  src = fetchurl {
+    url = mirror://sourceforge/xchm/xchm-1.23.tar.gz;
+    sha256 = "0qn0fyxcrn30ndq2asx31k0qkx3grbm16fb1y580wd2gjmh5r3wg";
+  };
+  buildInputs = [wxGTK chmlib];
+
+  postConfigure = ''
+    export NIX_LDFLAGS="$NIX_LDFLAGS $(${wxGTK}/lib/wx/config/* --libs | sed -e s@-pthread@@)"
+    echo $NIX_LDFLAGS
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A viewer for Microsoft HTML Help files";
+    homepage = http://xchm.sourceforge.net;
+    license = licenses.gpl2;
+    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..945072ce026e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xcruiser/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gccmakedep, xorg, 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..ed7f2b27c381
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xdgmenumaker/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, txt2tags, python2Packages }:
+
+stdenv.mkDerivation rec {
+  name = "xdgmenumaker-${version}";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "gapan";
+    repo = "xdgmenumaker";
+    rev = version;
+    sha256 = "1vrsp5c1ah7p4dpwd6aqvinpwzd8crdimvyyr3lbm3c6cwpyjmif";
+  };
+
+  nativeBuildInputs = [
+    txt2tags
+    python2Packages.wrapPython
+  ];
+
+  pythonPath = [
+    python2Packages.pyxdg
+    python2Packages.pygtk
+  ];
+
+  installPhase = ''
+    make install PREFIX=$out DESTDIR=
+    wrapProgram "$out/bin/xdgmenumaker" \
+      --prefix XDG_DATA_DIRS : "$out/share"
+    wrapPythonPrograms
+  '';
+  
+  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..444ab802673e
--- /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..5d2b70a80ee4
--- /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..7148caf35d34
--- /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 {
+  name = "xiphos-${version}";
+  version = "4.0.7";
+
+  src = fetchFromGitHub {
+    owner = "crosswire";
+    repo = "xiphos";
+    rev = "${version}";
+    sha256 = "1vwf1ps6nrajxl1qbs6v1cgykmq5wn4j09j10gbcd3b2nvrprf3g";
+  };
+
+  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};
+  '';
+
+  configureFlags= [ "--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..ccbb88bd1a8e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkbd/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, freetype, libXrender, libXft, xextproto
+, xinput, libXi, libXext, libXtst, libXpm, libX11, xproto, autoreconfHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "xkbd-${version}";
+  version = "0.8.18";
+
+  src = fetchFromGitHub {
+    owner = "mahatma-kaganovich";
+    repo = "xkbd";
+    rev = name;
+    sha256 = "05ry6q75jq545kf6p20nhfywaqf2wdkfiyp6iwdpv9jh238hf7m9";
+  };
+
+  buildInputs = [
+    freetype libXrender libXft libXext libXtst libXpm libX11
+    libXi xextproto xinput xproto
+  ];
+
+  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..3f3865d7688a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkblayout-state/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, qt4 }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  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..38bda9a8f560
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xkbmon/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, libX11 }:
+
+stdenv.mkDerivation rec {
+  name = "xkbmon-${version}";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "xkbmon";
+    repo = "xkbmon";
+    rev = version;
+    sha256 = "1smyqsd9cpbzqaplm221a8mq0nham6rg6hjsm9g5gph94xmk6d67";
+  };
+
+  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.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xlog/default.nix b/nixpkgs/pkgs/applications/misc/xlog/default.nix
new file mode 100644
index 000000000000..c0b0ef63369f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xlog/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, glib, gtk2, pkgconfig, hamlib }:
+stdenv.mkDerivation rec {
+  name = "xlog-${version}";
+  version = "2.0.15";
+  
+  src = fetchurl {
+    url = "https://download.savannah.gnu.org/releases/xlog/${name}.tar.gz";
+    sha256 = "0an883wqw3zwpw8nqinm9cb17hp2xw9vf603k4l2345p61jqdw2j";
+  };
+
+  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/misc/xmind/default.nix b/nixpkgs/pkgs/applications/misc/xmind/default.nix
new file mode 100644
index 000000000000..a12f3dc304ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmind/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, lib, dpkg, fetchurl, gtk2, jre, libXtst, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "xmind-${version}";
+  version = "7.5-update1";
+
+  src = if stdenv.hostPlatform.system == "i686-linux" then fetchurl {
+    url = "http://dl2.xmind.net/xmind-downloads/${name}-linux_i386.deb";
+    sha256 = "04kr6pw0kwy715bp9wcnqnw1k5wl65xa87lhljrskm291p402jy1";
+  } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl {
+    url = "http://dl2.xmind.net/xmind-downloads/${name}-linux_amd64.deb";
+    sha256 = "1j2ynhk7p3m3vd6c4mjwpnlzqgfj5c4q3zydab3nfwncwx6gaqj9";
+  } else throw "platform ${stdenv.hostPlatform.system} not supported!";
+
+  nativeBuildInputs = [ dpkg makeWrapper ];
+
+  unpackCmd = "mkdir root ; dpkg-deb -x $curSrc root";
+
+  dontBuild = true;
+  dontPatchELF = true;
+  dontStrip = true;
+
+  libPath = lib.makeLibraryPath [ gtk2 libXtst ];
+
+  installPhase = ''
+    mkdir -p $out
+    cp -r usr/lib/xmind $out/libexec
+    cp -r usr/bin usr/share $out
+    rm $out/libexec/XMind.ini
+    mv etc/XMind.ini $out/libexec
+
+    patchelf --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+      $out/libexec/XMind
+
+    wrapProgram $out/libexec/XMind \
+      --prefix LD_LIBRARY_PATH : "${libPath}"
+
+    substituteInPlace "$out/bin/XMind" \
+       --replace '/usr/lib/xmind' "$out/libexec"
+
+    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 = http://www.xmind.net/;
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ michalrus ];
+  };
+}
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..0fb2cec29161
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmr-stak/default.nix
@@ -0,0 +1,45 @@
+{ 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.7.1";
+
+  src = fetchFromGitHub {
+    owner = "fireice-uk";
+    repo = "xmr-stak";
+    rev = "${version}";
+    sha256 = "1mlli8sx1f3922ygnwakmi2h3swccz62njxbzxfzbi4hlmvsaz0y";
+  };
+
+  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;
+    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..c13f8ed4f400
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmrig/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, openssl
+, donateLevel ? 0
+}:
+
+stdenv.mkDerivation rec {
+  name = "xmrig-${version}";
+  version = "2.8.3";
+
+  src = fetchFromGitHub {
+    owner = "xmrig";
+    repo = "xmrig";
+    rev = "v${version}";
+    sha256 = "144i24c707fja89iqcc511b4077p53q8w2cq5zd26hry2i4i3abi";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libuv libmicrohttpd openssl ];
+
+  postPatch = ''
+    substituteInPlace src/donate.h --replace "kDonateLevel = 5;" "kDonateLevel = ${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 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix b/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix
new file mode 100644
index 000000000000..c013a9cc44ec
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xmrig/proxy.nix
@@ -0,0 +1,34 @@
+{ stdenv, lib, fetchFromGitHub, cmake, libuv, libmicrohttpd, libuuid
+, donateLevel ? 0
+}:
+
+stdenv.mkDerivation rec {
+  name = "xmrig-proxy-${version}";
+  version = "2.6.4";
+
+  src = fetchFromGitHub {
+    owner = "xmrig";
+    repo = "xmrig-proxy";
+    rev = "v${version}";
+    sha256 = "0h6ihrrkgwi8k642iqq13qx3zlxl9r8q7wm417hb7j35rnmwn8lq";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libuv libmicrohttpd libuuid ];
+
+  # Set default donation level to 0%. Can be increased at runtime via --donate-level option.
+  postPatch = ''
+    substituteInPlace src/donate.h --replace "kDonateLevel = 2;" "kDonateLevel = ${toString donateLevel};"
+  '';
+
+  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..c6438a21f2c3
--- /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 rec {
+   name = "xneur-${version}";
+   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..f066876f5730
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpad/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl
+, autoreconfHook, pkgconfig, wrapGAppsHook
+, glib, intltool, gtk3, gtksourceview, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  name = "xpad-${version}";
+  version = "5.2.0";
+
+  src = fetchurl {
+    url = "https://launchpad.net/xpad/trunk/${version}/+download/xpad-${version}.tar.bz2";
+    sha256 = "1ab33vg3fz57lz19jjwa3vp3vnln4pnh60hwlkq59la53s8lyijk";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ];
+
+  buildInputs = [ glib intltool gtk3 gtksourceview hicolor-icon-theme ];
+
+  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..7e0369b277d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xpdf/default.nix
@@ -0,0 +1,51 @@
+{ enableGUI ? true, enablePDFtoPPM ? true, useT1Lib ? false
+, stdenv, fetchurl, zlib, libpng, freetype ? null, t1lib ? null
+, cmake, qtbase ? null, qtsvg ? null, makeWrapper
+}:
+
+assert enableGUI -> qtbase != null && qtsvg != null && freetype != null;
+assert enablePDFtoPPM -> freetype != null;
+assert useT1Lib -> t1lib != null;
+
+assert !useT1Lib; # t1lib has multiple unpatched security vulnerabilities
+
+stdenv.mkDerivation {
+  name = "xpdf-4.00";
+
+   src = fetchurl {
+    url = http://www.xpdfreader.com/dl/xpdf-4.00.tar.gz;
+    sha256 = "1mhn89738vjva14xr5gblc2zrdgzmpqbbjdflqdmpqv647294ggz";
+  };
+
+  # 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 makeWrapper ];
+
+  cmakeFlags = ["-DSYSTEM_XPDFRC=/etc/xpdfrc" "-DA4_PAPER=ON"];
+
+  buildInputs = [ zlib libpng ] ++
+    stdenv.lib.optional enableGUI qtbase ++
+    stdenv.lib.optional useT1Lib t1lib ++
+    stdenv.lib.optional enablePDFtoPPM freetype;
+
+  # Debian uses '-fpermissive' to bypass some errors on char* constantness.
+  CXXFLAGS = "-O2 -fpermissive";
+
+  hardeningDisable = [ "format" ];
+
+  postInstall = stdenv.lib.optionalString (stdenv.isDarwin && enableGUI) ''
+    wrapProgram $out/bin/xpdf \
+      --set QT_PLUGIN_PATH ${qtbase.bin}/${qtbase.qtPluginPrefix}:${qtsvg.bin}/${qtbase.qtPluginPrefix}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.xpdfreader.com;
+    description = "Viewer for Portable Document Format (PDF) files";
+    license = with licenses; [ gpl2 gpl3 ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.peti ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix b/nixpkgs/pkgs/applications/misc/xpdf/libxpdf.nix
new file mode 100644
index 000000000000..cf6f5f32ee2a
--- /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..bb3385ad016a
--- /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";
+  name = "xrandr-invert-colors-${version}";
+  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..fe65004b32ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xrq/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libX11}:
+
+stdenv.mkDerivation rec {
+  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..28ce4a0d500d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xscope/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, libXt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "xscope";
+  version = "1.4.1";
+
+  src = fetchurl {
+    url = "mirror://xorg/individual/app/${name}.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/xsw/default.nix b/nixpkgs/pkgs/applications/misc/xsw/default.nix
new file mode 100644
index 000000000000..3e8acff00f89
--- /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 {
+  name = "xsw-${version}";
+  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 = 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/xterm/default.nix b/nixpkgs/pkgs/applications/misc/xterm/default.nix
new file mode 100644
index 000000000000..3a3025e7d692
--- /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-339";
+
+  src = fetchurl {
+    urls = [
+     "ftp://ftp.invisible-island.net/xterm/${name}.tgz"
+     "https://invisible-mirror.net/archives/xterm/${name}.tgz"
+   ];
+    sha256 = "1kigkl4va1jxycqcf5dkg4d74j1fgrxhfbp8ib367crn6fqnprk5";
+  };
+
+  buildInputs =
+    [ xorg.libXaw xorg.xproto 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/cgit/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 = http://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..f3e743b5528c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/xtermcontrol/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "3.6";
+  name = "xtermcontrol-${version}";
+
+  src = fetchurl {
+    url = "https://thrysoee.dk/xtermcontrol/xtermcontrol-${version}.tar.gz";
+    sha256 = "01bwgxya6qh4br2lx3v98p7j1b99skgr6c1frw5kdkxy57qlpgkz";
+  };
+
+  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..56638d126c19
--- /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/yaft/default.nix b/nixpkgs/pkgs/applications/misc/yaft/default.nix
new file mode 100644
index 000000000000..0794b2b6dbe9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yaft/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "0.2.9";
+  name = "yaft-${version}";
+
+  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 = with stdenv.lib.maintainers; [ ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/yakuake/default.nix b/nixpkgs/pkgs/applications/misc/yakuake/default.nix
new file mode 100644
index 000000000000..8f8494ac45b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yakuake/default.nix
@@ -0,0 +1,70 @@
+{ mkDerivation
+, lib
+, fetchurl
+, kdoctools
+, wrapGAppsHook
+, extra-cmake-modules
+, karchive
+, kcrash
+, kdbusaddons
+, ki18n
+, kiconthemes
+, knewstuff
+, knotifications
+, knotifyconfig
+, konsole
+, kparts
+, kwindowsystem
+, qtx11extras
+}:
+
+mkDerivation rec {
+  pname = "yakuake";
+  version = "3.0.5";
+  name = "${pname}-${version}";
+
+    src = fetchurl {
+      url = "http://download.kde.org/stable/${pname}/${version}/src/${name}.tar.xz";
+      sha256 = "021a9mnghffv2mrdl987mn7wbg8bk6bnf6xz8kn2nwsqxp9kpqh8";
+    };
+
+    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 wrapGAppsHook
+  ];
+
+  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/yarssr/default.nix b/nixpkgs/pkgs/applications/misc/yarssr/default.nix
new file mode 100644
index 000000000000..a8ff981400a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yarssr/default.nix
@@ -0,0 +1,68 @@
+{
+fetchFromGitHub, stdenv, lib,
+makeWrapper, pkgs,
+perl, 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
+    pkgs.gtk2
+  ];
+in
+stdenv.mkDerivation rec {
+  version = "git-2017-12-01";
+  name = "yarssr-${version}";
+
+  src = fetchFromGitHub {
+    owner = "JGRennison";
+    repo = "yarssr";
+    rev = "e70eb9fc6563599bfb91c6de6a79654de531c18d";
+    sha256 = "0x7hz8x8qyp3i1vb22zhcnvwxm3jhmmmlr22jqc5b09vpmbw1l45";
+  };
+
+  nativeBuildInputs = [ perl pkgs.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 "${lib.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..53d427e61c2c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yate/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, lib, qt4, openssl, autoconf, automake, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "yate-${version}";
+  version = "6.0.0-1";
+
+  src = fetchurl {
+    url = "http://voip.null.ro/tarballs/yate${lib.versions.major version}/${name}.tar.gz";
+    sha256 = "05qqdhi3rp5660gq1484jkmxkm9vq81j0yr765h0gf0xclan1dqa";
+  };
+
+  # TODO zaptel ? postgres ?
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ qt4 openssl autoconf automake ];
+
+  # /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..dec861009eb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yokadi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, buildPythonApplication, dateutil,
+  sqlalchemy, setproctitle, icalendar, pycrypto }:
+
+buildPythonApplication rec {
+  pname = "yokadi";
+  version = "1.1.1";
+
+  src = fetchurl {
+    url = "https://yokadi.github.io/download/${pname}-${version}.tar.bz2";
+    sha256 = "af201da66fd3a8435b2ccd932082ab9ff13f5f2e3d6cd3624f1ab81c577aaf17";
+  };
+
+  propagatedBuildInputs = [
+    dateutil
+    sqlalchemy
+    setproctitle
+    icalendar
+    pycrypto
+  ];
+
+  # 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..8843c821ffb4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/yubioath-desktop/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl,  python27Packages, pcsclite, yubikey-personalization }:
+
+python27Packages.buildPythonApplication rec {
+    namePrefix = "";
+    name = "yubioath-desktop-${version}";
+    version = "3.1.0";
+
+    src = fetchurl {
+      url = "https://developers.yubico.com/yubioath-desktop/Releases/yubioath-desktop-${version}.tar.gz";
+      sha256 = "0jfvllgh88g2vwd8sg6willlnn2hq05nd9d3xmv98lhl7gyy1akw";
+    };
+
+    doCheck = false;
+
+    buildInputs = [ stdenv ];
+
+    propagatedBuildInputs = [ python27Packages.pycrypto python27Packages.click python27Packages.pyscard python27Packages.pyside ];
+
+    # Need LD_PRELOAD for libykpers as the Nix cpython disables ctypes.cdll.LoadLibrary
+    # support that the yubicommon library uses to load libykpers
+    makeWrapperArgs = ''--prefix LD_LIBRARY_PATH : "${stdenv.lib.getLib pcsclite}/lib:${yubikey-personalization}/lib" --prefix LD_PRELOAD : "${yubikey-personalization}/lib/libykpers-1.so"'';
+
+    postInstall = ''
+      mkdir -p $out/share/applications
+      cp resources/yubioath.desktop $out/share/applications/yubioath.desktop
+      mkdir -p $out/share/yubioath/icons
+      cp resources/yubioath*.{icns,ico,png,xpm} $out/share/yubioath/icons
+      substituteInPlace $out/share/applications/yubioath.desktop \
+        --replace 'Exec=yubioath-gui' "Exec=$out/bin/yubioath-gui" \
+        --replace 'Icon=yubioath' "Icon=$out/share/yubioath/icons"
+
+    '';
+
+    meta = {
+      description = "Yubikey Desktop Authenticator";
+
+      homepage = https://www.yubico.com/support/knowledge-base/categories/articles/yubico-authenticator-download/;
+
+      license = stdenv.lib.licenses.gpl3;
+    };
+}
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..4cf05a21636a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, meson, ninja, makeWrapper, pkgconfig
+, appstream-glib, desktop-file-utils, python3
+, gtk, girara, gettext, libxml2
+, sqlite, glib, texlive, libintl, libseccomp
+, gtk-mac-integration, synctexSupport ? true
+}:
+
+assert synctexSupport -> texlive != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "zathura-core-${version}";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/zathura/download/zathura-${version}.tar.xz";
+    sha256 = "1znr3psqda06xklzj8mn452w908llapcg1rj468jwpg0wzv6pxfn";
+  };
+
+  outputs = [ "bin" "man" "dev" "out" ];
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig appstream-glib desktop-file-utils python3.pkgs.sphinx
+    gettext makeWrapper libxml2
+  ];
+
+  buildInputs = [
+    gtk girara libintl libseccomp
+    sqlite glib
+  ] ++ optional synctexSupport texlive.bin.core
+    ++ optional stdenv.isDarwin [ gtk-mac-integration ];
+
+  meta = {
+    homepage = https://pwmt.org/projects/zathura/;
+    description = "A core component for zathura PDF viewer";
+    license = licenses.zlib;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ garbas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/misc/zathura/default.nix b/nixpkgs/pkgs/applications/misc/zathura/default.nix
new file mode 100644
index 000000000000..e67bebb37100
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/default.nix
@@ -0,0 +1,30 @@
+{ pkgs, useMupdf ? true, synctexSupport ? true }:
+
+let
+  callPackage = pkgs.newScope self;
+
+  self = rec {
+    gtk = pkgs.gtk3;
+
+    zathura_core = callPackage ./core {
+      inherit synctexSupport;
+    };
+
+    zathura_pdf_poppler = callPackage ./pdf-poppler { };
+
+    zathura_pdf_mupdf = callPackage ./pdf-mupdf { };
+
+    zathura_djvu = callPackage ./djvu { };
+
+    zathura_ps = callPackage ./ps { };
+
+    zathuraWrapper = callPackage ./wrapper.nix {
+      plugins = [
+        zathura_djvu
+        zathura_ps
+        (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..58985dced425
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/djvu/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, meson, ninja, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }:
+
+stdenv.mkDerivation rec {
+  name = "zathura-djvu-0.2.8";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/zathura/plugins/download/${name}.tar.xz";
+    sha256 = "0axkv1crdxn0z44whaqp2ibkdqcykhjnxk7qzms0dp1b67an9rnh";
+  };
+
+  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; [ garbas ];
+  };
+}
+
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..709c1edb0b83
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/pdf-mupdf/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, meson, ninja, fetchurl, fetchFromGitHub
+, pkgconfig, zathura_core, cairo , gtk-mac-integration, girara, mupdf }:
+
+stdenv.mkDerivation rec {
+  version = "0.3.4";
+  name = "zathura-pdf-mupdf-${version}";
+
+  # pwmt.org server was down at the time of last update
+  # src = fetchurl {
+  #   url = "https://pwmt.org/projects/zathura-pdf-mupdf/download/${name}.tar.xz";
+  #   sha256 = "1zbaqimav4wfgimpy3nfzl10qj7vyv23rdy2z5z7z93jwbp2rc2j";
+  # };
+  src = fetchFromGitHub {
+    owner = "pwmt";
+    repo = "zathura-pdf-mupdf";
+    rev = version;
+    sha256 = "1m4w4jrybpjmx6pi33a5saxzmfd8rrym2k13jpd1fv543s17d9dy";
+  };
+
+  nativeBuildInputs = [ meson ninja pkgconfig ];
+
+  buildInputs = [
+    zathura_core girara mupdf cairo
+  ] ++ stdenv.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..663e798ee0b4
--- /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 {
+  version = "0.2.9";
+  name = "zathura-pdf-poppler-${version}";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/zathura/plugins/download/${name}.tar.xz";
+    sha256 = "1p4jcny0jniygns78mcf0nlm298dszh49qpmjmackrm6dq8hc25y";
+  };
+
+  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 garbas ];
+  };
+}
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..07e4c5d715b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/ps/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core, girara, libspectre, gettext }:
+
+stdenv.mkDerivation rec {
+  name = "zathura-ps-0.2.6";
+
+  src = fetchurl {
+    url = "https://pwmt.org/projects/zathura/plugins/download/${name}.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 garbas ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix b/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix
new file mode 100644
index 000000000000..b81d12947e41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zathura/wrapper.nix
@@ -0,0 +1,32 @@
+{ 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 ];
+
+  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://pwmt.org/projects/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;[ garbas smironov ];
+  };
+}
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..ec8deadf9f54
--- /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..bdf6d0da1457
--- /dev/null
+++ b/nixpkgs/pkgs/applications/misc/zola/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, rustPlatform, cmake, pkgconfig, openssl, CoreServices, cf-private }:
+
+rustPlatform.buildRustPackage rec {
+  name = "zola-${version}";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "getzola";
+    repo = "zola";
+    rev = "v${version}";
+    sha256 = "0as8nrzw9zz10w4xxiibgz8ylghc879b2pwaxnw8sjbji2d9qv63";
+  };
+
+  cargoSha256 = "0a14hq8d3xjr6yfg5qn5r7npqivm816f1p53bbm826igvpc9hsxa";
+
+  nativeBuildInputs = [ cmake pkgconfig openssl ];
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices cf-private ];
+
+  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..18876cf355b8
--- /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;
+  };
+}