summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorAntono Vasiljev <self@antono.info>2012-12-23 00:17:23 +0200
committerAntono Vasiljev <self@antono.info>2012-12-23 00:17:23 +0200
commitd4fc33b13ae238793a085e8b91cc297353227c17 (patch)
tree80ce4a12b4b26bec8333297742a2c639db350724 /pkgs
parent495f4c597f664be45049d625d7d9a6ae5dddd5ca (diff)
parent6e02c33e0b57755215f2585f515df1678f546a8c (diff)
downloadnixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar.gz
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar.bz2
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar.lz
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar.xz
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.tar.zst
nixpkgs-d4fc33b13ae238793a085e8b91cc297353227c17.zip
Merge branch 'master' into arduino
Conflicts:
	pkgs/top-level/all-packages.nix
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/amarok/live.nix37
-rw-r--r--pkgs/applications/audio/audacity/default.nix4
-rw-r--r--pkgs/applications/audio/pavucontrol/default.nix8
-rw-r--r--pkgs/applications/editors/ed/default.nix11
-rw-r--r--pkgs/applications/editors/geany/default.nix4
-rw-r--r--pkgs/applications/editors/jedit/wrapper.nix18
-rw-r--r--pkgs/applications/editors/nedit/default.nix4
-rw-r--r--pkgs/applications/editors/vbindiff/default.nix19
-rw-r--r--pkgs/applications/editors/zile/default.nix4
-rw-r--r--pkgs/applications/graphics/darktable/default.nix8
-rw-r--r--pkgs/applications/graphics/darktable/libpng-15.patch22
-rw-r--r--pkgs/applications/graphics/dia/default.nix4
-rw-r--r--pkgs/applications/graphics/freecad/cmakeinstall.patch55
-rw-r--r--pkgs/applications/graphics/freecad/default.nix22
-rw-r--r--pkgs/applications/graphics/freecad/pythonpath.patch18
-rw-r--r--pkgs/applications/graphics/kuickshow/builder.sh10
-rw-r--r--pkgs/applications/graphics/openscad/default.nix19
-rw-r--r--pkgs/applications/graphics/rawtherapee/optional-rawzor.patch83
-rw-r--r--pkgs/applications/misc/fetchmail/security-fix.patch11
-rw-r--r--pkgs/applications/misc/gphoto2/src-for-gphotofs.nix1
-rw-r--r--pkgs/applications/misc/ikiwiki/default.nix4
-rw-r--r--pkgs/applications/misc/krusader/krusader-gcc44.patch10
-rw-r--r--pkgs/applications/misc/librecad/2.0.nix38
-rw-r--r--pkgs/applications/misc/librecad/default.nix22
-rw-r--r--pkgs/applications/misc/qcad/default.nix55
-rw-r--r--pkgs/applications/misc/qcad/qcad-2.0.4.0-1.src-intptr.patch24
-rw-r--r--pkgs/applications/misc/qcad/qcad-2.0.4.0-gcc43.patch45
-rw-r--r--pkgs/applications/misc/rxvt_unicode/default.nix6
-rw-r--r--pkgs/applications/misc/st/default.nix4
-rw-r--r--pkgs/applications/misc/xmobar/default.nix7
-rw-r--r--pkgs/applications/misc/xpdf/xpdf-3.01pl2.patch471
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix78
-rw-r--r--pkgs/applications/networking/browsers/chromium/sources.nix12
-rw-r--r--pkgs/applications/networking/browsers/firefox/16.0.nix185
-rw-r--r--pkgs/applications/networking/browsers/firefox/17.0.nix6
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix12
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsgif.nix4
-rw-r--r--pkgs/applications/networking/browsers/opera/default.nix14
-rw-r--r--pkgs/applications/networking/instant-messengers/skype/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/telepathy/kde/0.3.1.nix13
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix2
-rw-r--r--pkgs/applications/networking/remote/freerdp/default.nix22
-rw-r--r--pkgs/applications/networking/remote/freerdp/unstable.nix36
-rw-r--r--pkgs/applications/office/abiword/default.nix14
-rw-r--r--pkgs/applications/office/ledger/const.patch41
-rw-r--r--pkgs/applications/science/biology/slr/default.nix23
-rw-r--r--pkgs/applications/science/electronics/xoscope/gtkdepre.diff58
-rw-r--r--pkgs/applications/science/logic/eprover/default.nix (renamed from pkgs/applications/science/logic/eProver/default.nix)20
-rw-r--r--pkgs/applications/science/logic/eprover/default.upstream3
-rw-r--r--pkgs/applications/science/misc/golly/src-for-default.nix10
-rw-r--r--pkgs/applications/science/molecular-dynamics/gromacs/default.nix46
-rw-r--r--pkgs/applications/version-management/darcs/bash-completion.patch19
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix5
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-annex/default.nix7
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/docbook2texi-2.patch28
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/glob-path.patch529
-rw-r--r--pkgs/applications/version-management/git-and-tools/hub/default.nix28
-rw-r--r--pkgs/applications/version-management/mercurial/default.nix4
-rw-r--r--pkgs/applications/version-management/monotone-viz/1.0.1.nix23
-rw-r--r--pkgs/applications/version-management/monotone-viz/graphviz.patch34
-rw-r--r--pkgs/applications/version-management/rcs/no-root.patch23
-rw-r--r--pkgs/applications/version-management/veracity/src-for-default.nix10
-rw-r--r--pkgs/applications/video/gpac/default.nix36
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/video/tvtime/tvtime-1.0.2+linux-headers-2.6.18.patch15
-rw-r--r--pkgs/applications/virtualization/qemu/0.11.0.nix18
-rw-r--r--pkgs/applications/virtualization/qemu/0.13.nix19
-rw-r--r--pkgs/applications/virtualization/qemu/svn-6642.nix19
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix23
-rw-r--r--pkgs/applications/virtualization/virtualbox/guest-additions/default.nix6
-rw-r--r--pkgs/applications/window-managers/i3/default.nix4
-rw-r--r--pkgs/applications/window-managers/wmii/builder.sh24
-rw-r--r--pkgs/build-support/cabal/default.nix4
-rw-r--r--pkgs/build-support/fetchurl/mirrors.nix2
-rw-r--r--pkgs/build-support/upstream-updater/update-walker-service-specific.sh4
-rwxr-xr-xpkgs/build-support/upstream-updater/update-walker.sh49
-rwxr-xr-xpkgs/build-support/upstream-updater/urls-from-page.sh2
-rw-r--r--pkgs/build-support/vm/deb/deb-closure.pl17
-rw-r--r--pkgs/build-support/vm/default.nix90
-rw-r--r--pkgs/data/misc/themes/green.nix5
-rw-r--r--pkgs/data/misc/themes/theme-gnu.nix5
-rw-r--r--pkgs/desktops/kde-4.7/kdebindings/perlqt.nix10
-rw-r--r--pkgs/desktops/kde-4.7/kdebindings/smokekde.nix10
-rw-r--r--pkgs/desktops/kde-4.7/kdenetwork/log-feature.diff60
-rw-r--r--pkgs/desktops/kde-4.7/kdesdk/optional-docs.diff39
-rw-r--r--pkgs/desktops/kde-4.7/kipi-plugins.nix29
-rw-r--r--pkgs/development/androidenv/addon.xml153
-rw-r--r--pkgs/development/androidenv/addons.nix14
-rw-r--r--pkgs/development/androidenv/androidsdk.nix34
-rw-r--r--pkgs/development/androidenv/default.nix2
-rw-r--r--pkgs/development/androidenv/platform-tools.nix10
-rw-r--r--pkgs/development/androidenv/platforms-linux.nix14
-rw-r--r--pkgs/development/androidenv/platforms-macosx.nix14
-rw-r--r--pkgs/development/androidenv/repository-7.xml294
-rw-r--r--pkgs/development/androidenv/support.nix6
-rw-r--r--pkgs/development/androidenv/sysimages.nix10
-rw-r--r--pkgs/development/compilers/cmucl/binary.nix4
-rw-r--r--pkgs/development/compilers/ecl/default.nix66
-rw-r--r--pkgs/development/compilers/ecl/default.upstream4
-rw-r--r--pkgs/development/compilers/eql/default.nix39
-rw-r--r--pkgs/development/compilers/gcc/4.0/gcc-4.0.2-cxx.patch12
-rw-r--r--pkgs/development/compilers/gcc/4.2-apple32/builder.sh125
-rw-r--r--pkgs/development/compilers/gcc/4.2-apple32/debug_list.patch30
-rw-r--r--pkgs/development/compilers/gcc/4.2-apple32/default.nix31
-rw-r--r--pkgs/development/compilers/gcc/4.2-apple32/no-sys-dirs.patch126
-rw-r--r--pkgs/development/compilers/gcc/4.2-apple32/pass-cxxcpp.patch21
-rw-r--r--pkgs/development/compilers/gcc/4.7/default.nix9
-rw-r--r--pkgs/development/compilers/ghc/with-packages.nix7
-rw-r--r--pkgs/development/compilers/jdk/default.nix9
-rw-r--r--pkgs/development/compilers/jdk/jdk6-cygwin.nix48
-rw-r--r--pkgs/development/compilers/julia/default.nix41
-rw-r--r--pkgs/development/compilers/ocaml/cvs.nix31
-rw-r--r--pkgs/development/compilers/openjdk/default.nix8
-rw-r--r--pkgs/development/compilers/sbcl/default.nix11
-rw-r--r--pkgs/development/compilers/tiger/builder.sh15
-rw-r--r--pkgs/development/compilers/tiger/default.nix11
-rw-r--r--pkgs/development/interpreters/guile/default.nix4
-rw-r--r--pkgs/development/interpreters/hiphopvm/default.nix63
-rw-r--r--pkgs/development/interpreters/hiphopvm/tbb.patch13
-rw-r--r--pkgs/development/interpreters/php/5.3.nix13
-rw-r--r--pkgs/development/interpreters/php/fix.patch22
-rw-r--r--pkgs/development/interpreters/python/2.6/default.nix2
-rw-r--r--pkgs/development/interpreters/python/2.7/default.nix2
-rw-r--r--pkgs/development/interpreters/python/wrapper.nix2
-rw-r--r--pkgs/development/interpreters/spidermonkey/builder.sh31
-rw-r--r--pkgs/development/interpreters/toolbus/default.nix17
-rw-r--r--pkgs/development/libraries/SDL_image/default.nix34
-rw-r--r--pkgs/development/libraries/SDL_image/jpeg-linux.diff21
-rw-r--r--pkgs/development/libraries/boost/1.52.nix7
-rw-r--r--pkgs/development/libraries/cil-aterm/atermprinter.patch515
-rw-r--r--pkgs/development/libraries/cil-aterm/cil-aterm-1.3.3.nix12
-rw-r--r--pkgs/development/libraries/cil-aterm/cil-aterm-1.3.4.patch593
-rw-r--r--pkgs/development/libraries/cracklib/builder.sh13
-rw-r--r--pkgs/development/libraries/cracklib/default.nix7
-rw-r--r--pkgs/development/libraries/crypto++/default.nix5
-rw-r--r--pkgs/development/libraries/despotify/default.nix34
-rw-r--r--pkgs/development/libraries/directfb/src-for-default.nix10
-rw-r--r--pkgs/development/libraries/eigen/2.0.nix23
-rw-r--r--pkgs/development/libraries/eigen/default.nix4
-rw-r--r--pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch13
-rw-r--r--pkgs/development/libraries/ftgl/2.1.2.nix2
-rw-r--r--pkgs/development/libraries/gmp/4.3.1.nix27
-rw-r--r--pkgs/development/libraries/gnutls/default.nix5
-rw-r--r--pkgs/development/libraries/gtk-sharp-2/dllmap-glue.patch65
-rw-r--r--pkgs/development/libraries/haskell/Crypto/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/DAV/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/DSH/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/HDBC/HDBC-odbc.nix6
-rw-r--r--pkgs/development/libraries/haskell/HDBC/HDBC.nix4
-rw-r--r--pkgs/development/libraries/haskell/MemoTrie/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/aeson/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ansi-terminal/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/attoparsec-binary/attoparsec-binary-ghc7.6.1.patch20
-rw-r--r--pkgs/development/libraries/haskell/attoparsec/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/base64-conduit/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/blaze-html/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/blaze-markup/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/blaze-svg/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/bmp/1.2.2.1.nix (renamed from pkgs/development/libraries/haskell/bmp/default.nix)0
-rw-r--r--pkgs/development/libraries/haskell/bmp/1.2.3.2.nix15
-rw-r--r--pkgs/development/libraries/haskell/case-insensitive/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/cipher-aes/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/classy-prelude/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/cprng-aes/default.nix10
-rw-r--r--pkgs/development/libraries/haskell/crypto-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/crypto-random-api/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/cryptocipher/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/cryptohash/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/diagrams/cairo.nix12
-rw-r--r--pkgs/development/libraries/haskell/diagrams/contrib.nix18
-rw-r--r--pkgs/development/libraries/haskell/diagrams/core.nix11
-rw-r--r--pkgs/development/libraries/haskell/diagrams/diagrams.nix10
-rw-r--r--pkgs/development/libraries/haskell/diagrams/lib.nix12
-rw-r--r--pkgs/development/libraries/haskell/diagrams/svg.nix19
-rw-r--r--pkgs/development/libraries/haskell/digestive-functors-heist/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/dual-tree/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/either/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/errors/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/force-layout/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/generic-deriving/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ghc-mod/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/ghc-paths/default.nix5
-rw-r--r--pkgs/development/libraries/haskell/ghc-paths/ghc-paths-nix.patch43
-rw-r--r--pkgs/development/libraries/haskell/gloss/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/glpk-hs/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hakyll/default.nix5
-rw-r--r--pkgs/development/libraries/haskell/hamlet/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/happstack/happstack-server.nix12
-rw-r--r--pkgs/development/libraries/haskell/heist/default.nix16
-rw-r--r--pkgs/development/libraries/haskell/hjsmin/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hledger-web/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/hspec/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/http-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/http-reverse-proxy/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/iproute/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/kansas-lava/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/language-c-quote/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/largeword/default.nix6
-rw-r--r--pkgs/development/libraries/haskell/lens/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/lifted-base/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/minimorph/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/miniutter/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/monad-logger/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/monoid-extras/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/mpppc/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/mtl/2.1.nix14
-rw-r--r--pkgs/development/libraries/haskell/multiset/0.2.1.nix (renamed from pkgs/development/libraries/haskell/multiset/default.nix)0
-rw-r--r--pkgs/development/libraries/haskell/multiset/0.2.2.nix (renamed from pkgs/development/libraries/haskell/syb/default.nix)8
-rw-r--r--pkgs/development/libraries/haskell/netlist-to-vhdl/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/netlist/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/network-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/optparse-applicative/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pandoc/default.nix5
-rw-r--r--pkgs/development/libraries/haskell/parallel-io/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/parseargs/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pem/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent-postgresql/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent-sqlite/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent-template/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/persistent/default.nix8
-rw-r--r--pkgs/development/libraries/haskell/pool-conduit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/project-template/default.nix13
-rw-r--r--pkgs/development/libraries/haskell/repa-algorithms/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/repa-examples/default.nix12
-rw-r--r--pkgs/development/libraries/haskell/repa-io/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/repa/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/shelly/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/silently/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/simple-sendfile/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/sized-types/default.nix15
-rw-r--r--pkgs/development/libraries/haskell/snap/loader-dynamic.nix4
-rw-r--r--pkgs/development/libraries/haskell/snap/loader-static.nix4
-rw-r--r--pkgs/development/libraries/haskell/snap/snap.nix24
-rw-r--r--pkgs/development/libraries/haskell/stylish-haskell/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/syb/0.3.5.nix14
-rw-r--r--pkgs/development/libraries/haskell/tabular/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/test-framework-hunit/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework-th/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/test-framework/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/text/0.11.1.12.nix15
-rw-r--r--pkgs/development/libraries/haskell/time-compat/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/tls-extra/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/tls/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/uniplate/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/unix-time/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/unordered-containers/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/vault/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/vector-space/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/void/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-app-static/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/wai-extra/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/warp/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/word8/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-auth/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-core/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-default/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-form/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-persistent/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod-test/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/yesod/default.nix41
-rw-r--r--pkgs/development/libraries/hwloc/default.nix8
-rw-r--r--pkgs/development/libraries/intel-tbb/default.nix29
-rw-r--r--pkgs/development/libraries/levmar/use-atlas.patch37
-rw-r--r--pkgs/development/libraries/libdwarf/default.nix27
-rw-r--r--pkgs/development/libraries/libev/src-for-default.nix11
-rw-r--r--pkgs/development/libraries/libevent/1.4.nix29
-rw-r--r--pkgs/development/libraries/libiconv/default.nix20
-rw-r--r--pkgs/development/libraries/libixp/builder.sh32
-rw-r--r--pkgs/development/libraries/liblrdf/default.nix46
-rw-r--r--pkgs/development/libraries/libmcrypt/default.nix16
-rw-r--r--pkgs/development/libraries/libmemcached/default.nix18
-rw-r--r--pkgs/development/libraries/libmsn/libmsn-4.1-openssl-1.patch17
-rw-r--r--pkgs/development/libraries/libssh/default.nix13
-rw-r--r--pkgs/development/libraries/mesa/swrast-settexbuffer.patch24
-rw-r--r--pkgs/development/libraries/muparser/default.nix10
-rw-r--r--pkgs/development/libraries/oniguruma/default.nix16
-rw-r--r--pkgs/development/libraries/opencascade/default.nix10
-rw-r--r--pkgs/development/libraries/opencv/changeset_r3190.diff20
-rw-r--r--pkgs/development/libraries/opencv/default.nix4
-rw-r--r--pkgs/development/libraries/opencv/default.nix.edited27
-rw-r--r--pkgs/development/libraries/openmotif/default.nix32
-rw-r--r--pkgs/development/libraries/qt-4.x/4.8/default.nix2
-rw-r--r--pkgs/development/libraries/science/biology/bioconductor/bioconductor.nix43
-rw-r--r--pkgs/development/libraries/spice-protocol/default.nix4
-rw-r--r--pkgs/development/libraries/spice/default.nix11
-rw-r--r--pkgs/development/libraries/taglib/live.nix23
-rw-r--r--pkgs/development/libraries/tcp-wrappers/default.nix74
-rw-r--r--pkgs/development/libraries/tcp-wrappers/have-strerror.patch20
-rw-r--r--pkgs/development/libraries/tcp-wrappers/trivial-fixes.patch27
-rw-r--r--pkgs/development/ocaml-modules/lablgtkmathview/configure.patch14
-rw-r--r--pkgs/development/python-modules/generic/default.nix47
-rw-r--r--pkgs/development/python-modules/generic/wrap.sh13
-rw-r--r--pkgs/development/python-modules/offline-distutils/default.nix21
-rw-r--r--pkgs/development/python-modules/pil/default.nix8
-rw-r--r--pkgs/development/python-modules/pycrypto/default.nix15
-rw-r--r--pkgs/development/python-modules/python-gudev/default.nix25
-rw-r--r--pkgs/development/python-modules/recursive-pth-loader/default.nix20
-rw-r--r--pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py46
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/setuptools/site.nix16
-rw-r--r--pkgs/development/python-modules/zope/default.nix15
-rw-r--r--pkgs/development/python-modules/zope/zope_python-2.4.4.patch12
-rw-r--r--pkgs/development/python-modules/zope/zope_python-readline.patch12
-rw-r--r--pkgs/development/qtcreator/default.nix13
-rw-r--r--pkgs/development/tools/analysis/radare/lua.patch12
-rw-r--r--pkgs/development/tools/build-managers/apache-ant/core-apache-ant.nix12
-rw-r--r--pkgs/development/tools/build-managers/apache-ant/core-builder.sh51
-rw-r--r--pkgs/development/tools/casperjs/default.nix46
-rw-r--r--pkgs/development/tools/documentation/xdoc/builder.sh5
-rw-r--r--pkgs/development/tools/documentation/xdoc/default.nix13
-rw-r--r--pkgs/development/tools/haskell/hlint/default.nix4
-rw-r--r--pkgs/development/tools/haskell/uuagc/cabal.nix4
-rw-r--r--pkgs/development/tools/haskell/uuagc/default.nix4
-rw-r--r--pkgs/development/tools/misc/automake/default.nix1
-rw-r--r--pkgs/development/tools/misc/cflow/default.nix3
-rw-r--r--pkgs/development/tools/misc/cpphs/default.nix4
-rw-r--r--pkgs/development/tools/misc/distcc/default.nix1
-rw-r--r--pkgs/development/tools/misc/intltool/default.upstream1
-rw-r--r--pkgs/development/tools/neoload/default.nix26
-rw-r--r--pkgs/development/tools/parsing/re2c/default.nix13
-rw-r--r--pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.5.1.nix11
-rw-r--r--pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.6.nix11
-rw-r--r--pkgs/development/tools/phantomjs/default.nix63
-rw-r--r--pkgs/development/web/nodejs/default.nix4
-rw-r--r--pkgs/games/LambdaHack/default.nix12
-rw-r--r--pkgs/games/exult/snapshot.nix44
-rw-r--r--pkgs/games/gnuchess/default.nix49
-rw-r--r--pkgs/games/gnuchess/default.upstream1
-rw-r--r--pkgs/games/lincity/ng.nix35
-rw-r--r--pkgs/games/lincity/ng.upstream5
-rw-r--r--pkgs/games/pingus/default.nix29
-rw-r--r--pkgs/games/pingus/default.upstream1
-rw-r--r--pkgs/games/scid/default.nix55
-rw-r--r--pkgs/games/warsow/default.nix14
-rw-r--r--pkgs/games/worldofgoo/default.nix83
-rw-r--r--pkgs/games/xboard/default.nix47
-rw-r--r--pkgs/games/xboard/default.upstream1
-rw-r--r--pkgs/games/xboard/src-for-default.nix9
-rw-r--r--pkgs/games/xboard/src-info-for-default.nix4
-rw-r--r--pkgs/games/xmoto/default.nix4
-rw-r--r--pkgs/games/xmoto/r3402.patch26
-rw-r--r--pkgs/games/xmoto/src-for-default.nix8
-rw-r--r--pkgs/lib/modules.nix36
-rw-r--r--pkgs/lib/platforms.nix7
-rw-r--r--pkgs/lib/properties.nix98
-rw-r--r--pkgs/lib/types.nix14
-rw-r--r--pkgs/misc/cups/drivers/samsung/builder.sh35
-rw-r--r--pkgs/misc/cups/drivers/samsung/default.nix35
-rw-r--r--pkgs/misc/drivers/gutenprint/bin.nix3
-rw-r--r--pkgs/misc/emulators/dlx/default.nix28
-rw-r--r--pkgs/misc/emulators/wine/default.nix10
-rw-r--r--pkgs/misc/emulators/wine/default.upstream11
-rw-r--r--pkgs/misc/ghostscript/libpng-1.5.patch198
-rw-r--r--pkgs/misc/rosegarden/default.nix59
-rw-r--r--pkgs/misc/screensavers/rss-glx/builder.sh31
-rw-r--r--pkgs/misc/screensavers/rss-glx/default.nix2
-rw-r--r--pkgs/os-specific/linux/alsa-plugins/default.nix9
-rw-r--r--pkgs/os-specific/linux/atheros/inj.patch32
-rw-r--r--pkgs/os-specific/linux/atheros/r3867.nix45
-rw-r--r--pkgs/os-specific/linux/aufs-util/2.1.nix42
-rw-r--r--pkgs/os-specific/linux/aufs-util/3.nix3
-rw-r--r--pkgs/os-specific/linux/aufs/2.1.nix48
-rw-r--r--pkgs/os-specific/linux/aufs/3.nix3
-rw-r--r--pkgs/os-specific/linux/cryptodev/default.nix5
-rw-r--r--pkgs/os-specific/linux/fbterm/default.nix48
-rw-r--r--pkgs/os-specific/linux/fbterm/default.upstream3
-rw-r--r--pkgs/os-specific/linux/fbterm/src-for-default.nix9
-rw-r--r--pkgs/os-specific/linux/fbterm/src-info-for-default.nix4
-rw-r--r--pkgs/os-specific/linux/fbterm/stdenv.nix35
-rw-r--r--pkgs/os-specific/linux/fuse/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/generic.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.0.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.2.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.6.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.7.nix271
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix17
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix58
-rw-r--r--pkgs/os-specific/linux/kudzu/builder.sh13
-rw-r--r--pkgs/os-specific/linux/kudzu/default.nix13
-rw-r--r--pkgs/os-specific/linux/kudzu/kudzu-python.patch21
-rw-r--r--pkgs/os-specific/linux/libnl/libnl-1.1-flags.patch11
-rw-r--r--pkgs/os-specific/linux/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch13
-rw-r--r--pkgs/os-specific/linux/libnl/libnl-1.1-minor-leaks.patch40
-rw-r--r--pkgs/os-specific/linux/libnl/libnl-1.1-vlan-header.patch80
-rw-r--r--pkgs/os-specific/linux/libnl/v1.nix27
-rw-r--r--pkgs/os-specific/linux/libnl/v2.nix19
-rw-r--r--pkgs/os-specific/linux/nfs-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/legacy304.nix51
-rw-r--r--pkgs/os-specific/linux/ov511/ov511-2.30-default.nix2
-rw-r--r--pkgs/os-specific/linux/ov511/ov511-2.32-builder.sh22
-rw-r--r--pkgs/os-specific/linux/ov511/ov511-2.32-default.nix13
-rw-r--r--pkgs/os-specific/linux/ov511/ov511-2.32.patch13
-rw-r--r--pkgs/os-specific/linux/pam_ssh_agent_auth/default.nix12
-rw-r--r--pkgs/os-specific/linux/pam_ssh_agent_auth/multiple-key-files.patch338
-rw-r--r--pkgs/os-specific/linux/sepolgen/default.nix22
-rw-r--r--pkgs/os-specific/linux/spl/default.nix2
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix22
-rw-r--r--pkgs/os-specific/linux/systemd/listunitfiles-abort.patch20
-rw-r--r--pkgs/os-specific/linux/tcp-wrappers/builder.sh (renamed from pkgs/os-specific/linux/tcp-wrapper/builder.sh)0
-rw-r--r--pkgs/os-specific/linux/tcp-wrappers/default.nix (renamed from pkgs/os-specific/linux/tcp-wrapper/default.nix)0
-rw-r--r--pkgs/os-specific/linux/upstart/cfgdir.patch45
-rw-r--r--pkgs/os-specific/linux/util-linux/default.nix3
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix17
-rw-r--r--pkgs/servers/gpm/1.99.6.nix23
-rw-r--r--pkgs/servers/http/4store/default.nix7
-rw-r--r--pkgs/servers/http/4store/src-for-default.nix8
-rw-r--r--pkgs/servers/http/couchdb/src-for-default.nix14
-rw-r--r--pkgs/servers/http/myserver/installable-binary.patch14
-rw-r--r--pkgs/servers/memcached/default.nix6
-rw-r--r--pkgs/servers/monitoring/zabbix/2.0.nix70
-rw-r--r--pkgs/servers/nosql/redis/default.nix2
-rw-r--r--pkgs/servers/portmap/default.nix4
-rw-r--r--pkgs/servers/sql/mysql55/default.nix7
-rw-r--r--pkgs/servers/sql/postgresql/8.3.x.nix4
-rw-r--r--pkgs/servers/sql/postgresql/8.4.x.nix4
-rw-r--r--pkgs/servers/sql/postgresql/9.0.x.nix4
-rw-r--r--pkgs/servers/sql/postgresql/9.1.x.nix4
-rw-r--r--pkgs/servers/sql/postgresql/9.2.x.nix35
-rw-r--r--pkgs/servers/x11/xorg/overrides.nix13
-rw-r--r--pkgs/servers/x11/xorg/xorgserver.sh9
-rw-r--r--pkgs/stdenv/default.nix5
-rw-r--r--pkgs/stdenv/generic/default.nix5
-rw-r--r--pkgs/stdenv/native/default.nix32
-rw-r--r--pkgs/tools/X11/xcalib/default.nix25
-rw-r--r--pkgs/tools/archivers/cpio/latest.nix45
-rw-r--r--pkgs/tools/backup/duplicity/default.nix6
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.nix32
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.upstream4
-rw-r--r--pkgs/tools/filesystems/glusterfs/src-for-default.nix8
-rw-r--r--pkgs/tools/filesystems/glusterfs/src-info-for-default.nix6
-rw-r--r--pkgs/tools/filesystems/unionfs-fuse/default.nix20
-rw-r--r--pkgs/tools/graphics/argyllcms/default.nix85
-rw-r--r--pkgs/tools/graphics/asymptote/default.nix11
-rw-r--r--pkgs/tools/graphics/asymptote/default.upstream4
-rw-r--r--pkgs/tools/graphics/asymptote/src-for-default.nix7
-rw-r--r--pkgs/tools/graphics/asymptote/src-info-for-default.nix8
-rw-r--r--pkgs/tools/graphics/cfdg/default.nix12
-rw-r--r--pkgs/tools/graphics/cfdg/src-for-default.nix10
-rw-r--r--pkgs/tools/misc/coreutils-5/default.nix10
-rw-r--r--pkgs/tools/misc/coreutils-5/dietlibc.patch35
-rw-r--r--pkgs/tools/misc/findutils/4.2.27.nix14
-rw-r--r--pkgs/tools/misc/findutils/default.nix5
-rw-r--r--pkgs/tools/misc/findutils/dietlibc-hack.patch58
-rw-r--r--pkgs/tools/misc/gnokii/src-for-default.nix10
-rw-r--r--pkgs/tools/misc/grub/device-mapper-symlinks.patch28
-rw-r--r--pkgs/tools/misc/mc/mc-4.6.1-bash32-1.patch41
-rw-r--r--pkgs/tools/misc/mc/mc-4.6.1-debian_fixes-1.patch12671
-rw-r--r--pkgs/tools/misc/plowshare/default.nix8
-rw-r--r--pkgs/tools/misc/ttf2pt1/ttf2pt1-cl-pdf.nix20
-rw-r--r--pkgs/tools/networking/connect/default.nix33
-rw-r--r--pkgs/tools/networking/gvpe/src-for-default.nix11
-rw-r--r--pkgs/tools/networking/hping/default.nix48
-rw-r--r--pkgs/tools/networking/mtr/default.nix4
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/default.nix5
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/test-timeout.patch12
-rw-r--r--pkgs/tools/networking/samplicator/default.nix17
-rw-r--r--pkgs/tools/networking/tcng/default.nix80
-rw-r--r--pkgs/tools/networking/wbox/default.nix21
-rw-r--r--pkgs/tools/package-management/dpkg/cache-arch.patch15
-rw-r--r--pkgs/tools/package-management/dpkg/default.nix2
-rw-r--r--pkgs/tools/package-management/nix/custom.nix68
-rw-r--r--pkgs/tools/package-management/nix/default.nix18
-rw-r--r--pkgs/tools/security/pinentry/duplicate-glib-defs.patch20
-rw-r--r--pkgs/tools/security/tor/default.nix4
-rw-r--r--pkgs/tools/system/monit/src-for-default.nix11
-rw-r--r--pkgs/tools/text/ascii/default.nix25
-rw-r--r--pkgs/tools/typesetting/hevea/builder.sh5
-rw-r--r--pkgs/tools/typesetting/tex/dblatex/default.nix9
-rw-r--r--pkgs/top-level/all-packages.nix483
-rw-r--r--pkgs/top-level/haskell-packages.nix43
-rw-r--r--pkgs/top-level/make-tarball.nix8
-rw-r--r--pkgs/top-level/platforms.nix2
-rw-r--r--pkgs/top-level/python-packages.nix413
-rw-r--r--pkgs/top-level/release-cross.nix2
-rw-r--r--pkgs/top-level/release-lib.nix42
-rw-r--r--pkgs/top-level/release.nix1
482 files changed, 4753 insertions, 20320 deletions
diff --git a/pkgs/applications/audio/amarok/live.nix b/pkgs/applications/audio/amarok/live.nix
deleted file mode 100644
index e90ca874827..00000000000
--- a/pkgs/applications/audio/amarok/live.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv, fetchgit, fetchgitrevision
-, lib, cmake, qt4, qtscriptgenerator, perl, gettext, curl
-, libxml2, mysql, taglib, taglib_extras, loudmouth , kdelibs, automoc4, phonon
-, strigi, soprano, qca2, libmtp, liblastfm, libgpod, pkgconfig
-, repository ? "git://git.kde.org/amarok"
-, branch ? "heads/master"
-, rev ? fetchgitrevision repository branch
-, src ? fetchgit {
-    url = repository;
-    rev = rev;
-  }
-}:
-
-stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
-
-  pname = "amarok";
-  version = "live";
-
-  inherit src;
-
-  QT_PLUGIN_PATH="${qtscriptgenerator}/lib/qt4/plugins";
-  buildInputs = [ cmake qt4 qtscriptgenerator perl stdenv.gcc.libc gettext curl
-    libxml2 mysql taglib taglib_extras loudmouth kdelibs automoc4 phonon strigi
-    soprano qca2 libmtp liblastfm libgpod pkgconfig ];
-
-  postInstall = ''
-    mkdir -p $out/nix-support
-    echo ${qtscriptgenerator} > $out/nix-support/propagated-user-env-packages
-  '';
-  meta = {
-    description = "Popular music player for KDE";
-    license = "GPL";
-    homepage = http://amarok.kde.org;
-    inherit (kdelibs.meta) maintainers;
-  };
-}
diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix
index 72b58b5b33e..306620ca1c9 100644
--- a/pkgs/applications/audio/audacity/default.nix
+++ b/pkgs/applications/audio/audacity/default.nix
@@ -4,12 +4,12 @@
   }:
 
 stdenv.mkDerivation rec {
-  version = "2.0.0";
+  version = "2.0.2";
   name = "audacity-${version}";
 
   src = fetchurl {
     url = "http://audacity.googlecode.com/files/audacity-minsrc-${version}.tar.bz2";
-    sha256 = "0spbib3f86b4qri0g13idyxvysg28hkpsglmjza681zrln62hjfq";
+    sha256 = "17c7p5jww5zcg2k2fs1751mv5kbadcmgicszi1zxwj2p5b35x2mc";
   };
   buildInputs = [ pkgconfig wxGTK libsndfile expat alsaLib libsamplerate
                   libvorbis libmad flac id3lib ffmpeg gettext ];
diff --git a/pkgs/applications/audio/pavucontrol/default.nix b/pkgs/applications/audio/pavucontrol/default.nix
index d25cfeb3cd1..a73744ebbe8 100644
--- a/pkgs/applications/audio/pavucontrol/default.nix
+++ b/pkgs/applications/audio/pavucontrol/default.nix
@@ -2,17 +2,17 @@
 , libglademm, libcanberra, intltool, gettext }:
 
 stdenv.mkDerivation rec {
-  name = "pavucontrol-0.9.10";
+  name = "pavucontrol-1.0";
 
   src = fetchurl {
-    url = "http://0pointer.de/lennart/projects/pavucontrol/${name}.tar.gz";
-    sha256 = "0g2sd9smwwpnyq8yc65dl9z0iafj2rrimi8v58wkxx98vhnnvsby";
+    url = "http://freedesktop.org/software/pulseaudio/pavucontrol/${name}.tar.xz";
+    sha256 = "1plcyrc7p6gqxjhxx2xh6162bkb29wixjrqrjnl9b8g3nrjjigix";
   };
 
   buildInputs = [ pkgconfig pulseaudio gtkmm libsigcxx libglademm libcanberra
     intltool gettext ];
 
-  configureFlags = "--disable-lynx";
+  configureFlags = "--disable-lynx --disable-gtk3";
 
   meta = {
     description = "PulseAudio Volume Control";
diff --git a/pkgs/applications/editors/ed/default.nix b/pkgs/applications/editors/ed/default.nix
index 1b3e4e27f5b..01b4ff547e8 100644
--- a/pkgs/applications/editors/ed/default.nix
+++ b/pkgs/applications/editors/ed/default.nix
@@ -8,7 +8,16 @@ stdenv.mkDerivation rec {
     sha256 = "18gvhyhwpabmgv4lh21lg8vl3z7acdyhh2mr2kj9g75wksj39pcp";
   };
 
-  doCheck = true;
+  /* FIXME: Tests currently fail on Darwin:
+
+       building test scripts for ed-1.5...
+       testing ed-1.5...
+       *** Output e1.o of script e1.ed is incorrect ***
+       *** Output r3.o of script r3.ed is incorrect ***
+       make: *** [check] Error 127
+
+    */
+  doCheck = !stdenv.isDarwin;
 
   crossAttrs = {
     compileFlags = [ "CC=${stdenv.cross.config}-gcc" ];
diff --git a/pkgs/applications/editors/geany/default.nix b/pkgs/applications/editors/geany/default.nix
index 1c08dc6db8d..289cf7ff8d6 100644
--- a/pkgs/applications/editors/geany/default.nix
+++ b/pkgs/applications/editors/geany/default.nix
@@ -18,6 +18,10 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  # This file should normally require a gtk-update-icon-cache -q /usr/share/icons/hicolor command
+  # It have no reasons to exist in a redistribuable package
+  postInstall = "rm $out/share/icons/hicolor/icon-theme.cache";
+
   meta = {
     description = "A GTK2 small and ligthweight IDE.";
     longDescription = ''
diff --git a/pkgs/applications/editors/jedit/wrapper.nix b/pkgs/applications/editors/jedit/wrapper.nix
deleted file mode 100644
index 1126a7278d6..00000000000
--- a/pkgs/applications/editors/jedit/wrapper.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-    name = jedit.name+"_startscript";
-
-    java = jre+"/bin/java";
-    jeditjar = jedit+"/lib/jedit.jar";
-
-    phases = "buildPhase";
-
-    buildPhase = "
-mkdir -p \$out/bin
-cat > \$out/bin/${jedit.name} << EOF
-#!/bin/sh
-exec $java -jar $jeditjar \\$*
-EOF
-  chmod +x \$out/bin/${jedit.name}
-";
-}
diff --git a/pkgs/applications/editors/nedit/default.nix b/pkgs/applications/editors/nedit/default.nix
index 41028601da7..bd53f8d81d0 100644
--- a/pkgs/applications/editors/nedit/default.nix
+++ b/pkgs/applications/editors/nedit/default.nix
@@ -1,6 +1,6 @@
 {stdenv, fetchurl, x11, motif, libXpm}:
 
-assert stdenv.system == "i686-linux";
+assert stdenv.isLinux;
 
 stdenv.mkDerivation {
   name = "nedit-5.5";
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   inherit motif;
   buildInputs = [x11 motif libXpm];
 
-  buildFlags = if stdenv.system == "i686-linux" then "linux" else "";
+  buildFlags = if stdenv.isLinux then "linux" else "";
 
   meta = {
     homepage = http://www.nedit.org;
diff --git a/pkgs/applications/editors/vbindiff/default.nix b/pkgs/applications/editors/vbindiff/default.nix
new file mode 100644
index 00000000000..a03ce539d50
--- /dev/null
+++ b/pkgs/applications/editors/vbindiff/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "vbindiff-${version}";
+  version = "3.0_beta4";
+
+  buildInputs = [ ncurses ];
+
+  src = fetchurl {
+    url = "http://www.cjmweb.net/vbindiff/${name}.tar.gz";
+    sha256 = "0gcqy4ggp60qc6blq1q1gc90xmhip1m6yvvli4hdqlz9zn3mlpbx";
+  };
+
+  meta = {
+    description = "A terminal visual binary diff viewer";
+    homepage = "http://www.cjmweb.net/vbindiff/";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/applications/editors/zile/default.nix b/pkgs/applications/editors/zile/default.nix
index 0d765a0ad5c..a64561b1099 100644
--- a/pkgs/applications/editors/zile/default.nix
+++ b/pkgs/applications/editors/zile/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv, ncurses, boehmgc, perl, help2man }:
 
 stdenv.mkDerivation rec {
-  name = "zile-2.4.7";
+  name = "zile-2.4.9";
 
   src = fetchurl {
     url = "mirror://gnu/zile/${name}.tar.gz";
-    sha256 = "1ak7qjb7s4whxg8qpkg7yixfnhinwfmzgav7rzi0kjmm93z35xcc";
+    sha256 = "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7";
   };
 
   buildInputs = [ ncurses boehmgc ];
diff --git a/pkgs/applications/graphics/darktable/default.nix b/pkgs/applications/graphics/darktable/default.nix
index 15d7042e7dd..801fdeeaaae 100644
--- a/pkgs/applications/graphics/darktable/default.nix
+++ b/pkgs/applications/graphics/darktable/default.nix
@@ -3,24 +3,24 @@
 , libgnome_keyring, gphoto2, gtk, ilmbase, intltool, lcms, lcms2
 , lensfun, libXau, libXdmcp, libexif, libglade, libgphoto2, libjpeg
 , libpng, libpthreadstubs, libraw1394, librsvg, libtiff, libxcb
-, openexr, pixman, pkgconfig, sqlite, bash }:
+, openexr, pixman, pkgconfig, sqlite, bash, libxslt }:
 
 assert stdenv ? glibc;
 
 stdenv.mkDerivation rec {
-  version = "1.0.5";
+  version = "1.1.1";
   name = "darktable-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/darktable/darktable-${version}.tar.gz";
-    sha256 = "0c18530446d2f2459fe533a1ef6fc2711300efe7466f36c23168ec2230fb5fbd";
+    sha256 = "0k1m7nd42yn4c2jr1ps1g96fqk9pq20cxjp7dmlza61pj2j9nads";
   };
 
   buildInputs =
     [ GConf atk cairo cmake curl dbus_glib exiv2 glib libgnome_keyring gtk
       ilmbase intltool lcms lcms2 lensfun libXau libXdmcp libexif
       libglade libgphoto2 libjpeg libpng libpthreadstubs libraw1394
-      librsvg libtiff libxcb openexr pixman pkgconfig sqlite
+      librsvg libtiff libxcb openexr pixman pkgconfig sqlite libxslt
     ];
 
   preConfigure = ''
diff --git a/pkgs/applications/graphics/darktable/libpng-15.patch b/pkgs/applications/graphics/darktable/libpng-15.patch
deleted file mode 100644
index f817a326448..00000000000
--- a/pkgs/applications/graphics/darktable/libpng-15.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 5803d31ae7704e0349821dcc20a94a1cddda69f1
-Author: Tim Harder <radhermit@gmail.com>
-Date:   Wed Sep 21 14:13:55 2011 -0700
-
-    Fix build with libpng-1.5
-    
-    Explicitly include the zlib.h header for the Z_BEST_COMPRESSION and
-    Z_DEFAULT_STRATEGY macros since >=libpng-1.5 doesn't pull it in anymore
-    via the png.h header.
-
-diff --git a/src/imageio/format/png.c b/src/imageio/format/png.c
-index 40c7d48..c7be566 100644
---- a/src/imageio/format/png.c
-+++ b/src/imageio/format/png.c
-@@ -28,6 +28,7 @@
- #include <stdio.h>
- #include <png.h>
- #include <inttypes.h>
-+#include <zlib.h>
- 
- DT_MODULE(1)
- 
diff --git a/pkgs/applications/graphics/dia/default.nix b/pkgs/applications/graphics/dia/default.nix
index 7662d64e9de..769acd2a3b6 100644
--- a/pkgs/applications/graphics/dia/default.nix
+++ b/pkgs/applications/graphics/dia/default.nix
@@ -22,6 +22,10 @@ stdenv.mkDerivation rec {
 
   patches = [ ./glib-top-level-header.patch ];
 
+  # This file should normally require a gtk-update-icon-cache -q /usr/share/icons/hicolor command
+  # It have no reasons to exist in a redistribuable package
+  postInstall = "rm $out/share/icons/hicolor/icon-theme.cache";
+
   meta = {
     description = "Gnome Diagram drawing software";
     homepage = http://live.gnome.org/Dia;
diff --git a/pkgs/applications/graphics/freecad/cmakeinstall.patch b/pkgs/applications/graphics/freecad/cmakeinstall.patch
deleted file mode 100644
index 6b8f9fb1a60..00000000000
--- a/pkgs/applications/graphics/freecad/cmakeinstall.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Index: src/3rdParty/salomesmesh/CMakeLists.txt
-===================================================================
---- a/src/3rdParty/salomesmesh/CMakeLists.txt	(revision 4193)
-+++ a/src/3rdParty/salomesmesh/CMakeLists.txt	(working copy)
-@@ -191,7 +191,7 @@
- INCLUDE_DIRECTORIES(src/StdMeshers)
- 
- ADD_LIBRARY(StdMeshers SHARED ${StdMeshers_source_files})
--TARGET_LINK_LIBRARIES(StdMeshers SMESH TKernel TKMath TKAdvTools f2c)
-+TARGET_LINK_LIBRARIES(StdMeshers SMESH TKernel TKMath TKAdvTools f2c gfortran)
- SET(StdMeshers_CFLAGS "")
- IF(WIN32)
-   SET(StdMeshers_CFLAGS "-DSTDMESHERS_EXPORTS -DMEFISTO2D_EXPORTS")
-@@ -218,9 +218,9 @@
-     # Libraries are installed by default in /usr/local/lib/SMESH-5.1.2.7
-     INSTALL(TARGETS SMDS Driver DriverSTL DriverDAT DriverUNV
-             SMESHDS SMESH StdMeshers
--            DESTINATION /usr/local/lib/${INSTALL_PATH_NAME})
-+            DESTINATION lib)
-     # Headers are installed by default in /usr/local/include/SMESH-5.1.2.7
-     INSTALL(DIRECTORY inc/
--            DESTINATION /usr/local/include/${INSTALL_PATH_NAME}
-+            DESTINATION include
-             FILES_MATCHING PATTERN "*.h*")
- ENDIF(UNIX)
-Index: src/3rdParty/Pivy-0.5/CMakeLists.txt
-===================================================================
---- a/src/3rdParty/Pivy-0.5/CMakeLists.txt	(revision 4193)
-+++ a/src/3rdParty/Pivy-0.5/CMakeLists.txt	(working copy)
-@@ -56,6 +56,7 @@
-     set_target_properties(coin PROPERTIES OUTPUT_NAME "_coin")
-     set_target_properties(coin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/pivy)
-     set_target_properties(coin PROPERTIES PREFIX "")
-+    install(TARGETS coin DESTINATION bin/pivy)
- endif(MSVC)
- 
- fc_copy_sources_outpath("bin/pivy" "coin"
-Index: CMakeLists.txt
-===================================================================
---- a/CMakeLists.txt	(revision 4193)
-+++ a/CMakeLists.txt	(working copy)
-@@ -57,13 +57,6 @@
- 
- # ================================================================================
- 
--
--if(WIN32)
--    SET(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})
--else(WIN32)
--    SET(CMAKE_INSTALL_PREFIX "/usr/lib/freecad")
--endif(WIN32)
--
- # ================================================================================
- # == Win32 is default behaviour use the LibPack copied in Source tree ============
- if(MSVC)
diff --git a/pkgs/applications/graphics/freecad/default.nix b/pkgs/applications/graphics/freecad/default.nix
index cfe97e12476..c681bc415e3 100644
--- a/pkgs/applications/graphics/freecad/default.nix
+++ b/pkgs/applications/graphics/freecad/default.nix
@@ -1,17 +1,15 @@
-{ fetchsvn, stdenv, cmake, coin3d, xercesc, ode, eigen, qt4, opencascade, gts,
+{ fetchgit, stdenv, cmake, coin3d, xercesc, ode, eigen, qt4, opencascade, gts,
 boost, zlib,
 python, swig, gfortran, soqt, libf2c, pyqt4, makeWrapper }:
 
-# It builds but fails to install
-
 stdenv.mkDerivation rec {
   name = "freecad-${version}";
-  version = "svn-${src.rev}";
+  version = "git-20121213";
 
-  src = fetchsvn {
-    url = https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk;
-    rev = "4184";
-    sha256 = "26bd8407ce38f070b81ef39145aed093eed3c200d165a605b8169162d66568ce";
+  src = fetchgit {
+    url = git://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad;
+    rev = "d3949cedc7e3c924d426660515e06eaf55d1a67f";
+    sha256 = "0a07ih0z5d8m69zasmvi7z4lgq0pa67k2g7r1l6nz2d0b30py61w";
   };
 
   buildInputs = [ cmake coin3d xercesc ode eigen qt4 opencascade gts boost
@@ -19,12 +17,6 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  # The freecad people are used to boost 1.42, and we have newer boost that
-  # require the -DBOOST_FILESYSTEM_VERSION=2 for freecad to build
-  # For zlib to build in i686-linux, as g++ plus glibc defines _LARGEFILE64_SOURCE,
-  # we need the -D-FILE_OFFSET_BITS=64 indication for zlib headers to work.
-  NIX_CFLAGS_COMPILE = "-DBOOST_FILESYSTEM_VERSION=2 -D_FILE_OFFSET_BITS=64";
-
   # This should work on both x86_64, and i686 linux
   preBuild = ''
     export NIX_LDFLAGS="-L${gfortran.gcc}/lib64 -L${gfortran.gcc}/lib $NIX_LDFLAGS";
@@ -35,7 +27,7 @@ stdenv.mkDerivation rec {
       --set COIN_GL_NO_CURRENT_CONTEXT_CHECK 1
   '';
 
-  patches = [ ./cmakeinstall.patch ./pythonpath.patch ];
+  patches = [ ./pythonpath.patch ];
 
   meta = {
     homepage = http://free-cad.sourceforge.net/;
diff --git a/pkgs/applications/graphics/freecad/pythonpath.patch b/pkgs/applications/graphics/freecad/pythonpath.patch
index 849c778aedb..8b09a574807 100644
--- a/pkgs/applications/graphics/freecad/pythonpath.patch
+++ b/pkgs/applications/graphics/freecad/pythonpath.patch
@@ -1,15 +1,19 @@
-http://sourceforge.net/apps/phpbb/free-cad/viewtopic.php?f=4&t=847&p=6364
-
-Index: src/Main/MainGui.cpp
-===================================================================
---- a/src/Main/MainGui.cpp	(revision 4193)
-+++ a/src/Main/MainGui.cpp	(working copy)
-@@ -149,10 +149,10 @@
+diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp
+index 03407c5..b029384 100644
+--- a/src/Main/MainGui.cpp
++++ b/src/Main/MainGui.cpp
+@@ -190,15 +190,15 @@ int main( int argc, char ** argv )
      // http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559846

      putenv("LANG=C");

      putenv("LC_ALL=C");

 -    putenv("PYTHONPATH=");

 +    //putenv("PYTHONPATH=");

+ #elif defined(FC_OS_MACOSX)

+     (void)QLocale::system();

+     putenv("LANG=C");

+     putenv("LC_ALL=C");

+-    putenv("PYTHONPATH=");

++    //putenv("PYTHONPATH=");

  #else

      setlocale(LC_NUMERIC, "C");

 -    _putenv("PYTHONPATH=");

diff --git a/pkgs/applications/graphics/kuickshow/builder.sh b/pkgs/applications/graphics/kuickshow/builder.sh
deleted file mode 100644
index 2283e956f7b..00000000000
--- a/pkgs/applications/graphics/kuickshow/builder.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-source $stdenv/setup
-
-patchPhase=patchPhase
-patchPhase() {
-  sed -e "s@-ljpeg6b@-ljpeg@" -i configure
-}
-
-genericBuild
-
-ln -sv $KDEDIR/share/mimelnk $out/share
diff --git a/pkgs/applications/graphics/openscad/default.nix b/pkgs/applications/graphics/openscad/default.nix
index b09a38dcaa4..9343f3ec135 100644
--- a/pkgs/applications/graphics/openscad/default.nix
+++ b/pkgs/applications/graphics/openscad/default.nix
@@ -1,19 +1,24 @@
-{stdenv, fetchurl, qt4, bison, flex, eigen, boost, mesa, glew, opencsg, cgal
+{stdenv, fetchgit, qt4, bison, flex, eigen, boost, mesa, glew, opencsg, cgal
   , mpfr, gmp
   }:
 
 stdenv.mkDerivation rec {
-  version = "2011.12";
+  version = "git-20121213";
   name = "openscad-${version}";
-  src = fetchurl {
-    url = "https://github.com/downloads/openscad/openscad/${name}.src.tar.gz";
-    sha256 = "0gaqwzxbbzc21lhb4y26j8g0g28dhrwrgkndizp5ddab5axi4zjh";
-  };
+  # src = fetchurl {
+  #   url = "https://github.com/downloads/openscad/openscad/${name}.src.tar.gz";
+  #   sha256 = "0gaqwzxbbzc21lhb4y26j8g0g28dhrwrgkndizp5ddab5axi4zjh";
+  # };
+  src = fetchgit {
+    url = "https://github.com/openscad/openscad.git";
+    rev = "c0612a9ed0899c96963e04c848a59b0164a689a2";
+    sha256  = "1zqiwk1cjbj7sng9sdarbrs0zxkn9fsa84dyv8n0zlyh40s7kvw2";
+  };        
 
   buildInputs = [qt4 bison flex eigen boost mesa glew opencsg cgal gmp mpfr];
 
   configurePhase = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I ${eigen}/include/eigen2 "
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$(echo ${eigen}/include/eigen*) "
     qmake PREFIX="$out"
   '';
 
diff --git a/pkgs/applications/graphics/rawtherapee/optional-rawzor.patch b/pkgs/applications/graphics/rawtherapee/optional-rawzor.patch
deleted file mode 100644
index bc0210803a1..00000000000
--- a/pkgs/applications/graphics/rawtherapee/optional-rawzor.patch
+++ /dev/null
@@ -1,83 +0,0 @@
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,5 +1,7 @@
- cmake_minimum_required(VERSION 2.6)
- 
-+option (WITH_RAWZOR "Build with Rawzor support" ON)
-+
- add_subdirectory (rtexif)
- add_subdirectory (rtengine)
- add_subdirectory (rtgui)
---- a/rtengine/CMakeLists.txt
-+++ b/rtengine/CMakeLists.txt
-@@ -9,9 +9,13 @@
- IF (WIN32)
-     SET (EXTRA_LIBDIR "${CMAKE_CURRENT_SOURCE_DIR}/../lib; ${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_win")
-     SET (EXTRA_INCDIR "${CMAKE_CURRENT_SOURCE_DIR}/../winclude; ${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_win")
--    SET (EXTRA_LIB "ws2_32 ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libiptcdata.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libjpeg.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libpng.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libtiff.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libz.a ${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_win/rwz_sdk_s.a")
-+    SET (EXTRA_LIB "ws2_32 ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libiptcdata.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libjpeg.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libpng.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libtiff.a ${CMAKE_CURRENT_SOURCE_DIR}/../lib/libz.a")
-+    if (WITH_RAWZOR)
-     ADD_DEFINITIONS (-DRAWZOR_SUPPORT)
-+    SET (EXTRA_LIB "${EXTRA_LIB} ${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_win/rwz_sdk_s.a")
-+    endif (WITH_RAWZOR)
- ELSE (WIN32)
-+    if (WITH_RAWZOR)
-     IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
-         SET (EXTRA_INCDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin32")
- 	SET (EXTRA_LIBDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin32")
-@@ -19,10 +23,11 @@
-         SET (EXTRA_INCDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin64")
- 	SET (EXTRA_LIBDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin64")
-     ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
--    pkg_check_modules (IPTCDATA REQUIRED libiptcdata)
--    pkg_check_modules (LCMS REQUIRED lcms)
-     SET (EXTRA_LIB "-lrwz_sdk")
-     ADD_DEFINITIONS (-DRAWZOR_SUPPORT)
-+    endif (WITH_RAWZOR)
-+    pkg_check_modules (IPTCDATA REQUIRED libiptcdata)
-+    pkg_check_modules (LCMS REQUIRED lcms)
- ENDIF (WIN32)
- 
- include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../rtexif ${EXTRA_INCDIR} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS})
---- a/rtengine/imagedata.cc
-+++ b/rtengine/imagedata.cc
-@@ -19,7 +19,9 @@
- #include <imagedata.h>
- #include <iptcpairs.h>
- #include <glib/gstdio.h>
-+#ifdef RAWZOR_SUPPORT
- #include <rwz_sdk.h>
-+#endif
- 
- using namespace rtengine;
- 
---- a/rtengine/myfile.cc
-+++ b/rtengine/myfile.cc
-@@ -19,7 +19,9 @@
- #include <myfile.h>

- #include <cstdarg>
- #include <glibmm.h>
-+#ifdef RAWZOR_SUPPORT
- #include <rwz_sdk.h>

-+#endif
- 
- IMFILE* fopen (const char* fname) {

- 
---- a/rtgui/CMakeLists.txt
-+++ b/rtgui/CMakeLists.txt
-@@ -75,6 +75,7 @@
-     if (NOT ZLIB_LIBRARIES)
-         message(SEND_ERROR "libz was not found!")
-     endif (NOT ZLIB_LIBRARIES)
-+    if (WITH_RAWZOR)
-     IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
-         SET (EXTRA_INCDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin32")
- 	    SET (EXTRA_LIBDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin32")
-@@ -82,6 +83,7 @@
-         SET (EXTRA_INCDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin64")
- 	    SET (EXTRA_LIBDIR "${CMAKE_CURRENT_SOURCE_DIR}/../rawzor_lin64")
-     ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
-+    endif (WITH_RAWZOR)
- 
- include_directories (/usr/local/lib ${CMAKE_CURRENT_SOURCE_DIR}/../rtengine . ${CMAKE_CURRENT_SOURCE_DIR}/../rtexif ${EXTRA_INCDIR} ${GLIB2_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS}
-     ${GTK_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS} ${GIO_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} )
diff --git a/pkgs/applications/misc/fetchmail/security-fix.patch b/pkgs/applications/misc/fetchmail/security-fix.patch
deleted file mode 100644
index 4d48c7aa055..00000000000
--- a/pkgs/applications/misc/fetchmail/security-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- old/sink.c	(revision 5118)
-+++ new/sink.c	(revision 5119)
-@@ -262,7 +262,7 @@
-     const char *md1 = "MAILER-DAEMON", *md2 = "MAILER-DAEMON@";
- 
-     /* don't bounce in reply to undeliverable bounces */
--    if (!msg->return_path[0] ||
-+    if (!msg || !msg->return_path[0] ||
- 	strcmp(msg->return_path, "<>") == 0 ||
- 	strcasecmp(msg->return_path, md1) == 0 ||
- 	strncasecmp(msg->return_path, md2, strlen(md2)) == 0)
diff --git a/pkgs/applications/misc/gphoto2/src-for-gphotofs.nix b/pkgs/applications/misc/gphoto2/src-for-gphotofs.nix
deleted file mode 100644
index 0967ef424bc..00000000000
--- a/pkgs/applications/misc/gphoto2/src-for-gphotofs.nix
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/pkgs/applications/misc/ikiwiki/default.nix b/pkgs/applications/misc/ikiwiki/default.nix
index 1f99a02f429..df59145e51f 100644
--- a/pkgs/applications/misc/ikiwiki/default.nix
+++ b/pkgs/applications/misc/ikiwiki/default.nix
@@ -23,7 +23,7 @@ assert mercurialSupport -> (mercurial != null);
 
 let
   name = "ikiwiki";
-  version = "3.20120725";
+  version = "3.20121017";
 
   lib = stdenv.lib;
 in
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://ftp.de.debian.org/debian/pool/main/i/ikiwiki/${name}_${version}.tar.gz";
-    sha256 = "b600096a77b17e4a9e8a9552c4d36e01ed9217a0f8ff8a4f15110cf80e7adfad";
+    sha256 = "c0bb6ef9340ebc7eec40812b091700b2bcfd61e7321a22f41026ce130e877028";
   };
 
   buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
diff --git a/pkgs/applications/misc/krusader/krusader-gcc44.patch b/pkgs/applications/misc/krusader/krusader-gcc44.patch
deleted file mode 100644
index f8840d5f33c..00000000000
--- a/pkgs/applications/misc/krusader/krusader-gcc44.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- krusader-2.0.0/krusader/VFS/kiojobwrapper.cpp~	2009-04-29 17:13:43.000000000 +0000
-+++ krusader-2.0.0/krusader/VFS/kiojobwrapper.cpp	2009-04-29 17:14:01.000000000 +0000
-@@ -37,6 +37,7 @@
- #include <kio/jobuidelegate.h>
- #include <kio/job.h>
- #include <qapplication.h>
-+#include <cstdio>
- #include <iostream>
- #include <klocale.h>
- #include "virtualcopyjob.h"
diff --git a/pkgs/applications/misc/librecad/2.0.nix b/pkgs/applications/misc/librecad/2.0.nix
new file mode 100644
index 00000000000..2394d116314
--- /dev/null
+++ b/pkgs/applications/misc/librecad/2.0.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, qt4, muparser, which, boost}:
+
+stdenv.mkDerivation {
+  name = "librecad-2.0.0beta1";
+
+  src = fetchurl {
+    url = https://github.com/LibreCAD/LibreCAD/tarball/2.0.0beta1;
+    name = "librecad-2.0.0beta1.tar.gz";
+    sha256 = "8bf969b79be115f3b3ff72cc030a4c21fe93164dd0cb19ddfb78a7d66b8bc770";
+  };
+
+  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
+  '';
+
+  configurePhase = ''
+    qmake librecad.pro PREFIX=$out MUPARSER_DIR=${muparser} BOOST_DIR=${boost}
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin $out/share
+    cp -R unix/librecad $out/bin
+    cp -R unix/resources $out/share/librecad
+  '';
+
+  buildInputs = [ qt4 muparser which boost ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A 2D CAD package based upon Qt";
+    homepage = http://librecad.org;
+    license = "GPLv2";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix
index bcf0f1aee79..59bd4888e4a 100644
--- a/pkgs/applications/misc/librecad/default.nix
+++ b/pkgs/applications/misc/librecad/default.nix
@@ -1,28 +1,34 @@
-{ stdenv, fetchurl, qt4}:
+{ stdenv, fetchurl, qt4, muparser, which}:
 
 stdenv.mkDerivation {
-  name = "librecad-1.0.0";
+  name = "librecad-1.0.2";
 
   src = fetchurl {
-    url = https://github.com/LibreCAD/LibreCAD/tarball/v1.0.0;
-    name = "librecad-1.0.0.tar.gz";
-    sha256 = "0s1ikyvy98zz1vw3xf5la73n3sykib6292cmhh2z738ggwigicc9";
+    url = https://github.com/LibreCAD/LibreCAD/tarball/v1.0.2;
+    name = "librecad-1.0.2.tar.gz";
+    sha256 = "13ee7e401e4f5fbc68c2e017b7189bec788038f4f6e77f559861ceb8cfb1907d";
   };
 
   patchPhase = ''
     sed -i -e s,/bin/bash,`type -P bash`, scripts/postprocess-unix.sh
+    sed -i -e s,/usr/share,$out/share, src/lib/engine/rs_system.cpp
   '';
 
   configurePhase = "qmake PREFIX=$out";
 
-  # It builds, but it does not install
-  installPhase = "exit 1";
+  installPhase = ''
+    ensureDir $out/bin $out/share
+    cp -R unix/librecad $out/bin
+    cp -R unix/resources $out/share/librecad
+  '';
 
-  buildInputs = [ qt4 ];
+  buildInputs = [ qt4 muparser which ];
 
   meta = {
     description = "A 2D CAD package based upon Qt";
     homepage = http://librecad.org;
     license = "GPLv2";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
   };
 }
diff --git a/pkgs/applications/misc/qcad/default.nix b/pkgs/applications/misc/qcad/default.nix
deleted file mode 100644
index ee8876e6b33..00000000000
--- a/pkgs/applications/misc/qcad/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-# translations still misssing
-
-{ stdenv, fetchurl, qt3, libpng, libXext, libX11 }:
-
-stdenv.mkDerivation {
-  name = "qcad-2.0.5.0-1-community";
-
-  src = fetchurl {
-    url = http://www.ribbonsoft.com/archives/qcad/qcad-2.0.5.0-1-community.src.tar.gz;
-    sha256 = "07aiw7zjf1fc04dhgwwp29adwb2qs165n7v04lh09zy0k2aplcl3";
-  };
-
-  # TODO: add translations
-  buildPhase = ''
-    cd scripts
-    sh build_qcad.sh notrans
-    cd ..
-  '';
-
-  buildInputs = [ qt3 libpng libXext libX11 ];
-
-  prePatch = ''
-    sed -i 's/-pedantic//' mkspecs/defs.pro
-    # patch -p1 < ${ ./qcad-2.0.4.0-1.src-intptr.patch }
-  '';
-  patches = [
-    /* taken from gentoo, fixes amd64 compilation issue */
-    ./qcad-2.0.4.0-1.src-intptr.patch
-    /* taken from gentoo, fixes gcc 4.3 or above compilation issue */
-    ./qcad-2.0.4.0-gcc43.patch
-  ];
-
-  # probably there is more to be done. But this seems to work for now (eg see gentoo ebuild)
-  installPhase = ''
-    mkdir -p $out/{bin,share}
-    cp -r qcad $out/share
-
-    # The compilation does not fail with error code. But qcad will not exist
-    # if it failed.
-    test -f $out/share/qcad/qcad
-
-    cat >> $out/bin/qcad << EOF
-    #!/bin/sh
-    cd $out/share/qcad
-    ./qcad "\$@"
-    EOF
-    chmod +x $out/bin/qcad
-  '';
-
-  meta = { 
-    description = "A 2D CAD package based upon Qt";
-    homepage = http://www.ribbonsoft.de/qcad.html;
-    license = "GPLv2"; # community edition
-  };
-}
diff --git a/pkgs/applications/misc/qcad/qcad-2.0.4.0-1.src-intptr.patch b/pkgs/applications/misc/qcad/qcad-2.0.4.0-1.src-intptr.patch
deleted file mode 100644
index 6d8b6acca5b..00000000000
--- a/pkgs/applications/misc/qcad/qcad-2.0.4.0-1.src-intptr.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Naur qcad-2.0.4.0-1.src.orig/qcadlib/src/engine/rs_entity.cpp qcad-2.0.4.0-1.src.patched/qcadlib/src/engine/rs_entity.cpp
---- qcad-2.0.4.0-1.src.orig/qcadlib/src/engine/rs_entity.cpp	2004-09-14 15:13:02.000000000 -0500
-+++ qcad-2.0.4.0-1.src.patched/qcadlib/src/engine/rs_entity.cpp	2006-06-23 14:21:40.000000000 -0500
-@@ -849,7 +849,7 @@
-         os << " layer: NULL ";
-     } else {
-         os << " layer: " << e.layer->getName().latin1() << " ";
--        os << " layer address: " << (int)(e.layer) << " ";
-+        os << " layer address: " << (intptr_t)(e.layer) << " ";
-     }
- 
-     os << e.pen << "\n";
-diff -Naur qcad-2.0.4.0-1.src.orig/qcadlib/src/engine/rs_layer.cpp qcad-2.0.4.0-1.src.patched/qcadlib/src/engine/rs_layer.cpp
---- qcad-2.0.4.0-1.src.orig/qcadlib/src/engine/rs_layer.cpp	2004-09-14 15:13:02.000000000 -0500
-+++ qcad-2.0.4.0-1.src.patched/qcadlib/src/engine/rs_layer.cpp	2006-06-23 14:21:23.000000000 -0500
-@@ -57,7 +57,7 @@
-     os << " name: " << l.getName().latin1()
-     << " pen: " << l.getPen()
- 	<< " frozen: " << (int)l.isFrozen()
--	<< " address: " << (int)(&l)
-+	<< " address: " << (intptr_t)(&l)
-     << std::endl;
-     return os;
- }
diff --git a/pkgs/applications/misc/qcad/qcad-2.0.4.0-gcc43.patch b/pkgs/applications/misc/qcad/qcad-2.0.4.0-gcc43.patch
deleted file mode 100644
index bc68e81c715..00000000000
--- a/pkgs/applications/misc/qcad/qcad-2.0.4.0-gcc43.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -Naur qcad-2.0.4.0-1.src/dxflib/src/dl_writer_ascii.cpp qcad-2.0.4.0-1.src.new/dxflib/src/dl_writer_ascii.cpp
---- qcad-2.0.4.0-1.src/dxflib/src/dl_writer_ascii.cpp	2004-09-14 16:13:01.000000000 -0400
-+++ qcad-2.0.4.0-1.src.new/dxflib/src/dl_writer_ascii.cpp	2008-04-27 08:35:47.000000000 -0400
-@@ -30,6 +30,7 @@
- #endif // _MSC_VER > 1000
- 
- #include <stdio.h>
-+#include <cstring>
- 
- #include "dl_writer_ascii.h"
- #include "dl_exception.h"
-diff -Naur qcad-2.0.4.0-1.src/dxflib/src/dl_writer.h qcad-2.0.4.0-1.src.new/dxflib/src/dl_writer.h
---- qcad-2.0.4.0-1.src/dxflib/src/dl_writer.h	2004-09-14 16:13:01.000000000 -0400
-+++ qcad-2.0.4.0-1.src.new/dxflib/src/dl_writer.h	2008-04-27 08:35:48.000000000 -0400
-@@ -34,6 +34,7 @@
- 
- 
- #include <iostream>
-+#include <cstring>
- 
- #include "dl_attributes.h"
- 
-diff -Naur qcad-2.0.4.0-1.src/qcadactions/src/rs_actionzoompan.cpp qcad-2.0.4.0-1.src.new/qcadactions/src/rs_actionzoompan.cpp
---- qcad-2.0.4.0-1.src/qcadactions/src/rs_actionzoompan.cpp	2004-09-14 16:13:03.000000000 -0400
-+++ qcad-2.0.4.0-1.src.new/qcadactions/src/rs_actionzoompan.cpp	2008-04-27 08:35:48.000000000 -0400
-@@ -28,6 +28,7 @@
- #include "rs_snapper.h"
- #include "rs_point.h"
- 
-+#include <cstdlib>
- 
- RS_ActionZoomPan::RS_ActionZoomPan(RS_EntityContainer& container,
-                                    RS_GraphicView& graphicView)
-diff -Naur qcad-2.0.4.0-1.src/qcadlib/src/information/rs_information.h qcad-2.0.4.0-1.src.new/qcadlib/src/information/rs_information.h
---- qcad-2.0.4.0-1.src/qcadlib/src/information/rs_information.h	2004-09-14 16:13:02.000000000 -0400
-+++ qcad-2.0.4.0-1.src.new/qcadlib/src/information/rs_information.h	2008-04-27 08:35:48.000000000 -0400
-@@ -31,7 +31,7 @@
- #include "rs_line.h"
- #include "rs_arc.h"
- 
--
-+#include <cstdlib>
- 
- /**
-  * Class for getting information about entities. This includes
diff --git a/pkgs/applications/misc/rxvt_unicode/default.nix b/pkgs/applications/misc/rxvt_unicode/default.nix
index a1297d64a18..b643b8a658e 100644
--- a/pkgs/applications/misc/rxvt_unicode/default.nix
+++ b/pkgs/applications/misc/rxvt_unicode/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation (rec {
 
   preConfigure =
     ''
-      configureFlags="${if perlSupport then "--enable-perl" else "--disable-perl"}";
+      configureFlags="--with-terminfo=$out/share/terminfo ${if perlSupport then "--enable-perl" else "--disable-perl"}";
       export TERMINFO=$out/share/terminfo # without this the terminfo won't be compiled by tic, see man tic
       NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype}/include/freetype2"
       NIX_LDFLAGS="$NIX_LDFLAGS -lfontconfig -lXrender "
@@ -36,10 +36,6 @@ stdenv.mkDerivation (rec {
 
   meta = {
     description = "A clone of the well-known terminal emulator rxvt";
-    longDescription = "
-      You should put this into your ~/.bashrc:
-      export TERMINFO=~/.nix-profile/share/terminfo
-    ";
     homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html";
   };
 })
diff --git a/pkgs/applications/misc/st/default.nix b/pkgs/applications/misc/st/default.nix
index 86b24e7e401..70089759626 100644
--- a/pkgs/applications/misc/st/default.nix
+++ b/pkgs/applications/misc/st/default.nix
@@ -4,8 +4,8 @@ stdenv.mkDerivation rec {
   name = "st-0.3";
   
   src = fetchurl {
-    url = http://hg.suckless.org/st/archive/0.3.tar.gz;
-    sha256 = "12ypldjjpsq3nvhszgjsk4wgqkwcvz06qiqw8k5npv3rd1nbx9cl";
+    url = "http://dl.suckless.org/st/${name}.tar.gz";
+    sha256 = "0d0fjixiis4ixbz4l18rqhnssa7cy2bap3jkjyphqlqhl7lahv3d";
   };
   
   buildInputs = [ libX11 ncurses libXext libXft ];
diff --git a/pkgs/applications/misc/xmobar/default.nix b/pkgs/applications/misc/xmobar/default.nix
index 73eefef2505..0ef9acbcef4 100644
--- a/pkgs/applications/misc/xmobar/default.nix
+++ b/pkgs/applications/misc/xmobar/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "xmobar";
-  version = "0.15";
-  sha256 = "1wa141bf3krzr8qcd9cyix3cflbw1yr1l3299ashjs7skqnjadcl";
+  version = "0.16";
+  sha256 = "1dx4kwygzp4c5j4jj4lsfgjfvhh863v68s106lmwc86a30h60p8i";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
@@ -13,9 +13,6 @@ cabal.mkDerivation (self: {
   ];
   extraLibraries = [ libXrandr wirelesstools ];
   configureFlags = "-fwith_xft -fwith_iwlib";
-  patchPhase = ''
-    sed -i -e 's|mtl ==.*$|mtl,|' xmobar.cabal
-  '';
   meta = {
     homepage = "http://projects.haskell.org/xmobar/";
     description = "A Minimalistic Text Based Status Bar";
diff --git a/pkgs/applications/misc/xpdf/xpdf-3.01pl2.patch b/pkgs/applications/misc/xpdf/xpdf-3.01pl2.patch
deleted file mode 100644
index 3ea3cb8c923..00000000000
--- a/pkgs/applications/misc/xpdf/xpdf-3.01pl2.patch
+++ /dev/null
@@ -1,471 +0,0 @@
-diff -cr xpdf-3.01.orig/goo/gmem.c xpdf-3.01/goo/gmem.c
-*** xpdf-3.01.orig/goo/gmem.c	Tue Aug 16 22:34:30 2005
---- xpdf-3.01/goo/gmem.c	Tue Jan 17 17:03:57 2006
-***************
-*** 11,16 ****
---- 11,17 ----
-  #include <stdlib.h>
-  #include <stddef.h>
-  #include <string.h>
-+ #include <limits.h>
-  #include "gmem.h"
-  
-  #ifdef DEBUG_MEM
-***************
-*** 63,69 ****
-    int lst;
-    unsigned long *trl, *p;
-  
-!   if (size == 0)
-      return NULL;
-    size1 = gMemDataSize(size);
-    if (!(mem = (char *)malloc(size1 + gMemHdrSize + gMemTrlSize))) {
---- 64,70 ----
-    int lst;
-    unsigned long *trl, *p;
-  
-!   if (size <= 0)
-      return NULL;
-    size1 = gMemDataSize(size);
-    if (!(mem = (char *)malloc(size1 + gMemHdrSize + gMemTrlSize))) {
-***************
-*** 86,92 ****
-  #else
-    void *p;
-  
-!   if (size == 0)
-      return NULL;
-    if (!(p = malloc(size))) {
-      fprintf(stderr, "Out of memory\n");
---- 87,93 ----
-  #else
-    void *p;
-  
-!   if (size <= 0)
-      return NULL;
-    if (!(p = malloc(size))) {
-      fprintf(stderr, "Out of memory\n");
-***************
-*** 102,108 ****
-    void *q;
-    int oldSize;
-  
-!   if (size == 0) {
-      if (p)
-        gfree(p);
-      return NULL;
---- 103,109 ----
-    void *q;
-    int oldSize;
-  
-!   if (size <= 0) {
-      if (p)
-        gfree(p);
-      return NULL;
-***************
-*** 120,126 ****
-  #else
-    void *q;
-  
-!   if (size == 0) {
-      if (p)
-        free(p);
-      return NULL;
---- 121,127 ----
-  #else
-    void *q;
-  
-!   if (size <= 0) {
-      if (p)
-        free(p);
-      return NULL;
-***************
-*** 140,147 ****
-  void *gmallocn(int nObjs, int objSize) {
-    int n;
-  
-    n = nObjs * objSize;
-!   if (objSize == 0 || n / objSize != nObjs) {
-      fprintf(stderr, "Bogus memory allocation size\n");
-      exit(1);
-    }
---- 141,151 ----
-  void *gmallocn(int nObjs, int objSize) {
-    int n;
-  
-+   if (nObjs == 0) {
-+     return NULL;
-+   }
-    n = nObjs * objSize;
-!   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
-      fprintf(stderr, "Bogus memory allocation size\n");
-      exit(1);
-    }
-***************
-*** 151,158 ****
-  void *greallocn(void *p, int nObjs, int objSize) {
-    int n;
-  
-    n = nObjs * objSize;
-!   if (objSize == 0 || n / objSize != nObjs) {
-      fprintf(stderr, "Bogus memory allocation size\n");
-      exit(1);
-    }
---- 155,168 ----
-  void *greallocn(void *p, int nObjs, int objSize) {
-    int n;
-  
-+   if (nObjs == 0) {
-+     if (p) {
-+       gfree(p);
-+     }
-+     return NULL;
-+   }
-    n = nObjs * objSize;
-!   if (objSize <= 0 || nObjs < 0 || nObjs >= INT_MAX / objSize) {
-      fprintf(stderr, "Bogus memory allocation size\n");
-      exit(1);
-    }
-diff -cr xpdf-3.01.orig/xpdf/JBIG2Stream.cc xpdf-3.01/xpdf/JBIG2Stream.cc
-*** xpdf-3.01.orig/xpdf/JBIG2Stream.cc	Tue Aug 16 22:34:31 2005
---- xpdf-3.01/xpdf/JBIG2Stream.cc	Tue Jan 17 17:29:46 2006
-***************
-*** 13,18 ****
---- 13,19 ----
-  #endif
-  
-  #include <stdlib.h>
-+ #include <limits.h>
-  #include "GList.h"
-  #include "Error.h"
-  #include "JArithmeticDecoder.h"
-***************
-*** 681,686 ****
---- 682,691 ----
-    w = wA;
-    h = hA;
-    line = (wA + 7) >> 3;
-+   if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
-+     data = NULL;
-+     return;
-+   }
-    // need to allocate one extra guard byte for use in combine()
-    data = (Guchar *)gmalloc(h * line + 1);
-    data[h * line] = 0;
-***************
-*** 692,697 ****
---- 697,706 ----
-    w = bitmap->w;
-    h = bitmap->h;
-    line = bitmap->line;
-+   if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
-+     data = NULL;
-+     return;
-+   }
-    // need to allocate one extra guard byte for use in combine()
-    data = (Guchar *)gmalloc(h * line + 1);
-    memcpy(data, bitmap->data, h * line);
-***************
-*** 720,726 ****
-  }
-  
-  void JBIG2Bitmap::expand(int newH, Guint pixel) {
-!   if (newH <= h) {
-      return;
-    }
-    // need to allocate one extra guard byte for use in combine()
---- 729,735 ----
-  }
-  
-  void JBIG2Bitmap::expand(int newH, Guint pixel) {
-!   if (newH <= h || line <= 0 || newH >= (INT_MAX - 1) / line) {
-      return;
-    }
-    // need to allocate one extra guard byte for use in combine()
-***************
-*** 2294,2299 ****
---- 2303,2316 ----
-        !readUWord(&stepX) || !readUWord(&stepY)) {
-      goto eofError;
-    }
-+   if (w == 0 || h == 0 || w >= INT_MAX / h) {
-+     error(getPos(), "Bad bitmap size in JBIG2 halftone segment");
-+     return;
-+   }
-+   if (gridH == 0 || gridW >= INT_MAX / gridH) {
-+     error(getPos(), "Bad grid size in JBIG2 halftone segment");
-+     return;
-+   }
-  
-    // get pattern dictionary
-    if (nRefSegs != 1) {
-diff -cr xpdf-3.01.orig/xpdf/JPXStream.cc xpdf-3.01/xpdf/JPXStream.cc
-*** xpdf-3.01.orig/xpdf/JPXStream.cc	Tue Aug 16 22:34:31 2005
---- xpdf-3.01/xpdf/JPXStream.cc	Tue Jan 17 17:14:06 2006
-***************
-*** 12,17 ****
---- 12,18 ----
-  #pragma implementation
-  #endif
-  
-+ #include <limits.h>
-  #include "gmem.h"
-  #include "Error.h"
-  #include "JArithmeticDecoder.h"
-***************
-*** 818,823 ****
---- 819,830 ----
-  	            / img.xTileSize;
-        img.nYTiles = (img.ySize - img.yTileOffset + img.yTileSize - 1)
-  	            / img.yTileSize;
-+       // check for overflow before allocating memory
-+       if (img.nXTiles <= 0 || img.nYTiles <= 0 ||
-+ 	  img.nXTiles >= INT_MAX / img.nYTiles) {
-+ 	error(getPos(), "Bad tile count in JPX SIZ marker segment");
-+ 	return gFalse;
-+       }
-        img.tiles = (JPXTile *)gmallocn(img.nXTiles * img.nYTiles,
-  				      sizeof(JPXTile));
-        for (i = 0; i < img.nXTiles * img.nYTiles; ++i) {
-diff -cr xpdf-3.01.orig/xpdf/Stream.cc xpdf-3.01/xpdf/Stream.cc
-*** xpdf-3.01.orig/xpdf/Stream.cc	Tue Aug 16 22:34:31 2005
---- xpdf-3.01/xpdf/Stream.cc	Tue Jan 17 17:31:52 2006
-***************
-*** 15,20 ****
---- 15,21 ----
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <stddef.h>
-+ #include <limits.h>
-  #ifndef WIN32
-  #include <unistd.h>
-  #endif
-***************
-*** 406,418 ****
---- 407,432 ----
-    width = widthA;
-    nComps = nCompsA;
-    nBits = nBitsA;
-+   predLine = NULL;
-+   ok = gFalse;
-  
-    nVals = width * nComps;
-+   if (width <= 0 || nComps <= 0 || nBits <= 0 ||
-+       nComps >= INT_MAX / nBits ||
-+       width >= INT_MAX / nComps / nBits ||
-+       nVals * nBits + 7 < 0) {
-+     return;
-+   }
-    pixBytes = (nComps * nBits + 7) >> 3;
-    rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
-+   if (rowBytes <= 0) {
-+     return;
-+   }
-    predLine = (Guchar *)gmalloc(rowBytes);
-    memset(predLine, 0, rowBytes);
-    predIdx = rowBytes;
-+ 
-+   ok = gTrue;
-  }
-  
-  StreamPredictor::~StreamPredictor() {
-***************
-*** 1004,1009 ****
---- 1018,1027 ----
-      FilterStream(strA) {
-    if (predictor != 1) {
-      pred = new StreamPredictor(this, predictor, columns, colors, bits);
-+     if (!pred->isOk()) {
-+       delete pred;
-+       pred = NULL;
-+     }
-    } else {
-      pred = NULL;
-    }
-***************
-*** 1259,1264 ****
---- 1277,1285 ----
-    if (columns < 1) {
-      columns = 1;
-    }
-+   if (columns + 4 <= 0) {
-+     columns = INT_MAX - 4;
-+   }
-    rows = rowsA;
-    endOfBlock = endOfBlockA;
-    black = blackA;
-***************
-*** 2899,2904 ****
---- 2920,2930 ----
-    height = read16();
-    width = read16();
-    numComps = str->getChar();
-+   if (numComps <= 0 || numComps > 4) {
-+     error(getPos(), "Bad number of components in DCT stream");
-+     numComps = 0;
-+     return gFalse;
-+   }
-    if (prec != 8) {
-      error(getPos(), "Bad DCT precision %d", prec);
-      return gFalse;
-***************
-*** 2925,2930 ****
---- 2951,2961 ----
-    height = read16();
-    width = read16();
-    numComps = str->getChar();
-+   if (numComps <= 0 || numComps > 4) {
-+     error(getPos(), "Bad number of components in DCT stream");
-+     numComps = 0;
-+     return gFalse;
-+   }
-    if (prec != 8) {
-      error(getPos(), "Bad DCT precision %d", prec);
-      return gFalse;
-***************
-*** 2947,2952 ****
---- 2978,2988 ----
-  
-    length = read16() - 2;
-    scanInfo.numComps = str->getChar();
-+   if (scanInfo.numComps <= 0 || scanInfo.numComps > 4) {
-+     error(getPos(), "Bad number of components in DCT stream");
-+     scanInfo.numComps = 0;
-+     return gFalse;
-+   }
-    --length;
-    if (length != 2 * scanInfo.numComps + 3) {
-      error(getPos(), "Bad DCT scan info block");
-***************
-*** 3041,3046 ****
---- 3077,3083 ----
-  	numACHuffTables = index+1;
-        tbl = &acHuffTables[index];
-      } else {
-+       index &= 0x0f;
-        if (index >= numDCHuffTables)
-  	numDCHuffTables = index+1;
-        tbl = &dcHuffTables[index];
-***************
-*** 3827,3832 ****
---- 3864,3873 ----
-      FilterStream(strA) {
-    if (predictor != 1) {
-      pred = new StreamPredictor(this, predictor, columns, colors, bits);
-+     if (!pred->isOk()) {
-+       delete pred;
-+       pred = NULL;
-+     }
-    } else {
-      pred = NULL;
-    }
-diff -cr xpdf-3.01.orig/xpdf/Stream.h xpdf-3.01/xpdf/Stream.h
-*** xpdf-3.01.orig/xpdf/Stream.h	Tue Aug 16 22:34:31 2005
---- xpdf-3.01/xpdf/Stream.h	Tue Jan 17 17:19:54 2006
-***************
-*** 232,237 ****
---- 232,239 ----
-  
-    ~StreamPredictor();
-  
-+   GBool isOk() { return ok; }
-+ 
-    int lookChar();
-    int getChar();
-  
-***************
-*** 249,254 ****
---- 251,257 ----
-    int rowBytes;			// bytes per line
-    Guchar *predLine;		// line buffer
-    int predIdx;			// current index in predLine
-+   GBool ok;
-  };
-  
-  //------------------------------------------------------------------------
-***************
-*** 527,533 ****
-    short getWhiteCode();
-    short getBlackCode();
-    short lookBits(int n);
-!   void eatBits(int n) { inputBits -= n; }
-  };
-  
-  //------------------------------------------------------------------------
---- 530,536 ----
-    short getWhiteCode();
-    short getBlackCode();
-    short lookBits(int n);
-!   void eatBits(int n) { if ((inputBits -= n) < 0) inputBits = 0; }
-  };
-  
-  //------------------------------------------------------------------------
-diff -cr xpdf-3.01.orig/splash/SplashXPathScanner.cc xpdf-3.01/splash/SplashXPathScanner.cc
-*** xpdf-3.01.orig/splash/SplashXPathScanner.cc	Tue Aug 16 22:34:31 2005
---- xpdf-3.01/splash/SplashXPathScanner.cc	Wed Feb  1 17:01:14 2006
-***************
-*** 186,192 ****
-  }
-  
-  void SplashXPathScanner::computeIntersections(int y) {
-!   SplashCoord ySegMin, ySegMax, xx0, xx1;
-    SplashXPathSeg *seg;
-    int i, j;
-  
---- 186,192 ----
-  }
-  
-  void SplashXPathScanner::computeIntersections(int y) {
-!   SplashCoord xSegMin, xSegMax, ySegMin, ySegMax, xx0, xx1;
-    SplashXPathSeg *seg;
-    int i, j;
-  
-***************
-*** 236,254 ****
-      } else if (seg->flags & splashXPathVert) {
-        xx0 = xx1 = seg->x0;
-      } else {
-!       if (ySegMin <= y) {
-! 	// intersection with top edge
-! 	xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
-        } else {
-! 	// x coord of segment endpoint with min y coord
-! 	xx0 = (seg->flags & splashXPathFlip) ? seg->x1 : seg->x0;
-        }
-!       if (ySegMax >= y + 1) {
-! 	// intersection with bottom edge
-! 	xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
-!       } else {
-! 	// x coord of segment endpoint with max y coord
-! 	xx1 = (seg->flags & splashXPathFlip) ? seg->x0 : seg->x1;
-        }
-      }
-      if (xx0 < xx1) {
---- 236,262 ----
-      } else if (seg->flags & splashXPathVert) {
-        xx0 = xx1 = seg->x0;
-      } else {
-!       if (seg->x0 < seg->x1) {
-! 	xSegMin = seg->x0;
-! 	xSegMax = seg->x1;
-        } else {
-! 	xSegMin = seg->x1;
-! 	xSegMax = seg->x0;
-        }
-!       // intersection with top edge
-!       xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
-!       // intersection with bottom edge
-!       xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
-!       // the segment may not actually extend to the top and/or bottom edges
-!       if (xx0 < xSegMin) {
-! 	xx0 = xSegMin;
-!       } else if (xx0 > xSegMax) {
-! 	xx0 = xSegMax;
-!       }
-!       if (xx1 < xSegMin) {
-! 	xx1 = xSegMin;
-!       } else if (xx1 > xSegMax) {
-! 	xx1 = xSegMax;
-        }
-      }
-      if (xx0 < xx1) {
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index 7d41f72df20..30234c92f6b 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, config, fetchurl, makeWrapper, which
+{ stdenv, fetchurl, makeWrapper, which
 
 # default dependencies
 , bzip2, flac, speex
@@ -15,32 +15,24 @@
 , libXScrnSaver, libXcursor, mesa
 
 # optional dependencies
-, libgnome_keyring # config.gnomeKeyring
-, gconf # config.gnome
-, libgcrypt # config.gnome || config.cups
-, nss, openssl # config.openssl
-, pulseaudio # config.pulseaudio
-, libselinux # config.selinux
+, libgcrypt ? null # gnomeSupport || cupsSupport
+
+# package customization
+, channel ? "stable"
+, enableSELinux ? false, libselinux ? null
+, enableNaCl ? false
+, useOpenSSL ? false, nss ? null, openssl ? null
+, gnomeSupport ? false, gconf ? null
+, gnomeKeyringSupport ? false, libgnome_keyring ? null
+, proprietaryCodecs ? true
+, cupsSupport ? false
+, pulseSupport ? false, pulseaudio ? null
 }:
 
 with stdenv.lib;
 
 let
-  mkConfigurable = mapAttrs (flag: default: attrByPath ["chromium" flag] default config);
-
-  cfg = mkConfigurable {
-    channel = "stable";
-    selinux = false;
-    nacl = false;
-    openssl = false;
-    gnome = false;
-    gnomeKeyring = false;
-    proprietaryCodecs = true;
-    cups = false;
-    pulseaudio = config.pulseaudio or true;
-  };
-
-  sourceInfo = builtins.getAttr cfg.channel (import ./sources.nix);
+  sourceInfo = builtins.getAttr channel (import ./sources.nix);
 
   mkGypFlags =
     let
@@ -62,7 +54,7 @@ let
     use_system_libusb = true;
     use_system_libxml = true;
     use_system_speex = true;
-    use_system_ssl = cfg.openssl;
+    use_system_ssl = useOpenSSL;
     use_system_stlport = true;
     use_system_xdg_utils = true;
     use_system_yasm = true;
@@ -87,7 +79,7 @@ let
   post23 = !versionOlder sourceInfo.version "24.0.0.0";
   post24 = !versionOlder sourceInfo.version "25.0.0.0";
 
-  maybeFixPulseAudioBuild = optional (post23 && cfg.pulseaudio) (fetchurl {
+  maybeFixPulseAudioBuild = optional (post23 && pulseSupport) (fetchurl {
     url = http://archrepo.jeago.com/sources/chromium-dev/pulse_audio_fix.patch;
     sha256 = "1w91mirrkqigdhsj892mqxlc0nlv1dsp5shc46w9xf8nl96jxgfb";
   });
@@ -107,28 +99,28 @@ in stdenv.mkDerivation rec {
     which makeWrapper
     python perl pkgconfig
     nspr udev
-    (if cfg.openssl then openssl else nss)
+    (if useOpenSSL then openssl else nss)
     utillinux alsaLib
     gcc bison gperf
     krb5
     glib gtk dbus_glib
     libXScrnSaver libXcursor mesa
-  ] ++ optional cfg.gnomeKeyring libgnome_keyring
-    ++ optionals cfg.gnome [ gconf libgcrypt ]
-    ++ optional cfg.selinux libselinux
-    ++ optional cfg.cups libgcrypt
-    ++ optional cfg.pulseaudio pulseaudio
+  ] ++ optional gnomeKeyringSupport libgnome_keyring
+    ++ optionals gnomeSupport [ gconf libgcrypt ]
+    ++ optional enableSELinux libselinux
+    ++ optional cupsSupport libgcrypt
+    ++ optional pulseSupport pulseaudio
     ++ optional post24 pciutils;
 
-  opensslPatches = optional cfg.openssl openssl.patches;
+  opensslPatches = optional useOpenSSL openssl.patches;
 
   prePatch = "patchShebangs .";
 
-  patches = optional cfg.cups ./cups_allow_deprecated.patch
-         ++ optional cfg.pulseaudio ./pulseaudio_array_bounds.patch
+  patches = optional cupsSupport ./cups_allow_deprecated.patch
+         ++ optional pulseSupport ./pulseaudio_array_bounds.patch
          ++ maybeFixPulseAudioBuild;
 
-  postPatch = optionalString cfg.openssl ''
+  postPatch = optionalString useOpenSSL ''
     cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
   '';
 
@@ -136,15 +128,15 @@ in stdenv.mkDerivation rec {
     linux_use_gold_binary = false;
     linux_use_gold_flags = false;
     proprietary_codecs = false;
-    use_gnome_keyring = cfg.gnomeKeyring;
-    use_gconf = cfg.gnome;
-    use_gio = cfg.gnome;
-    use_pulseaudio = cfg.pulseaudio;
-    disable_nacl = !cfg.nacl;
-    use_openssl = cfg.openssl;
-    selinux = cfg.selinux;
-    use_cups = cfg.cups;
-  } // optionalAttrs cfg.proprietaryCodecs {
+    use_gnome_keyring = gnomeKeyringSupport;
+    use_gconf = gnomeSupport;
+    use_gio = gnomeSupport;
+    use_pulseaudio = pulseSupport;
+    disable_nacl = !enableNaCl;
+    use_openssl = useOpenSSL;
+    selinux = enableSELinux;
+    use_cups = cupsSupport;
+  } // optionalAttrs proprietaryCodecs {
     # enable support for the H.264 codec
     proprietary_codecs = true;
     ffmpeg_branding = "Chrome";
diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix
index 9b6616ec63c..7b252da6824 100644
--- a/pkgs/applications/networking/browsers/chromium/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/sources.nix
@@ -6,13 +6,13 @@
     sha256 = "1i7ga1qhnjvnw2gynmpmsvvl5pxcb5z9sgldp87d9yalim5sra6s";
   };
   beta = {
-    version = "24.0.1312.14";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-24.0.1312.14.tar.bz2";
-    sha256 = "03w8cg4kqmpj82976ax9x6y275y9gcri4vc11cvfjp6r1issxzk8";
+    version = "24.0.1312.35";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-24.0.1312.35.tar.bz2";
+    sha256 = "0mb6xz5lrnzjk1zqr83jyprsxv20svy3a7lyxv9iwdb2bh1i13ci";
   };
   stable = {
-    version = "23.0.1271.64";
-    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-23.0.1271.64.tar.bz2";
-    sha256 = "1rzz08sgw07nkmvhhgyrkrcxj3z24lxbx0di6ky6jz3lshibp578";
+    version = "23.0.1271.97";
+    url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-23.0.1271.97.tar.bz2";
+    sha256 = "1qf21n6msj1jmxhnlw8fapsz7q6dd851rxdqv4334v06ny4i5fip";
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox/16.0.nix b/pkgs/applications/networking/browsers/firefox/16.0.nix
deleted file mode 100644
index a9a10fbc4ec..00000000000
--- a/pkgs/applications/networking/browsers/firefox/16.0.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
-, libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs
-, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
-, yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
-
-, # If you want the resulting program to call itself "Firefox" instead
-  # of "Shiretoko" or whatever, enable this option.  However, those
-  # binaries may not be distributed without permission from the
-  # Mozilla Foundation, see
-  # http://www.mozilla.org/foundation/trademarks/.
-  enableOfficialBranding ? false
-}:
-
-assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
-
-rec {
-
-  firefoxVersion = "16.0.2";
-
-  xulVersion = "16.0.2"; # this attribute is used by other packages
-
-
-  src = fetchurl {
-    urls = [
-        # It is better to use this url for official releases, to take load off Mozilla's ftp server.
-        "http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2"
-        # Fall back to this url for versions not available at releases.mozilla.org.
-        "ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2"
-    ];
-    sha1 = "0ffe96896583e92561b341330ab09ddc50140dd1";
-  };
-
-  commonConfigureFlags =
-    [ "--enable-optimize"
-      #"--enable-profiling"
-      "--disable-debug"
-      "--enable-strip"
-      "--with-system-jpeg"
-      "--with-system-zlib"
-      "--with-system-bz2"
-      "--with-system-nspr"
-      "--with-system-nss"
-      # "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support"
-      # "--enable-system-cairo" # disabled for the moment because our Cairo is too old
-      "--enable-system-sqlite"
-      "--disable-crashreporter"
-      "--disable-tests"
-      "--disable-necko-wifi" # maybe we want to enable this at some point
-      "--disable-installer"
-      "--disable-updater"
-    ];
-
-
-  xulrunner = stdenv.mkDerivation rec {
-    name = "xulrunner-${xulVersion}";
-
-    inherit src;
-
-    buildInputs =
-      [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
-        python dbus dbus_glib pango freetype fontconfig xlibs.libXi
-        xlibs.libX11 xlibs.libXrender xlibs.libXft xlibs.libXt file
-        alsaLib nspr nss libnotify xlibs.pixman yasm mesa
-        xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite
-        xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper
-      ];
-
-    configureFlags =
-      [ "--enable-application=xulrunner"
-        "--disable-javaxpcom"
-      ] ++ commonConfigureFlags;
-
-    enableParallelBuilding = true;
-
-    preConfigure =
-      ''
-        export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
-
-        mkdir ../objdir
-        cd ../objdir
-        configureScript=../mozilla-release/configure
-      ''; # */
-
-    #installFlags = "SKIP_GRE_REGISTRATION=1";
-
-    postInstall = ''
-      # Fix run-mozilla.sh search
-      libDir=$(cd $out/lib && ls -d xulrunner-[0-9]*)
-      echo libDir: $libDir
-      test -n "$libDir"
-      cd $out/bin
-      rm xulrunner
-
-      for i in $out/lib/$libDir/*; do
-          file $i;
-          if file $i | grep executable &>/dev/null; then
-              echo -e '#! /bin/sh\n"'"$i"'" "$@"' > "$out/bin/$(basename "$i")";
-              chmod a+x "$out/bin/$(basename "$i")";
-          fi;
-      done
-      for i in $out/lib/$libDir/*.so; do
-          patchelf --set-rpath "$(patchelf --print-rpath "$i"):$out/lib/$libDir" $i || true
-      done
-      for i in $out/lib/$libDir/{plugin-container,xulrunner,xulrunner-stub}; do
-          wrapProgram $i --prefix LD_LIBRARY_PATH ':' "$out/lib/$libDir"
-      done
-      rm -f $out/bin/run-mozilla.sh
-    ''; # */
-
-    meta = {
-      description = "Mozilla Firefox XUL runner";
-      homepage = http://www.mozilla.com/en-US/firefox/;
-    };
-
-    passthru = { inherit gtk; version = xulVersion; };
-  };
-
-
-  firefox = stdenv.mkDerivation rec {
-    name = "firefox-${firefoxVersion}";
-
-    inherit src;
-
-    enableParallelBuilding = true;
-
-    buildInputs =
-      [ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python
-        dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify
-        xlibs.pixman yasm mesa sqlite file unzip pysqlite
-      ];
-
-    propagatedBuildInputs = [xulrunner];
-
-    configureFlags =
-      [ "--enable-application=browser"
-        "--with-libxul-sdk=${xulrunner}/lib/xulrunner-devel-${xulrunner.version}"
-        "--enable-chrome-format=jar"
-        "--disable-elf-hack"
-      ]
-      ++ commonConfigureFlags
-      ++ stdenv.lib.optional enableOfficialBranding "--enable-official-branding";
-
-    makeFlags = [
-      "SYSTEM_LIBXUL=1"
-    ];
-
-    # Hack to work around make's idea of -lbz2 dependency
-    preConfigure =
-      ''
-        find . -name Makefile.in -execdir sed -i '{}' -e '1ivpath %.so ${
-          stdenv.lib.concatStringsSep ":"
-            (map (s : s + "/lib") (buildInputs ++ [stdenv.gcc.libc]))
-        }' ';'
-      '';
-
-    postInstall =
-      ''
-        ln -s ${xulrunner}/lib/xulrunner-${xulrunner.version} $(echo $out/lib/firefox-*)/xulrunner
-        for j in $out/bin/*; do
-            i="$(readlink "$j")";
-            file $i;
-            if file $i | grep executable &>/dev/null; then
-                rm "$out/bin/$(basename "$i")"
-                echo -e '#! /bin/sh\nexec "'"$i"'" "$@"' > "$out/bin/$(basename "$i")"
-                chmod a+x "$out/bin/$(basename "$i")"
-            fi;
-        done;
-        cd "$out/lib/"firefox-*
-        rm firefox
-        echo -e '#!${stdenv.shell}\n${xulrunner}/bin/xulrunner "'"$PWD"'/application.ini" "$@"' > firefox
-        chmod a+x firefox
-      ''; # */
-
-    meta = {
-      description = "Mozilla Firefox - the browser, reloaded";
-      homepage = http://www.mozilla.com/en-US/firefox/;
-      maintainers = [ stdenv.lib.maintainers.eelco ];
-    };
-
-    passthru = {
-      inherit gtk xulrunner nspr;
-      isFirefox3Like = true;
-    };
-  };
-}
diff --git a/pkgs/applications/networking/browsers/firefox/17.0.nix b/pkgs/applications/networking/browsers/firefox/17.0.nix
index 302672c15ad..9b785bebacb 100644
--- a/pkgs/applications/networking/browsers/firefox/17.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/17.0.nix
@@ -15,9 +15,9 @@ assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
 
 rec {
 
-  firefoxVersion = "17.0";
+  firefoxVersion = "17.0.1";
 
-  xulVersion = "17.0"; # this attribute is used by other packages
+  xulVersion = "17.0.1"; # this attribute is used by other packages
 
 
   src = fetchurl {
@@ -27,7 +27,7 @@ rec {
         # Fall back to this url for versions not available at releases.mozilla.org.
         "ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.bz2"
     ];
-    sha1 = "4f5f175c1662d67f70e78403607d8eda600efd8b";
+    sha1 = "15c09796a388f0a78996427b7bc2c80f4e0496f3";
   };
 
   commonConfigureFlags =
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 2eb34f68b8b..3496097b86d 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -43,9 +43,9 @@ let
         throw "no x86_64 debugging version available"
       else rec {
         # -> http://labs.adobe.com/downloads/flashplayer10.html
-        version = "11.2.202.238";
-        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
-        sha256 = "07d09xjnn2hm877psmv9a6c4cfighxw24p0apq2ykawnrjpjc6zn";
+        version = "11.2.202.251";
+        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux_x86_64.tar.gz";
+        sha256 = "0nkwpqp8ilv21rlmr4jv8abdnfmz292y3w1qlx6r67qf926nfrz2";
       }
     else if stdenv.system == "i686-linux" then
       if debug then {
@@ -54,9 +54,9 @@ let
         url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
         sha256 = "1z3649lv9sh7jnwl8d90a293nkaswagj2ynhsr4xmwiy7c0jz2lk";
       } else rec {
-        version = "11.2.202.238";
-        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
-        sha256 = "0p05pr4vmc4536axjyljhxhqizq4ihslar8g638dj24251byp7ca";
+        version = "11.2.202.251";
+        url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux_i386.tar.gz";
+        sha256 = "0nph42s1bspf88m1qqrvc93kkxkrvq3lfs5iq4l5dflwzs32jdm3";
       }
     else throw "Flash Player is not supported on this platform";
 
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
index 2ef8e8ae432..63ae2ef86d4 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
@@ -1,6 +1,6 @@
 args: with args;
 stdenv.mkDerivation {
-  name = "libnsbmp-0.0.1";
+  name = "libnsgif-0.0.1";
 
   src = fetchurl {
     url = http://www.netsurf-browser.org/projects/releases/libnsgif-0.0.1-src.tar.gz;
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
   installPhase = "make PREFIX=$out install";
   buildInputs = [];
 
-  meta = { 
+  meta = {
     description = "Libnsbmp is a decoding library for gif image file formats"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libnsgif/;
     license = "MIT";
diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix
index d7a8ac51a06..80b09bcd8a8 100644
--- a/pkgs/applications/networking/browsers/opera/default.nix
+++ b/pkgs/applications/networking/browsers/opera/default.nix
@@ -13,18 +13,18 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "opera-12.11-1661";
+  name = "opera-12.12-1707";
 
   src =
     if stdenv.system == "i686-linux" then
       fetchurl {
-        url = "${mirror}/linux/1211/${name}.i386.linux.tar.xz";
-        sha256 = "0ax2kcnl0hb7fz56c9gcjia3dnwabxl2mq2hvszmbky4i399jlkk";
+        url = "${mirror}/linux/1212/${name}.i386.linux.tar.xz";
+        sha256 = "1jkrhxjxa5kz4bhyma0zlnsszdn84sq4pks3x8bfcayn12m6yxkz";
       }
     else if stdenv.system == "x86_64-linux" then
       fetchurl {
-        url = "${mirror}/linux/1211/${name}.x86_64.linux.tar.xz";
-        sha256 = "1pnad4kdasrmm27kg6frldipyzcfy1y610rasbqic9frzb9q8dbp";
+        url = "${mirror}/linux/1212/${name}.x86_64.linux.tar.xz";
+        sha256 = "0acizxgyqblcvl91dwmvi937fi1kw6whz5qgxyl1fkygbayji90v";
       }
     else throw "Opera is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)";
 
@@ -73,6 +73,10 @@ stdenv.mkDerivation rec {
   postFixup = ''
     oldRPATH=`patchelf --print-rpath $out/lib/opera/opera`
     patchelf --set-rpath $oldRPATH:${cups}/lib $out/lib/opera/opera
+
+    # This file should normally require a gtk-update-icon-cache -q /usr/share/icons/hicolor command
+    # It have no reasons to exist in a redistribuable package
+    rm $out/share/icons/hicolor/icon-theme.cache
     '';
 
   meta = {
diff --git a/pkgs/applications/networking/instant-messengers/skype/default.nix b/pkgs/applications/networking/instant-messengers/skype/default.nix
index 7eee9f37ecc..66a18dbdfe9 100644
--- a/pkgs/applications/networking/instant-messengers/skype/default.nix
+++ b/pkgs/applications/networking/instant-messengers/skype/default.nix
@@ -5,11 +5,11 @@
 assert stdenv.system == "i686-linux";
 
 stdenv.mkDerivation rec {
-  name = "skype-4.0.0.8";
+  name = "skype-4.1.0.20";
 
   src = fetchurl {
     url = "http://download.skype.com/linux/${name}.tar.bz2";
-    sha256 = "0gq24rbmjd05ihraarn45rwr79gidnwgllvprzrh5zqx02xll17p";
+    sha256 = "1qhcxkfmlpblpy9rqimzdl79rm781swbldkzi6nyw56bbp6lf7n3";
   };
 
   buildInputs =
diff --git a/pkgs/applications/networking/instant-messengers/telepathy/kde/0.3.1.nix b/pkgs/applications/networking/instant-messengers/telepathy/kde/0.3.1.nix
deleted file mode 100644
index 73eda93f7e8..00000000000
--- a/pkgs/applications/networking/instant-messengers/telepathy/kde/0.3.1.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-[
-{name="ktp-accounts-kcm";key="accounts_kcm";sha256="1lkqiwibxabg5p3k8l0zyzjyysi56dvbbcxp1sybd81hmxf6fzxh";}
-{name="ktp-approver";key="approver";sha256="0bw3i8av55n93ac6phvar03b6rz34wbqrzx7l2vd48d0y5ib0j6m";}
-{name="ktp-auth-handler";key="auth_handler";sha256="0kby9935df474b7jvzzg7v3zvrgml5caf96ps4dcrcvyz91ckd1y";}
-{name="ktp-common-internals";key="common_internals";sha256="1g22b0g9g14dsdl0qkdglgkf26c3pjc96q19kj2kai1i644i8k5h";}
-{name="ktp-contact-applet";key="contact_applet";sha256="0iwr202snsm72xjxv1jb9z24j8ikdx6ljaz5v9i0ha8f8rb1vrp5";}
-{name="ktp-contact-list";key="contact_list";sha256="06y1cw2kkn6ig5qnmzl7bdz9nghpv2c83c9vf9glgbxf77qfg3ms";}
-{name="ktp-filetransfer-handler";key="filetransfer_handler";sha256="1cdnl4sn34lmm7h7qv8rrkp7ia5gcg2704fqhvpv8n8gxwwhrc1a";}
-{name="ktp-kded-integration-module";key="kded_integration_module";sha256="1ccihqk0pg28v2q6p9dx37ql7hnwdz2060jf1s6p9yyd27fc4is0";}
-{name="ktp-presence-applet";key="presence_applet";sha256="0zgl8z81kmy2a03kzgvvqlr244cw9gw2kfrph1d6ax8zk4fqvxnz";}
-{name="ktp-send-file";key="send_file";sha256="1d1j0klp8dvmldn5c19zqfsxcm5hbaq5fxikpjg0q3j9ib8yh9la";}
-{name="ktp-text-ui";key="text_ui";sha256="0qikjh8ywlnwkfr4nd4hc9b15b824simhdj3n62yd87pmkk3avw6";}
-]
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index a1fc52337ed..c0d87ee5a03 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     sha1 = "ccc5f2e155364948945abf6fd27bebeb4d797aa8";
   };
 
-  enableParallelBuilding = true;
+  enableParallelBuilding = false;
 
   buildInputs =
     [ pkgconfig perl python zip unzip bzip2 gtk dbus_glib alsaLib libIDL nspr
diff --git a/pkgs/applications/networking/remote/freerdp/default.nix b/pkgs/applications/networking/remote/freerdp/default.nix
index 434d75bce58..d8634e31dad 100644
--- a/pkgs/applications/networking/remote/freerdp/default.nix
+++ b/pkgs/applications/networking/remote/freerdp/default.nix
@@ -10,16 +10,22 @@
 , libXdamage
 , libXext
 , alsaLib
+, ffmpeg
+, libxkbfile
+#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt
+, libXinerama
+, libXv
+, pulseaudioSupport ? true, pulseaudio
 }:
 
 assert printerSupport -> cups != null;
 stdenv.mkDerivation rec {
   name = "freerdp-${version}";
-  version = "1.0.0";
+  version = "1.0.1";
 
   src = fetchurl {
-    url = "https://github.com/downloads/FreeRDP/FreeRDP/FreeRDP-${version}.tar.gz";
-    sha256 = "df9f5f3275436f3e413824ca40f1e41733a95121f45e1ed41ab410701c5764cc";
+    url = "https://github.com/FreeRDP/FreeRDP/archive/${version}.tar.gz";
+    sha256 = "1my8gamvfrn6v9gcqxsa9cgxr42shc0l826zvxj8wpcay6gd321w";
   };
 
   buildInputs = [
@@ -32,11 +38,17 @@ stdenv.mkDerivation rec {
     libXdamage
     libXext
     alsaLib
+    ffmpeg
+    libxkbfile
+#    xmlto docbook_xml_dtd_412 docbook_xml_xslt
+    libXinerama
+    libXv
   ] ++ stdenv.lib.optional printerSupport cups;
 
   configureFlags = [
-    "--with-x"
-  ] ++ stdenv.lib.optional printerSupport "--with-printer=cups";
+    "--with-x" "-DWITH_MANPAGES=OFF"
+  ] ++ stdenv.lib.optional printerSupport "--with-printer=cups"
+    ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON";
 
   meta = {
     description = "A Remote Desktop Protocol Client";
diff --git a/pkgs/applications/networking/remote/freerdp/unstable.nix b/pkgs/applications/networking/remote/freerdp/unstable.nix
index 2266f7237f6..ef8ddf8b0e3 100644
--- a/pkgs/applications/networking/remote/freerdp/unstable.nix
+++ b/pkgs/applications/networking/remote/freerdp/unstable.nix
@@ -1,53 +1,63 @@
 { stdenv
 , fetchgit
+, cmake
 , openssl
 , printerSupport ? true, cups
 , pkgconfig
 , zlib
 , libX11
 , libXcursor
+, libXdamage
+, libXext
 , alsaLib
-, cmake
+, ffmpeg
 , libxkbfile
+#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt
 , libXinerama
-, libXext
-, directfb
-, cunit
+#, directfb
+#, cunit
+, libXv
+, pulseaudioSupport ? true, pulseaudio
 }:
 
 assert printerSupport -> cups != null;
 
-let rev = "498b88a1da748a4a2b4dbd12c795ca87fee24bab"; in
+let rev = "ec6effcb1e7759551cf31f5b18d768afc67db97d"; in
 
 stdenv.mkDerivation rec {
-  name = "freerdp-1.0pre${rev}";
+  name = "freerdp-1.1pre${rev}";
 
   src = fetchgit {
     url = git://github.com/FreeRDP/FreeRDP.git;
     inherit rev;
-    sha256 = "91ef562e96db483ada28236e524326a75b6942becce4fd2a65ace386186eccf7";
+    sha256 = "4e5af9a6769c4b34c6b75dffe83a385d1d86068c523ea9f62fabc651a2958455";
   };
 
   buildInputs = [
+    cmake
     openssl
     pkgconfig
     zlib
     libX11
     libXcursor
-    libxkbfile
-    libXinerama
+    libXdamage
     libXext
-    directfb
+#    directfb
+#    cunit
     alsaLib
-    cmake
-    cunit
+    ffmpeg
+    libxkbfile
+#    xmlto docbook_xml_dtd_412 docbook_xml_xslt
+    libXinerama
+    libXv
   ] ++ stdenv.lib.optional printerSupport cups;
 
   doCheck = false;
 
   checkPhase = ''LD_LIBRARY_PATH="libfreerdp-cache:libfreerdp-chanman:libfreerdp-common:libfreerdp-core:libfreerdp-gdi:libfreerdp-kbd:libfreerdp-rail:libfreerdp-rfx:libfreerdp-utils" cunit/test_freerdp'';
 
-  cmakeFlags = [ "-DWITH_DIRECTFB=ON" "-DWITH_CUNIT=ON" ];
+  cmakeFlags = [ "-DWITH_DIRECTFB=OFF" "-DWITH_CUNIT=OFF" "-DWITH_MANPAGES=OFF" 
+  ] ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON";
 
   meta = {
     description = "A Remote Desktop Protocol Client";
diff --git a/pkgs/applications/office/abiword/default.nix b/pkgs/applications/office/abiword/default.nix
index fdfd60e9837..a500bbaa240 100644
--- a/pkgs/applications/office/abiword/default.nix
+++ b/pkgs/applications/office/abiword/default.nix
@@ -4,12 +4,24 @@
 
 stdenv.mkDerivation {
   name = "abiword-2.8.6";
-  
+
   src = fetchurl {
     url = http://www.abisource.org/downloads/abiword/2.8.6/source/abiword-2.8.6.tar.gz;
     sha256 = "059sd2apxdmcacc4pll880i7vm18h0kyjsq299m1mz3c7ak8k46r";
   };
 
+  prePatch = ''
+    sed -i -e '/#include <glib\/gerror.h>/d' src/af/util/xp/ut_go_file.h
+    sed -i -e 's|#include <glib/gmacros.h>|#include <glib.h>|' \
+      goffice-bits/goffice/app/goffice-app.h
+    sed -i -e 's/ptr->jmpbuf/jmpbuf(png_ptr)/' src/af/util/xp/ut_png.cpp
+    sed -i -e 's/\(m_pPNG\)->\(jmpbuf\)/png_\2(\1)/' \
+      src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp
+    sed -i -e 's/--no-undefined //' src/Makefile*
+  '';
+
+  enableParallelBuilding = true;
+
   buildInputs =
     [ pkgconfig gtk libglade librsvg bzip2 libgnomecanvas fribidi libpng popt
       libgsf enchant wv libjpeg
diff --git a/pkgs/applications/office/ledger/const.patch b/pkgs/applications/office/ledger/const.patch
deleted file mode 100644
index 8565fbfd0d4..00000000000
--- a/pkgs/applications/office/ledger/const.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff --git a/gnucash.cc b/gnucash.cc
-index 7d31526..c4edd77 100644
---- a/gnucash.cc
-+++ b/gnucash.cc
-@@ -201,7 +201,7 @@ static amount_t convert_number(const std::string& number,
- {
-   const char * num = number.c_str();
-
--  if (char * p = std::strchr(num, '/')) {
-+  if (const char * p = std::strchr(num, '/')) {
-     std::string numer_str(num, p - num);
-     std::string denom_str(p + 1);
-
-diff --git a/option.cc b/option.cc
-index 10c23a7..8f2fead 100644
---- a/option.cc
-+++ b/option.cc
-@@ -892,7 +892,7 @@ OPT_BEGIN(market, "V") {
- namespace {
-   void parse_price_setting(const char * optarg)
-   {
--    char * equals = std::strchr(optarg, '=');
-+    const char * equals = std::strchr(optarg, '=');
-     if (! equals)
-       return;
-
-diff --git a/textual.cc b/textual.cc
-index 2033106..d897368 100644
---- a/textual.cc
-+++ b/textual.cc
-@@ -298,8 +298,8 @@ transaction_t * parse_transaction(char * line, account_t * account,
-       DEBUG_PRINT("ledger.textual.parse", "line " << linenum << ": " <<
-		  "Parsed a note '" << xact->note << "'");
-
--      if (char * b = std::strchr(xact->note.c_str(), '['))
--	if (char * e = std::strchr(xact->note.c_str(), ']')) {
-+      if (const char * b = std::strchr(xact->note.c_str(), '['))
-+	if (const char * e = std::strchr(xact->note.c_str(), ']')) {
-	  char buf[256];
-	  std::strncpy(buf, b + 1, e - b - 1);
-	  buf[e - b - 1] = '\0';
diff --git a/pkgs/applications/science/biology/slr/default.nix b/pkgs/applications/science/biology/slr/default.nix
deleted file mode 100644
index 7111d1a854e..00000000000
--- a/pkgs/applications/science/biology/slr/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{stdenv, fetchurl, liblapack}:
-
-stdenv.mkDerivation {
-  name = "slr-1.4.2";
-
-  src = fetchurl {
-    url = http://www.ebi.ac.uk/goldman-srv/SLR/download/v1.4.2/slr_source.tgz;
-    sha256 = "03ak7jsz89zism6gx8fr1dwlwjgcmnrr9m6xgqpr0xzikxid02jp";
-  };
-
-  buildInputs = [ liblapack ];
-  preConfigure = "mkdir bin; cd src";
-  makeFlags = "-f Makefile.linux";
-
-  meta = {
-    description     = "Phylogenetic Analysis by Maximum Likelihood (PAML)";
-    longDescription = ''
-SLR is a program to detect sites in coding DNA that are unusually conserved and/or unusually variable (that is, evolving under purify or positive selection) by analysing the pattern of changes for an alignment of sequences on an evolutionary tree.     
-'';
-    license     = "GPL3";
-    homepage    = http://www.ebi.ac.uk/goldman/SLR/;
-  };
-}
diff --git a/pkgs/applications/science/electronics/xoscope/gtkdepre.diff b/pkgs/applications/science/electronics/xoscope/gtkdepre.diff
new file mode 100644
index 00000000000..993df9cb550
--- /dev/null
+++ b/pkgs/applications/science/electronics/xoscope/gtkdepre.diff
@@ -0,0 +1,58 @@
+diff -ru xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/gtkdatabox.c xoscope-2.0/gtkdatabox-0.6.0.0/gtk/gtkdatabox.c
+--- xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/gtkdatabox.c	2010-06-07 10:42:24.000000000 +0200
++++ xoscope-2.0/gtkdatabox-0.6.0.0/gtk/gtkdatabox.c	2010-06-07 10:45:40.000000000 +0200
+@@ -661,7 +661,7 @@
+ static void
+ gtk_databox_calculate_hcanvas (GtkDatabox *box)
+ {
+-   if (!GTK_WIDGET_VISIBLE (box))
++   if (!gtk_widget_get_visible (box))
+       return;
+    
+    if (box->priv->adjX->page_size == 1.0)
+@@ -698,7 +698,7 @@
+ static void
+ gtk_databox_calculate_vcanvas (GtkDatabox *box)
+ {
+-   if (!GTK_WIDGET_VISIBLE (box))
++   if (!gtk_widget_get_visible (box))
+       return;
+    
+    if (box->priv->adjY->page_size == 1.0)
+@@ -780,7 +780,7 @@
+    gtk_databox_draw (box, event);
+ 
+    gdk_draw_drawable (widget->window,
+-                      widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
++                      widget->style->fg_gc[gtk_widget_get_state (widget)],
+                       box->priv->canvas.pixmap, event->area.x, event->area.y,
+                       event->area.x, event->area.y, event->area.width,
+                       event->area.height);
+@@ -940,7 +940,7 @@
+    GtkWidget *widget = GTK_WIDGET (box);
+ 
+    g_return_if_fail (GTK_IS_DATABOX (box));
+-   g_return_if_fail (GTK_WIDGET_VISIBLE (widget));
++   g_return_if_fail (gtk_widget_get_visible (widget));
+ 
+    gdk_draw_rectangle (box->priv->canvas.pixmap, widget->style->bg_gc[0], 
+                        TRUE, 0, 0,
+@@ -1150,7 +1150,7 @@
+    /* Copy a part of the pixmap to the screen */
+    if (pixmapCopyRect)
+       gdk_draw_drawable (widget->window,
+-                         widget->style->fg_gc[GTK_WIDGET_STATE (box)],
++                         widget->style->fg_gc[gtk_widget_get_state (box)],
+                          box->priv->canvas.pixmap,
+                          pixmapCopyRect->x,
+                          pixmapCopyRect->y,
+--- xoscope-2.0-old//gtkdatabox-0.6.0.0/gtk/Makefile.in	2011-09-02 16:43:43.000000000 +0200
++++ xoscope-2.0/gtkdatabox-0.6.0.0/gtk/Makefile.in	2011-09-02 16:43:57.000000000 +0200
+@@ -196,7 +196,6 @@
+ 			-DG_DISABLE_DEPRECATED\
+ 			-DGDK_DISABLE_DEPRECATED\
+ 			-DGDK_PIXBUF_DISABLE_DEPRECATED\
+-			-DGTK_DISABLE_DEPRECATED\
+ 			`pkg-config gtk+-2.0 --cflags`
+ 
+ all: all-am
diff --git a/pkgs/applications/science/logic/eProver/default.nix b/pkgs/applications/science/logic/eprover/default.nix
index 327a5d3a623..8cc1de6e8da 100644
--- a/pkgs/applications/science/logic/eProver/default.nix
+++ b/pkgs/applications/science/logic/eprover/default.nix
@@ -1,12 +1,21 @@
 { stdenv, fetchurl, which, texLive }:
-
+let
+  s = # Generated upstream information
+  rec {
+    baseName="eprover";
+    version="1.6";
+    name="${baseName}-${version}";
+    hash="140cnw4qck1hancrqdh0f77yfba5ljhdnfxdxsl0a86a6y7ydbwi";
+    url="http://www4.in.tum.de/~schulz/WORK/E_DOWNLOAD/V_1.6/E.tgz";
+    sha256="140cnw4qck1hancrqdh0f77yfba5ljhdnfxdxsl0a86a6y7ydbwi";
+  };
+in
 stdenv.mkDerivation {
-  name = "EProver-1.4";
+  inherit (s) name;
 
   src = fetchurl {
-    name = "E-1.4.tar.gz";
-    url = "http://www4.informatik.tu-muenchen.de/~schulz/WORK/E_DOWNLOAD/V_1.4/E.tgz";
-    sha256 = "1hxkr21xqkkh4bzqip6qf70w9xvvb8p20zzkvyin631ffgvyvr93";
+    name = "E-${s.version}.tar.gz";
+    inherit (s) url sha256;
   };
 
   buildInputs = [which texLive];
@@ -27,6 +36,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
+    inherit (s) version;
     description = "E automated theorem prover";
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.all;
diff --git a/pkgs/applications/science/logic/eprover/default.upstream b/pkgs/applications/science/logic/eprover/default.upstream
new file mode 100644
index 00000000000..fb2d80fafae
--- /dev/null
+++ b/pkgs/applications/science/logic/eprover/default.upstream
@@ -0,0 +1,3 @@
+url http://www4.informatik.tu-muenchen.de/~schulz/E/Download.html
+version_link '[.]tgz$'
+version '.*[/]V_([0-9.]+)[/].*' '\1'
diff --git a/pkgs/applications/science/misc/golly/src-for-default.nix b/pkgs/applications/science/misc/golly/src-for-default.nix
index bf0d9ddada4..00038373d56 100644
--- a/pkgs/applications/science/misc/golly/src-for-default.nix
+++ b/pkgs/applications/science/misc/golly/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="2.3-src";
-   name="golly-2.3-src";
-   hash="12r1lrrn4c1kafzvz5mmfq3750smqv5dwl1xpj3753h0rl9a9gx1";
-   url="http://downloads.sourceforge.net/project/golly/golly/golly-2.3/golly-2.3-src.tar.gz";
-   advertisedUrl="http://downloads.sourceforge.net/project/golly/golly/golly-2.3/golly-2.3-src.tar.gz";
+   version="2.4-src";
+   name="golly-2.4-src";
+   hash="06vajm019q4q4wfy6pc1669fbjqdb4jaxcc419bk0vzky40anl9w";
+   url="http://downloads.sourceforge.net/project/golly/golly/golly-2.4/golly-2.4-src.tar.gz";
+   advertisedUrl="http://downloads.sourceforge.net/project/golly/golly/golly-2.4/golly-2.4-src.tar.gz";
   
   
 }
diff --git a/pkgs/applications/science/molecular-dynamics/gromacs/default.nix b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
new file mode 100644
index 00000000000..c687fd5908c
--- /dev/null
+++ b/pkgs/applications/science/molecular-dynamics/gromacs/default.nix
@@ -0,0 +1,46 @@
+
+{ stdenv, fetchurl, cmake,
+  singlePrec ? true,
+  fftw
+}:
+
+
+stdenv.mkDerivation {
+  name = "gromacs-4.5.5";
+
+  src = fetchurl {
+    url = "ftp://ftp.gromacs.org/pub/gromacs/gromacs-4.5.5.tar.gz";
+    md5 = "6a87e7cdfb25d81afa9fea073eb28468";
+  };
+
+  buildInputs = [cmake fftw];
+
+  cmakeFlags = ''
+    ${if singlePrec then "-DGMX_DOUBLE=OFF" else "-DGMX_DOUBLE=ON -DGMX_DEFAULT_SUFFIX=OFF"}
+  '';
+
+  meta = {
+    homepage    = "http://www.gromacs.org";
+    licence     = "GPLv2";
+    description = "The GROMACS molecular dynamics software package";
+    longDescription = ''
+      GROMACS is a versatile package to perform molecular dynamics,
+      i.e. simulate the Newtonian equations of motion for systems
+      with hundreds to millions of particles.
+
+      It is primarily designed for biochemical molecules like
+      proteins, lipids and nucleic acids that have a lot of
+      complicated bonded interactions, but since GROMACS is
+      extremely fast at calculating the nonbonded interactions (that
+      usually dominate simulations) many groups are also using it
+      for research on non-biological systems, e.g. polymers.
+
+      GROMACS supports all the usual algorithms you expect from a
+      modern molecular dynamics implementation, (check the online
+      reference or manual for details), but there are also quite a
+      few features that make it stand out from the competition.
+
+      See: http://www.gromacs.org/About_Gromacs for details.
+    '';
+  };
+}
diff --git a/pkgs/applications/version-management/darcs/bash-completion.patch b/pkgs/applications/version-management/darcs/bash-completion.patch
deleted file mode 100644
index 8944ebeb9cb..00000000000
--- a/pkgs/applications/version-management/darcs/bash-completion.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/darcs-2.0.0/tools/darcs_completion b/darcs-2.0.0/tools/darcs_completion
-index 10628db..e36476e 100644
---- a/tools/darcs_completion
-+++ b/tools/darcs_completion
-@@ -3,7 +3,6 @@
- # darcs command line completion.
- # Copyright 2002 "David Roundy" <droundy@abridgegame.org>
- #
--have darcs &&
- _darcs()
- {
-     local cur
-@@ -48,5 +47,5 @@ _darcs()
-     return 0
- 
- }
--[ "$have" ] && complete -F _darcs -o default darcs
-+complete -F _darcs -o default darcs
- 
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index fe4f101e27c..3120cc84e63 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -76,6 +76,11 @@ rec {
     inherit stdenv fetchurl ncurses asciidoc xmlto docbook_xsl;
   };
 
+  hub = import ./hub {
+    inherit (rubyLibs) rake;
+    inherit stdenv fetchgit groff makeWrapper;
+  };
+
   gitFastExport = import ./fast-export {
     inherit fetchgit stdenv mercurial coreutils git makeWrapper subversion;
   };
diff --git a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix
index 713cf0d62a6..99e1f839093 100644
--- a/pkgs/applications/version-management/git-and-tools/git-annex/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-annex/default.nix
@@ -12,14 +12,14 @@
 }:
 
 let
-  version = "3.20121112-161-gb27d9eb";
+  version = "3.20121211";
 in
 stdenv.mkDerivation {
   name = "git-annex-${version}";
 
   src = fetchurl {
-    url = "http://git.kitenet.net/?p=git-annex.git;a=snapshot;h=b27d9ebd0f63bdc449440f2529224d5b655ddbb3;sf=tgz";
-    sha256 = "507efc50e33566a51a6abf688920d30fc55ce984c9c35be085e6df0767686b3a";
+    url = "http://git.kitenet.net/?p=git-annex.git;a=snapshot;sf=tgz;h=${version}";
+    sha256 = "1l5sffcn6mcfk0s808z490s30dbq8m4wi8a11ard35hyf599zawq";
     name = "git-annex-${version}.tar.gz";
   };
 
@@ -36,7 +36,6 @@ stdenv.mkDerivation {
   checkTarget = "test";
   doCheck = true;
 
-  # The 'add_url' test fails because it attempts to use the network.
   preConfigure = ''
     makeFlagsArray=( PREFIX=$out )
     sed -i -e 's|#!/usr/bin/perl|#!${perl}/bin/perl|' Build/mdwn2man
diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix
index b3229909212..857b7de3486 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -9,7 +9,7 @@
 
 let
 
-  version = "1.8.0";
+  version = "1.8.0.1";
 
   svn = subversionClient.override { perlBindings = true; };
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://git-core.googlecode.com/files/git-${version}.tar.gz";
-    sha1 = "a03afc33f8f0723ad12649d79f1e8968526b4bf7";
+    sha1 = "4e7492f7558f3ba2a450c43efa7de3b0b1adc6c1";
   };
 
   patches = [ ./docbook2texi.patch ];
diff --git a/pkgs/applications/version-management/git-and-tools/git/docbook2texi-2.patch b/pkgs/applications/version-management/git-and-tools/git/docbook2texi-2.patch
deleted file mode 100644
index 25a76ea3dd2..00000000000
--- a/pkgs/applications/version-management/git-and-tools/git/docbook2texi-2.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-
-make sure `gitman.info' isn't produced since it's broken (duplicate
-node names).
-
-diff --git a/Documentation/Makefile b/Documentation/Makefile
---- a/Documentation/Makefile
-+++ b/Documentation/Makefile
-@@ -84,7 +84,7 @@ man1: $(DOC_MAN1)
- man5: $(DOC_MAN5)
- man7: $(DOC_MAN7)
- 
--info: git.info gitman.info
-+info: git.info
- 
- install: man
- 	$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
-@@ -96,10 +96,9 @@ install: man
- 
- install-info: info
- 	$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)
--	$(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir)
-+	$(INSTALL) -m 644 git.info $(DESTDIR)$(infodir)
- 	if test -r $(DESTDIR)$(infodir)/dir; then \
- 	  $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\
--	  $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\
- 	else \
- 	  echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
- 	fi
diff --git a/pkgs/applications/version-management/git-and-tools/git/glob-path.patch b/pkgs/applications/version-management/git-and-tools/git/glob-path.patch
deleted file mode 100644
index 7515ade5787..00000000000
--- a/pkgs/applications/version-management/git-and-tools/git/glob-path.patch
+++ /dev/null
@@ -1,529 +0,0 @@
-diff --git a/builtin-add.c b/builtin-add.c
-index bf13aa3..02c6751 100644
---- a/builtin-add.c
-+++ b/builtin-add.c
-@@ -123,6 +123,7 @@ int add_files_to_cache(const char *prefix, const char **pathspec, int flags)
- 	init_revisions(&rev, prefix);
- 	setup_revisions(0, NULL, &rev, NULL);
- 	rev.prune_data = pathspec;
-+	rev.glob_paths = 0; /* git-add has its own filename matching machinery */
- 	rev.diffopt.output_format = DIFF_FORMAT_CALLBACK;
- 	rev.diffopt.format_callback = update_callback;
- 	data.flags = flags;
-diff --git a/builtin-blame.c b/builtin-blame.c
-index 9bced3b..237d1fe 100644
---- a/builtin-blame.c
-+++ b/builtin-blame.c
-@@ -343,7 +343,7 @@ static struct origin *find_origin(struct scoreboard *sb,
- 	paths[0] = origin->path;
- 	paths[1] = NULL;
- 
--	diff_tree_setup_paths(paths, &diff_opts);
-+	diff_tree_setup_paths(paths, &diff_opts, 0);
- 	if (diff_setup_done(&diff_opts) < 0)
- 		die("diff-setup");
- 
-@@ -417,7 +417,7 @@ static struct origin *find_rename(struct scoreboard *sb,
- 	diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT;
- 	diff_opts.single_follow = origin->path;
- 	paths[0] = NULL;
--	diff_tree_setup_paths(paths, &diff_opts);
-+	diff_tree_setup_paths(paths, &diff_opts, 0);
- 	if (diff_setup_done(&diff_opts) < 0)
- 		die("diff-setup");
- 
-@@ -1099,7 +1099,7 @@ static int find_copy_in_parent(struct scoreboard *sb,
- 	diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT;
- 
- 	paths[0] = NULL;
--	diff_tree_setup_paths(paths, &diff_opts);
-+	diff_tree_setup_paths(paths, &diff_opts, 0);
- 	if (diff_setup_done(&diff_opts) < 0)
- 		die("diff-setup");
- 
-@@ -2346,6 +2346,11 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
- parse_done:
- 	argc = parse_options_end(&ctx);
- 
-+	if (revs.glob_paths) {
-+		error("git blame does not support `--glob-paths'");
-+		usage_with_options(blame_opt_usage, options);
-+	}
-+
- 	if (!blame_move_score)
- 		blame_move_score = BLAME_DEFAULT_MOVE_SCORE;
- 	if (!blame_copy_score)
-diff --git a/builtin-reset.c b/builtin-reset.c
-index 2e5a886..6026b34 100644
---- a/builtin-reset.c
-+++ b/builtin-reset.c
-@@ -128,14 +128,15 @@ static void update_index_from_diff(struct diff_queue_struct *q,
- }
- 
- static int read_from_tree(const char *prefix, const char **argv,
--		unsigned char *tree_sha1)
-+		unsigned char *tree_sha1, int glob_paths)
- {
- 	struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
- 	int index_fd, index_was_discarded = 0;
- 	struct diff_options opt;
- 
- 	memset(&opt, 0, sizeof(opt));
--	diff_tree_setup_paths(get_pathspec(prefix, (const char **)argv), &opt);
-+	diff_tree_setup_paths(get_pathspec(prefix, (const char **)argv),
-+			&opt, glob_paths);
- 	opt.output_format = DIFF_FORMAT_CALLBACK;
- 	opt.format_callback = update_index_from_diff;
- 	opt.format_callback_data = &index_was_discarded;
-@@ -171,6 +172,7 @@ static const char *reset_type_names[] = { "mixed", "soft", "hard", NULL };
- int cmd_reset(int argc, const char **argv, const char *prefix)
- {
- 	int i = 0, reset_type = NONE, update_ref_status = 0, quiet = 0;
-+	int glob_paths = 0;
- 	const char *rev = "HEAD";
- 	unsigned char sha1[20], *orig = NULL, sha1_orig[20],
- 				*old_orig = NULL, sha1_old_orig[20];
-@@ -182,6 +184,8 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
- 		OPT_SET_INT(0, "soft", &reset_type, "reset only HEAD", SOFT),
- 		OPT_SET_INT(0, "hard", &reset_type,
- 				"reset HEAD, index and working tree", HARD),
-+		OPT_BOOLEAN(0, "glob-paths", &glob_paths,
-+				"match paths with fnmatch"),
- 		OPT_BOOLEAN('q', NULL, &quiet,
- 				"disable showing new HEAD in hard reset and progress message"),
- 		OPT_END()
-@@ -246,7 +250,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
- 		else if (reset_type != NONE)
- 			die("Cannot do %s reset with paths.",
- 					reset_type_names[reset_type]);
--		return read_from_tree(prefix, argv + i, sha1);
-+		return read_from_tree(prefix, argv + i, sha1, glob_paths);
- 	}
- 	if (reset_type == NONE)
- 		reset_type = MIXED; /* by default */
-diff --git a/builtin-update-index.c b/builtin-update-index.c
-index 38eb53c..28b09a3 100644
---- a/builtin-update-index.c
-+++ b/builtin-update-index.c
-@@ -23,6 +23,7 @@ static int allow_replace;
- static int info_only;
- static int force_remove;
- static int verbose;
-+static int glob_paths;
- static int mark_valid_only;
- #define MARK_VALID 1
- #define UNMARK_VALID 2
-@@ -534,7 +535,7 @@ static int do_reupdate(int ac, const char **av,
- 		struct cache_entry *old = NULL;
- 		int save_nr;
- 
--		if (ce_stage(ce) || !ce_path_match(ce, pathspec))
-+		if (ce_stage(ce) || !ce_path_match(ce, pathspec, glob_paths))
- 			continue;
- 		if (has_head)
- 			old = read_one_ent(NULL, head_sha1,
-@@ -659,6 +660,10 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
- 				force_remove = 1;
- 				continue;
- 			}
-+			if (!strcmp(path, "--glob-paths")) {
-+				glob_paths = 1;
-+				continue;
-+			}
- 			if (!strcmp(path, "-z")) {
- 				line_termination = 0;
- 				continue;
-@@ -702,6 +707,8 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
- 				usage(update_index_usage);
- 			die("unknown option %s", path);
- 		}
-+		if (glob_paths)
-+			die("--glob-paths without -g");
- 		p = prefix_path(prefix, prefix_length, path);
- 		update_one(p, NULL, 0);
- 		if (set_executable_bit)
-@@ -712,6 +719,8 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
- 	if (read_from_stdin) {
- 		struct strbuf buf, nbuf;
- 
-+		if (glob_paths)
-+			die("--glob-paths without -g");
- 		strbuf_init(&buf, 0);
- 		strbuf_init(&nbuf, 0);
- 		while (strbuf_getline(&buf, stdin, line_termination) != EOF) {
-diff --git a/cache.h b/cache.h
-index a779d92..5560195 100644
---- a/cache.h
-+++ b/cache.h
-@@ -387,7 +387,8 @@ extern int ce_same_name(struct cache_entry *a, struct cache_entry *b);
- extern int ie_match_stat(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
- extern int ie_modified(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
- 
--extern int ce_path_match(const struct cache_entry *ce, const char **pathspec);
-+extern int ce_path_match(const struct cache_entry *ce, const char **pathspec,
-+		int glob_paths);
- extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, enum object_type type, const char *path);
- extern int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object);
- extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object);
-diff --git a/diff-lib.c b/diff-lib.c
-index e7eaff9..87925a2 100644
---- a/diff-lib.c
-+++ b/diff-lib.c
-@@ -77,7 +77,7 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
- 			DIFF_OPT_TST(&revs->diffopt, HAS_CHANGES))
- 			break;
- 
--		if (!ce_path_match(ce, revs->prune_data))
-+		if (!ce_path_match(ce, revs->prune_data, revs->glob_paths))
- 			continue;
- 
- 		if (ce_stage(ce)) {
-@@ -431,7 +431,7 @@ static int oneway_diff(struct cache_entry **src, struct unpack_trees_options *o)
- 	if (tree == o->df_conflict_entry)
- 		tree = NULL;
- 
--	if (ce_path_match(idx ? idx : tree, revs->prune_data))
-+	if (ce_path_match(idx ? idx : tree, revs->prune_data, revs->glob_paths))
- 		do_oneway_diff(o, idx, tree);
- 
- 	return 0;
-@@ -508,6 +508,7 @@ int do_diff_cache(const unsigned char *tree_sha1, struct diff_options *opt)
- 
- 	init_revisions(&revs, NULL);
- 	revs.prune_data = opt->paths;
-+	revs.glob_paths = opt->glob_paths;
- 	tree = parse_tree_indirect(tree_sha1);
- 	if (!tree)
- 		die("bad tree object %s", sha1_to_hex(tree_sha1));
-diff --git a/diff-no-index.c b/diff-no-index.c
-index f6994cf..ec549a7 100644
---- a/diff-no-index.c
-+++ b/diff-no-index.c
-@@ -240,6 +240,7 @@ void diff_no_index(struct rev_info *revs,
- 	}
- 	else
- 		revs->diffopt.paths = argv + argc - 2;
-+	revs->diffopt.glob_paths = 0;
- 	revs->diffopt.nr_paths = 2;
- 
- 	DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS);
-diff --git a/diff.h b/diff.h
-index 50fb5dd..56f0857 100644
---- a/diff.h
-+++ b/diff.h
-@@ -102,6 +102,7 @@ struct diff_options {
- 	FILE *file;
- 	int close_file;
- 
-+	int glob_paths;
- 	int nr_paths;
- 	const char **paths;
- 	int *pathlens;
-@@ -128,7 +129,8 @@ const char *diff_get_color(int diff_use_color, enum color_diff ix);
- 
- extern const char mime_boundary_leader[];
- 
--extern void diff_tree_setup_paths(const char **paths, struct diff_options *);
-+extern void diff_tree_setup_paths(const char **paths, struct diff_options *opt,
-+		int glob_paths);
- extern void diff_tree_release_paths(struct diff_options *);
- extern int diff_tree(struct tree_desc *t1, struct tree_desc *t2,
- 		     const char *base, struct diff_options *opt);
-diff --git a/gitk-git/gitk b/gitk-git/gitk
-index fddcb45..18c5cbc 100644
---- a/gitk-git/gitk
-+++ b/gitk-git/gitk
-@@ -1866,6 +1866,7 @@ proc makewindow {} {
-     set gm [tk_optionMenu .tf.lbar.gdttype gdttype \
- 		[mc "containing:"] \
- 		[mc "touching paths:"] \
-+		[mc "touching paths (glob):"] \
- 		[mc "adding/removing string:"]]
-     trace add variable gdttype write gdttype_change
-     pack .tf.lbar.gdttype -side left -fill y
-@@ -3588,6 +3589,11 @@ proc do_file_hl {serial} {
- 	set highlight_paths [makepatterns $paths]
- 	highlight_filelist
- 	set gdtargs [concat -- $paths]
-+    } elseif {$gdttype eq [mc "touching paths (glob):"]} {
-+	if {[catch {set paths [shellsplit $highlight_files]}]} return
-+	set highlight_paths $paths
-+	highlight_filelist
-+	set gdtargs [concat --glob-paths -- $paths]
-     } elseif {$gdttype eq [mc "adding/removing string:"]} {
- 	set gdtargs [list "-S$highlight_files"]
-     } else {
-diff --git a/read-cache.c b/read-cache.c
-index 1648428..c11ded9 100644
---- a/read-cache.c
-+++ b/read-cache.c
-@@ -582,7 +582,8 @@ int ce_same_name(struct cache_entry *a, struct cache_entry *b)
- 	return ce_namelen(b) == len && !memcmp(a->name, b->name, len);
- }
- 
--int ce_path_match(const struct cache_entry *ce, const char **pathspec)
-+static int ce_path_match_standard(const struct cache_entry *ce,
-+		const char **pathspec)
- {
- 	const char *match, *name;
- 	int len;
-@@ -608,6 +609,31 @@ int ce_path_match(const struct cache_entry *ce, const char **pathspec)
- 	return 0;
- }
- 
-+static int ce_path_match_globbed(const struct cache_entry *ce,
-+		const char **pathspec)
-+{
-+	const char *match, *name;
-+
-+	if (!pathspec)
-+		return 1;
-+
-+	name = ce->name;
-+	while ((match = *pathspec++) != NULL) {
-+		if (!fnmatch(match, name, 0))
-+			return 1;
-+	}
-+	return 0;
-+}
-+
-+int ce_path_match(const struct cache_entry *ce,
-+		const char **pathspec, int glob_paths)
-+{
-+	if (glob_paths)
-+		return ce_path_match_globbed(ce, pathspec);
-+	else
-+		return ce_path_match_standard(ce, pathspec);
-+}
-+
- /*
-  * We fundamentally don't like some paths: we don't want
-  * dot or dot-dot anywhere, and for obvious reasons don't
-diff --git a/revision.c b/revision.c
-index 3897fec..0dd1091 100644
---- a/revision.c
-+++ b/revision.c
-@@ -519,6 +519,7 @@ static void cherry_pick_list(struct commit_list *list, struct rev_info *revs)
- 	if (revs->diffopt.nr_paths) {
- 		ids.diffopts.nr_paths = revs->diffopt.nr_paths;
- 		ids.diffopts.paths = revs->diffopt.paths;
-+		ids.diffopts.glob_paths = revs->diffopt.glob_paths; /* CHECKME */
- 		ids.diffopts.pathlens = revs->diffopt.pathlens;
- 	}
- 
-@@ -826,7 +827,7 @@ static void prepare_show_merge(struct rev_info *revs)
- 		struct cache_entry *ce = active_cache[i];
- 		if (!ce_stage(ce))
- 			continue;
--		if (ce_path_match(ce, revs->prune_data)) {
-+		if (ce_path_match(ce, revs->prune_data, revs->glob_paths)) {
- 			prune_num++;
- 			prune = xrealloc(prune, sizeof(*prune) * prune_num);
- 			prune[prune_num-2] = ce->name;
-@@ -837,6 +838,7 @@ static void prepare_show_merge(struct rev_info *revs)
- 			i++;
- 	}
- 	revs->prune_data = prune;
-+	revs->glob_paths = 0;
- 	revs->limited = 1;
- }
- 
-@@ -1033,6 +1035,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
- 		revs->min_age = approxidate(arg + 8);
- 	} else if (!strcmp(arg, "--first-parent")) {
- 		revs->first_parent_only = 1;
-+	} else if (!strcmp(arg, "--glob-paths")) {
-+		revs->glob_paths = 1;
- 	} else if (!strcmp(arg, "-g") || !strcmp(arg, "--walk-reflogs")) {
- 		init_reflog_walk(&revs->reflog_info);
- 	} else if (!strcmp(arg, "--default")) {
-@@ -1220,6 +1224,7 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
- int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def)
- {
- 	int i, flags, left, seen_dashdash;
-+	const char **paths = NULL;
- 
- 	/* First, search for "--" */
- 	seen_dashdash = 0;
-@@ -1230,7 +1235,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
- 		argv[i] = NULL;
- 		argc = i;
- 		if (argv[i + 1])
--			revs->prune_data = get_pathspec(revs->prefix, argv + i + 1);
-+			paths = argv + i + 1;
- 		seen_dashdash = 1;
- 		break;
- 	}
-@@ -1290,6 +1295,9 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
- 			if (seen_dashdash || *arg == '^')
- 				die("bad revision '%s'", arg);
- 
-+			if (revs->glob_paths)
-+				die("--glob-paths without --");
-+
- 			/* If we didn't have a "--":
- 			 * (1) all filenames must exist;
- 			 * (2) all rev-args must not be interpretable
-@@ -1301,10 +1309,19 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
- 
- 			revs->prune_data = get_pathspec(revs->prefix,
- 							argv + i);
-+			revs->glob_paths = 0;
- 			break;
- 		}
- 	}
- 
-+	/* Third, handle paths listed after -- */
-+	if (paths != NULL) {
-+		if (revs->glob_paths)
-+			revs->prune_data = paths;
-+		else
-+			revs->prune_data = get_pathspec(revs->prefix, paths);
-+	}
-+
- 	if (revs->def == NULL)
- 		revs->def = def;
- 	if (revs->show_merge)
-@@ -1333,12 +1350,14 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
- 		revs->limited = 1;
- 
- 	if (revs->prune_data) {
--		diff_tree_setup_paths(revs->prune_data, &revs->pruning);
-+		diff_tree_setup_paths(revs->prune_data, &revs->pruning,
-+				revs->glob_paths);
- 		/* Can't prune commits with rename following: the paths change.. */
- 		if (!DIFF_OPT_TST(&revs->diffopt, FOLLOW_RENAMES))
- 			revs->prune = 1;
- 		if (!revs->full_diff)
--			diff_tree_setup_paths(revs->prune_data, &revs->diffopt);
-+			diff_tree_setup_paths(revs->prune_data, &revs->diffopt,
-+				revs->glob_paths);
- 	}
- 	if (revs->combine_merges) {
- 		revs->ignore_merges = 0;
-diff --git a/revision.h b/revision.h
-index fa68c65..a68cdb8 100644
---- a/revision.h
-+++ b/revision.h
-@@ -32,6 +32,9 @@ struct rev_info {
- 	void *prune_data;
- 	unsigned int early_output;
- 
-+	/* whether prune_data contains fnmatch() patterns */
-+	unsigned int	glob_paths:1;
-+
- 	/* Traversal flags */
- 	unsigned int	dense:1,
- 			prune:1,
-diff --git a/tree-diff.c b/tree-diff.c
-index bbb126f..0aa1e9b 100644
---- a/tree-diff.c
-+++ b/tree-diff.c
-@@ -82,6 +82,11 @@ static int compare_tree_entry(struct tree_desc *t1, struct tree_desc *t2, const
- 	return 0;
- }
- 
-+static int tree_entry_interesting_globbed(struct tree_desc *, const char *,
-+		int, struct diff_options *);
-+static int tree_entry_interesting_standard(struct tree_desc *, const char *,
-+		int, struct diff_options *);
-+
- /*
-  * Is a tree entry interesting given the pathspec we have?
-  *
-@@ -91,7 +96,19 @@ static int compare_tree_entry(struct tree_desc *t1, struct tree_desc *t2, const
-  *  - zero for no
-  *  - negative for "no, and no subsequent entries will be either"
-  */
--static int tree_entry_interesting(struct tree_desc *desc, const char *base, int baselen, struct diff_options *opt)
-+static int tree_entry_interesting(struct tree_desc *desc,
-+		const char *base, int baselen, struct diff_options *opt)
-+{
-+	if (opt->glob_paths)
-+		return tree_entry_interesting_globbed(desc, base,
-+				baselen, opt);
-+	else
-+		return tree_entry_interesting_standard(desc, base,
-+				baselen, opt);
-+}
-+
-+static int tree_entry_interesting_standard(struct tree_desc *desc,
-+		const char *base, int baselen, struct diff_options *opt)
- {
- 	const char *path;
- 	const unsigned char *sha1;
-@@ -190,6 +207,41 @@ static int tree_entry_interesting(struct tree_desc *desc, const char *base, int
- 	return never_interesting; /* No matches */
- }
- 
-+static int tree_entry_interesting_globbed(struct tree_desc *desc,
-+		const char *base, int baselen, struct diff_options *opt)
-+{
-+	const char *path;
-+	char *fullpath;
-+	const unsigned char *sha1;
-+	unsigned mode;
-+	int i;
-+	int pathlen;
-+	int result;
-+
-+	if (!opt->nr_paths)
-+		return 1;
-+	sha1 = tree_entry_extract(desc, &path, &mode);
-+	if (S_ISDIR(mode))
-+		return 1;
-+	pathlen = tree_entry_len(path, sha1);
-+
-+	fullpath = xmalloc(pathlen + baselen + 1);
-+	memcpy(fullpath, base, baselen);
-+	memcpy(fullpath + baselen, path, pathlen + 1);
-+
-+	result = 0;
-+	for (i = 0; i < opt->nr_paths; i++) {
-+		const char *match = opt->paths[i];
-+		if (!fnmatch(match, fullpath, 0)) {
-+			result = 1;
-+			break;
-+		}
-+	}
-+
-+	free(fullpath);
-+	return result;
-+}
-+
- /* A whole sub-tree went away or appeared */
- static void show_tree(struct diff_options *opt, const char *prefix, struct tree_desc *desc, const char *base, int baselen)
- {
-@@ -338,7 +390,7 @@ static void try_to_follow_renames(struct tree_desc *t1, struct tree_desc *t2, co
- 	diff_opts.single_follow = opt->paths[0];
- 	diff_opts.break_opt = opt->break_opt;
- 	paths[0] = NULL;
--	diff_tree_setup_paths(paths, &diff_opts);
-+	diff_tree_setup_paths(paths, &diff_opts, 0);
- 	if (diff_setup_done(&diff_opts) < 0)
- 		die("unable to set up diff options to follow renames");
- 	diff_tree(t1, t2, base, &diff_opts);
-@@ -362,7 +414,7 @@ static void try_to_follow_renames(struct tree_desc *t1, struct tree_desc *t2, co
- 			/* Update the path we use from now on.. */
- 			diff_tree_release_paths(opt);
- 			opt->paths[0] = xstrdup(p->one->path);
--			diff_tree_setup_paths(opt->paths, opt);
-+			diff_tree_setup_paths(opt->paths, opt, 0);
- 			break;
- 		}
- 	}
-@@ -440,11 +492,13 @@ void diff_tree_release_paths(struct diff_options *opt)
- 	free(opt->pathlens);
- }
- 
--void diff_tree_setup_paths(const char **p, struct diff_options *opt)
-+void diff_tree_setup_paths(const char **p, struct diff_options *opt,
-+		int glob_paths)
- {
- 	opt->nr_paths = 0;
- 	opt->pathlens = NULL;
- 	opt->paths = NULL;
-+	opt->glob_paths = glob_paths;
- 
- 	if (p) {
- 		int i;
diff --git a/pkgs/applications/version-management/git-and-tools/hub/default.nix b/pkgs/applications/version-management/git-and-tools/hub/default.nix
new file mode 100644
index 00000000000..e545d2bc6f4
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/hub/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, groff, rake, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "hub-${version}";
+  version = "1.10.3";
+
+  src = fetchgit {
+    url = "git://github.com/defunkt/hub.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0j0krmf0sf09hhw3nsn0w1y97d67762g4qrc8080bwcx38lbyvbg";
+  };
+
+  buildInputs = [ rake makeWrapper ];
+
+  installPhase = ''
+    rake install "prefix=$out"
+  '';
+
+  fixupPhase = ''
+    wrapProgram $out/bin/hub --prefix PATH : ${groff}/bin
+  '';
+
+  meta = {
+    description = "A GitHub specific wrapper for git";
+    homepage = "http://defunkt.io/hub/";
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/pkgs/applications/version-management/mercurial/default.nix b/pkgs/applications/version-management/mercurial/default.nix
index 486bebc2531..865033ae2d2 100644
--- a/pkgs/applications/version-management/mercurial/default.nix
+++ b/pkgs/applications/version-management/mercurial/default.nix
@@ -17,8 +17,6 @@ stdenv.mkDerivation {
 
   buildInputs = [ python makeWrapper docutils unzip ];
 
-  PYTHONPATH = "${python}/lib/python2.6/site-packages:${python}/lib/python2.7/site-packages:${docutils}/lib/python2.5/site-packages:${docutils}/lib/python2.6/site-packages:${docutils}/lib/python2.7/site-packages";
-
   makeFlags = "PREFIX=$(out)";
 
   postInstall = (stdenv.lib.optionalString guiSupport
@@ -47,8 +45,6 @@ stdenv.mkDerivation {
       chmod u+x $out/share/cgi-bin/hgweb.cgi
     '';
 
-  doCheck = false;  # The test suite fails, unfortunately. Not sure why.
-
   meta = {
     description = "A fast, lightweight SCM system for very large distributed projects";
     homepage = "http://www.selenic.com/mercurial/";
diff --git a/pkgs/applications/version-management/monotone-viz/1.0.1.nix b/pkgs/applications/version-management/monotone-viz/1.0.1.nix
deleted file mode 100644
index dc4816cee51..00000000000
--- a/pkgs/applications/version-management/monotone-viz/1.0.1.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-args : with args; 
-rec {
-  src = fetchurl {
-    name = "monotone-viz-1.0.1-nolablgtk.tar.gz";
-    urls = [
-      http://ftp.debian.org/debian/pool/main/m/monotone-viz/monotone-viz_1.0.1.orig.tar.gz
-      #http://oandrieu.nerim.net/monotone-viz/monotone-viz-1.0.1-nolablgtk.tar.gz
-    ];
-    sha256 = "066qwrknjk5hwk9jblnf0bzvbmfbabq0zhsxkd3nzk469zkpvhl2";
-  };
-
-  buildInputs = [ocaml lablgtk libgnomecanvas gtk graphviz glib pkgconfig];
-  configureFlags = ["--with-lablgtk-dir=${lablgtk}/lib/ocaml/lablgtk2"];
-
-  /* doConfigure should be specified separately */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
-  name = "monotone-viz-" + version;
-  meta = {
-    description = "Monotone commit tree visualizer";
-  };
-}
-
diff --git a/pkgs/applications/version-management/monotone-viz/graphviz.patch b/pkgs/applications/version-management/monotone-viz/graphviz.patch
deleted file mode 100644
index e1f9bfc5f7f..00000000000
--- a/pkgs/applications/version-management/monotone-viz/graphviz.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-# patch "agraph.ml"
-#  from [8ae6c9bb70bbf9fd80e4e62d9f162ac581619b9e]
-#    to [05aa88921481ac9bfe238daeb4374fbc9993caaa]
-#
-============================================================
---- a/agraph.ml	8ae6c9bb70bbf9fd80e4e62d9f162ac581619b9e
-+++ b/agraph.ml	05aa88921481ac9bfe238daeb4374fbc9993caaa
-@@ -50,8 +50,9 @@ let dot_format params agraph =
-       agraph.nodes in
- 
-   !+ "digraph \"monotone-viz\"\n{\n" ;
--  if params.lr_layout then
--    !+ "  graph [rankdir=LR] ;\n" ;
-+  if params.lr_layout
-+  then  !+ "  graph [rankdir=LR] ;\n"
-+  else  !+ "  graph [rankdir=BT] ;\n" ;
-   !+ "  graph [ranksep=\"0.25\"] ;\n" ;
-   !+ "  node [label=\"\"] ;\n" ;
-   
-@@ -222,11 +223,11 @@ let spawn_dot graph status done_cb =
-   let dot_prg = graph.layout_params.dot_program in
-   let cmd = 
-     if Viz_misc.debug "dot"
--    then [ "/bin/sh" ; "-c" ; 
-+    then [ "/bin/sh" ; "-c" ; 
- 	   Printf.sprintf 
- 	     "set -o pipefail ; \
--              tee agraph.in.dot | %s -q -y -s%.0f | tee agraph.out.dot" dot_prg ppi ]
--    else [ dot_prg ; "-q" ; "-y" ; Printf.sprintf "-s%.0f" ppi ] in
-+              tee agraph.in.dot | %s -q -s%.0f | tee agraph.out.dot" dot_prg ppi ]
-+    else [ dot_prg ; "-q" ; Printf.sprintf "-s%.0f" ppi ] in
-   let error fmt =
-     Printf.kprintf (fun s -> done_cb (`LAYOUT_ERROR s)) fmt in
-   try
diff --git a/pkgs/applications/version-management/rcs/no-root.patch b/pkgs/applications/version-management/rcs/no-root.patch
deleted file mode 100644
index 2fbfc86ff45..00000000000
--- a/pkgs/applications/version-management/rcs/no-root.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-In NixOS chroot builds, there is no root account.  So configure should
-not rely on its existence in deciding whether to use getpwuid().
-
-diff -rc -x '*~' rcs-5.7-orig/src/conf.sh rcs-5.7/src/conf.sh
-*** rcs-5.7-orig/src/conf.sh	1995-06-16 08:19:24.000000000 +0200
---- rcs-5.7/src/conf.sh	2010-02-12 15:22:37.000000000 +0100
-***************
-*** 821,827 ****
-  	a= z=
-  	cat >a.c <<EOF
-  #include "$A_H"
-! int main() { exitmain(!getpwuid(0)); }
-  EOF
-  	$PREPARE_CC || exit
-  	if ($CL a.c $L && $aout) >&2
---- 821,827 ----
-  	a= z=
-  	cat >a.c <<EOF
-  #include "$A_H"
-! int main() { exitmain(!getpwuid(getuid())); }
-  EOF
-  	$PREPARE_CC || exit
-  	if ($CL a.c $L && $aout) >&2
diff --git a/pkgs/applications/version-management/veracity/src-for-default.nix b/pkgs/applications/version-management/veracity/src-for-default.nix
index 395dda240b8..5a514e8728d 100644
--- a/pkgs/applications/version-management/veracity/src-for-default.nix
+++ b/pkgs/applications/version-management/veracity/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="2.0.0.10822";
-   name="veracity-2.0.0.10822";
-   hash="0zgvrsjxfd1p9pflx1kxggmk953jhjk02h1hili9h1vdasvn2188";
-   url="http://download.sourcegear.com/Veracity/release/2.0.0.10822/veracity-source-${version}.tar.gz";
-   advertisedUrl="http://download.sourcegear.com/Veracity/release/2.0.0.10822/veracity-source-2.0.0.10822.tar.gz";
+   version="2.1.0.10979";
+   name="veracity-2.1.0.10979";
+   hash="15x3cwwjv9b0cbjx6insqk190wpnhwcm1z4b570hvw3lix3xnxhl";
+   url="http://download.sourcegear.com/Veracity/release/2.1.0.10979/veracity-source-${version}.tar.gz";
+   advertisedUrl="http://download.sourcegear.com/Veracity/release/2.1.0.10979/veracity-source-2.1.0.10979.tar.gz";
   
   
 }
diff --git a/pkgs/applications/video/gpac/default.nix b/pkgs/applications/video/gpac/default.nix
new file mode 100644
index 00000000000..292010a3717
--- /dev/null
+++ b/pkgs/applications/video/gpac/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchsvn, pkgconfig, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "gpac-0.5.0-svn";
+
+  src = fetchsvn {
+    url = "https://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac";
+    rev = "4253";
+    sha256 = "0z4bd63c805q53hpb09gq0m0apy12z5a90zxx4jjx3ln64xq0pnn";
+  };
+
+  # this is the bare minimum configuration, as I'm only interested in MP4Box
+  # For most other functionality, this should probably be extended
+  buildNativeInputs = [ pkgconfig zlib ];
+
+  meta = {
+    description = "Open Source multimedia framework for research and academic purposes";
+    longDescription = ''
+      GPAC is an Open Source multimedia framework for research and academic purposes.
+      The project covers different aspects of multimedia, with a focus on presentation
+      technologies (graphics, animation and interactivity) and on multimedia packaging
+      formats such as MP4.
+
+      GPAC provides three sets of tools based on a core library called libgpac:
+
+      A multimedia player, called Osmo4 / MP4Client,
+      A multimedia packager, called MP4Box,
+      And some server tools included in MP4Box and MP42TS applications.
+    '';
+    homepage = http://gpac.wp.mines-telecom.fr;
+    license = stdenv.lib.licenses.lgpl21;
+
+    maintainers = [ stdenv.lib.maintainers.bluescreen303 ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 812826d7ec2..1dc58607de0 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -16,11 +16,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "mkvtoolnix-5.6.0";
+  name = "mkvtoolnix-5.9.0";
 
   src = fetchurl {
     url = "http://www.bunkus.org/videotools/mkvtoolnix/sources/${name}.tar.bz2";
-    sha256 = "1hzwf4zaamny3qzmd6hyhy4hy9l67s3fjvznbi0avw0ad7g05i89";
+    sha256 = "1qdxzi72w5p77brlpp7y7llsgzlvl4p8fk1kzg934cqw6cqza4yr";
   };
 
   buildInputs = [ libmatroska flac libvorbis file boost lzo xdg_utils expat wxGTK zlib ruby gettext pkgconfig curl ];
diff --git a/pkgs/applications/video/tvtime/tvtime-1.0.2+linux-headers-2.6.18.patch b/pkgs/applications/video/tvtime/tvtime-1.0.2+linux-headers-2.6.18.patch
deleted file mode 100644
index b1cfd49f1ba..00000000000
--- a/pkgs/applications/video/tvtime/tvtime-1.0.2+linux-headers-2.6.18.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: tvtime-1.0.2/src/videoinput.c
-===================================================================
---- tvtime-1.0.2.orig/src/videoinput.c
-+++ tvtime-1.0.2/src/videoinput.c
-@@ -35,8 +35,8 @@
- #ifdef HAVE_CONFIG_H
- # include "config.h"
- #endif
--#include "videodev.h"
--#include "videodev2.h"
-+#include <linux/videodev.h>
-+#include <linux/videodev2.h>
- #include "videoinput.h"
- #include "mixer.h"
- 
diff --git a/pkgs/applications/virtualization/qemu/0.11.0.nix b/pkgs/applications/virtualization/qemu/0.11.0.nix
deleted file mode 100644
index bbcf1806452..00000000000
--- a/pkgs/applications/virtualization/qemu/0.11.0.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{stdenv, fetchurl, SDL, zlib, which}:
-
-stdenv.mkDerivation {
-  name = "qemu-0.11.0";
-
-  src = fetchurl {
-    url = http://download.savannah.gnu.org/releases/qemu/qemu-0.11.0.tar.gz;
-    sha256 = "1w3n61lzwvqg1ygn0vs8syybbmbcbk7lfyya098k201lp5rpwamw";
-  };
-
-  patchFlags = "-p2";
-  
-  buildInputs = [SDL zlib which];
-  
-  meta = {
-    description = "QEmu processor emulator";
-  };
-}
diff --git a/pkgs/applications/virtualization/qemu/0.13.nix b/pkgs/applications/virtualization/qemu/0.13.nix
deleted file mode 100644
index e1b63674969..00000000000
--- a/pkgs/applications/virtualization/qemu/0.13.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{ stdenv, fetchurl, SDL, zlib, which, ncurses }:
-
-stdenv.mkDerivation rec {
-  name = "qemu-0.13.0";
-
-  src = fetchurl {
-    url = "mirror://savannah/releases/qemu/${name}.tar.gz";
-    sha256 = "0xyqbwy78218ja6r9ya5p37j8hcd81l4cpw3ghvnxsjwn18mhvqy";
-  };
-
-  buildInputs = [ SDL zlib which ncurses ];
-
-  meta = {
-    description = "QEmu processor emulator";
-    license = "GPLv2+";
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; linux;
-  };
-}
diff --git a/pkgs/applications/virtualization/qemu/svn-6642.nix b/pkgs/applications/virtualization/qemu/svn-6642.nix
deleted file mode 100644
index 32d67234ba7..00000000000
--- a/pkgs/applications/virtualization/qemu/svn-6642.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{stdenv, fetchsvn, SDL, zlib, which}:
-
-stdenv.mkDerivation {
-  name = "qemu-svn-6642";
-
-  src = fetchsvn {
-  	url = "svn://svn.sv.gnu.org/qemu/trunk";
-	rev = "6642";
-	sha256 = "12445ad91feb72eecd1db0d4319a8fa5d7dc971b89228bd0e121b49c5da9705e";
-  };
-
-  patchFlags = "-p2";
-  
-  buildInputs = [SDL zlib which];
-  
-  meta = {
-    description = "QEmu processor emulator";
-  };
-}
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index a8594c4ba16..87eb0020c1d 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -4,13 +4,15 @@
 , xorriso, makeself, perl, pkgconfig
 , javaBindings ? false, jdk ? null
 , pythonBindings ? false, python ? null
+, enableExtensionPack ? false, requireFile ? null, patchelf ? null
 }:
 
 with stdenv.lib;
 
 let
 
-  version = "4.2.2";
+  version = "4.2.4";
+  extpackRevision = "81684";
 
   forEachModule = action: ''
     for mod in \
@@ -29,12 +31,20 @@ let
     done
   '';
 
+  extensionPack = requireFile {
+    name = "Oracle_VM_VirtualBox_Extension_Pack-${version}-${extpackRevision}"
+         + ".vbox-extpack";
+    # Has to be base16 because it's used as an input to VBoxExtPackHelperApp!
+    sha256 = "62078e057a4ab56aec5ac086746522b3d94787333d0444169471fa5152c609ed";
+    url = "https://www.virtualbox.org/wiki/Downloads";
+  };
+
 in stdenv.mkDerivation {
   name = "virtualbox-${version}-${kernel.version}";
 
   src = fetchurl {
     url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
-    sha256 = "943daa13694605d5d0a23ffef27c398b5e72ada669de89bad4b98f000f029700";
+    sha256 = "a7c607523c1c10b7b978ab39a92bb646517316548aa4a1a74b6e434ac2bf0adc";
   };
 
   buildInputs =
@@ -108,6 +118,15 @@ in stdenv.mkDerivation {
         ln -s "$libexec/$file" $out/bin/$file
     done
 
+    ${optionalString enableExtensionPack ''
+      "$libexec/VBoxExtPackHelperApp" install \
+        --base-dir "$libexec/ExtensionPacks" \
+        --cert-dir "$libexec/ExtPackCertificates" \
+        --name "Oracle VM VirtualBox Extension Pack" \
+        --tarball "${extensionPack}"
+        --sha-256 "${extensionPack.outputHash}"
+    ''}
+
     # Create and fix desktop item
     mkdir -p $out/share/applications
     sed -i -e "s|Icon=VBox|Icon=$libexec/VBox.png|" $libexec/virtualbox.desktop
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
index c4c7a9f2708..219f8531787 100644
--- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, lib, patchelf, cdrkit, kernel, which, makeWrapper
 , libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor}:
 
-let version = "4.2.2"; in
+let version = "4.2.4"; in
 
 stdenv.mkDerivation {
-  name = "VirtualBox-GuestAdditions-${version}";
+  name = "VirtualBox-GuestAdditions-${version}-${kernel.version}";
 
   src = fetchurl {
     url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
-    sha256 = "26f5390b36a3bb9855846d194dcd287b8e53613b599c6ffd7aff1b451cc7f1f1";
+    sha256 = "3d7d909a0fe9ac5ffcca6afdd4142b88bad116d2ffed6e95588dbfbcf00ca5e9";
   };
 
   KERN_DIR = "${kernel}/lib/modules/*/build";
diff --git a/pkgs/applications/window-managers/i3/default.nix b/pkgs/applications/window-managers/i3/default.nix
index 042e1a323a6..94ac84f838c 100644
--- a/pkgs/applications/window-managers/i3/default.nix
+++ b/pkgs/applications/window-managers/i3/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "i3-${version}";
-  version = "4.3";
+  version = "4.4";
 
   src = fetchurl {
     url = "http://i3wm.org/downloads/${name}.tar.bz2";
-    sha256 = "895bf586092535efb2bc723ba599c71a027768115e56052f111fc8bb148db925";
+    sha256 = "06s8gzcxxh06zp1586kp4bxaj8yj5i9jacwg0nizbmmnx94mg1wr";
   };
 
   buildInputs = [ which pkgconfig libxcb xcbutilkeysyms xcbutil bison xcbutilwm
diff --git a/pkgs/applications/window-managers/wmii/builder.sh b/pkgs/applications/window-managers/wmii/builder.sh
deleted file mode 100644
index be21a9c9fad..00000000000
--- a/pkgs/applications/window-managers/wmii/builder.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-source $stdenv/setup
-
-postUnpack() {
-cd $sourceRoot
-
-cat >> config.mk << EOF
-PREFIX=
-DESTDIR=${out}
-
-CFLAGS = -DVERSION=\\"\${VERSION}\\"
-
-LDFLAGS = -lm -lX11 -lixp
-
-AWKPATH=${gawk}/bin/gawk
-CONFPREFIX = /etc
-MANPREFIX = /share/man
-EOF
-
-cd ..
-}
-
-postUnpack=postUnpack
-
-genericBuild
diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix
index 42392aff60c..a5884786b00 100644
--- a/pkgs/build-support/cabal/default.nix
+++ b/pkgs/build-support/cabal/default.nix
@@ -44,7 +44,9 @@
             # the default download location for Cabal packages is Hackage,
             # you still have to specify the checksum
             src = fetchurl {
-              url = "http://hackage.haskell.org/packages/archive/${self.pname}/${self.version}/${self.fname}.tar.gz";
+              # cannot use mirrors system because of subtly different directory structures
+              urls = ["http://hackage.haskell.org/packages/archive/${self.pname}/${self.version}/${self.fname}.tar.gz"
+                      "http://hdiff.luite.com/packages/archive/${self.pname}/${self.fname}.tar.gz"];
               inherit (self) sha256;
             };
 
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index dd81692b5f2..22b808b71aa 100644
--- a/pkgs/build-support/fetchurl/mirrors.nix
+++ b/pkgs/build-support/fetchurl/mirrors.nix
@@ -248,8 +248,6 @@ rec {
   ];
 
   postgresql = [
-    http://ftp2.nl.postgresql.org/
-    ftp://ftp.nl.postgresql.org/pub/mirror/postgresql/
     ftp://ftp.postgresql.org/pub/
     ftp://ftp-archives.postgresql.org/pub/
   ];
diff --git a/pkgs/build-support/upstream-updater/update-walker-service-specific.sh b/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
index 234f27ff1d1..4f3a7110346 100644
--- a/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
+++ b/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
@@ -3,3 +3,7 @@ SF_redirect () {
   process 'http://[a-z]+[.]dl[.]sourceforge[.]net/' 'mirror://sourceforge/'
   process '[?].*' ''
 }
+
+SF_version_dir () {
+  version_link 'http://sourceforge.net/.+/[0-9.]+/$'
+}
diff --git a/pkgs/build-support/upstream-updater/update-walker.sh b/pkgs/build-support/upstream-updater/update-walker.sh
index 78c61dd2b82..c4dc7713f50 100755
--- a/pkgs/build-support/upstream-updater/update-walker.sh
+++ b/pkgs/build-support/upstream-updater/update-walker.sh
@@ -82,20 +82,32 @@ version () {
 }
 
 ensure_version () {
+  echo "Ensuring version. CURRENT_VERSION: $CURRENT_VERSION" >&2
   [ -z "$CURRENT_VERSION" ] && version '.*-([0-9.]+)[-._].*' '\1'
 }
 
 ensure_target () {
-  [ -z "$CURRENT_TARGET" ] && target default.nix
+  echo "Ensuring target. CURRENT_TARGET: $CURRENT_TARGET" >&2
+  [ -z "$CURRENT_TARGET" ] && target "$(basename "$CONFIG_NAME" .upstream).nix"
 }
 
 ensure_name () {
+  echo "Ensuring name. CURRENT_NAME: $CURRENT_NAME" >&2
   [ -z "$CURRENT_NAME" ] && name "$(basename "$CONFIG_DIR")"
   echo "Resulting name: $CURRENT_NAME"
 }
 
+ensure_attribute_name () {
+  echo "Ensuring attribute name. CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
+  [ -z "$CURRENT_ATTRIBUTE_NAME" ] && attribute_name "$CURRENT_NAME"
+  echo "Resulting attribute name: $CURRENT_ATTRIBUTE_NAME"
+}
+
 ensure_choice () {
-  [ -n "NEED_TO_CHOOSE_URL" ] && {
+  echo "Ensuring that choice is made." >&2
+  echo "NEED_TO_CHOOSE_URL: [$NEED_TO_CHOOSE_URL]." >&2
+  echo "CURRENT_URL: $CURRENT_URL" >&2
+  [ -n "$NEED_TO_CHOOSE_URL" ] && {
     version_link '[.]tar[.]([^./])+$'
     unset NEED_TO_CHOOSE_URL
   }
@@ -106,16 +118,28 @@ ensure_choice () {
   }
 }
 
+ensure_hash () {
+  echo "Ensuring hash. CURRENT_HASH: $CURRENT_HASH" >&2
+  [ -z "$CURRENT_HASH" ] && hash
+}
+
 hash () {
   CURRENT_HASH="$(nix-prefetch-url "$CURRENT_URL")"
+  echo "CURRENT_HASH: $CURRENT_HASH" >&2
 }
 
 name () {
   CURRENT_NAME="$1"
+  echo "CURRENT_NAME: $CURRENT_NAME" >&2
+}
+
+attribute_name () {
+  CURRENT_ATTRIBUTE_NAME="$1"
+  echo "CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
 }
 
 retrieve_version () {
-  PACKAGED_VERSION="$(nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_NAME".meta.version | xargs)"
+  PACKAGED_VERSION="$(nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_ATTRIBUTE_NAME".meta.version | xargs)"
 }
 
 directory_of () {
@@ -128,8 +152,7 @@ full_path () {
 
 target () {
   CURRENT_TARGET="$1"
-  test -e "$CURRENT_TARGET" || 
-    { [ "$CURRENT_TARGET" = "${CURRENT_TARGET#/}" ] && CURRENT_TARGET="$CONFIG_DIR/$CURRENT_TARGET"; }
+  { [ "$CURRENT_TARGET" = "${CURRENT_TARGET#/}" ] && CURRENT_TARGET="$CONFIG_DIR/$CURRENT_TARGET"; }
   echo "Target set to: $CURRENT_TARGET"
 }
 
@@ -146,7 +169,7 @@ do_write_expression () {
   echo "${1}rec {"
   echo "${1}  baseName=\"$CURRENT_NAME\";"
   echo "${1}  version=\"$CURRENT_VERSION\";"
-  echo "${1}  name=\"$CURRENT_NAME-$CURRENT_VERSION\";"
+  echo "${1}  name=\"\${baseName}-\${version}\";"
   echo "${1}  hash=\"$CURRENT_HASH\";"
   echo "${1}  url=\"$CURRENT_URL\";"
   echo "${1}  sha256=\"$CURRENT_HASH\";"
@@ -166,6 +189,12 @@ replace_once () {
   replacement="$3"
   instance="${4:-1}"
 
+  echo "Replacing once:"
+  echo "file: [[$file]]"
+  echo "regexp: [[$regexp]]"
+  echo "replacement: [[$replacement]]"
+  echo "instance: [[$instance]]"
+
   position="$(line_position "$file" "$regexp" "$instance")"
   sed -re "${position}s	$regexp	$replacement	" -i "$file"
 }
@@ -180,7 +209,7 @@ set_var_value () {
   quote='"'
   let "$no_quotes" && quote=""
 
-  replace_once "$file" "${var} *= *.*" "${var} = ${quote}${value}${quote};"
+  replace_once "$file" "${var} *= *.*" "${var} = ${quote}${value}${quote};" "$instance"
 }
 
 do_regenerate () {
@@ -196,16 +225,18 @@ do_regenerate () {
 }
 
 do_overwrite () {
-  hash
+  ensure_hash
   do_regenerate "$1" > "$1.new.tmp"
   mv "$1.new.tmp" "$1"
 }
 
 process_config () {
   CONFIG_DIR="$(directory_of "$1")"
+  CONFIG_NAME="$(basename "$1")"
   BEGIN_EXPRESSION='# Generated upstream information';
-  source "$CONFIG_DIR/$(basename "$1")"
+  source "$CONFIG_DIR/$CONFIG_NAME"
   ensure_name
+  ensure_attribute_name
   retrieve_version
   ensure_choice
   ensure_version
diff --git a/pkgs/build-support/upstream-updater/urls-from-page.sh b/pkgs/build-support/upstream-updater/urls-from-page.sh
index 065e3faf309..f1ddf0bfd88 100755
--- a/pkgs/build-support/upstream-updater/urls-from-page.sh
+++ b/pkgs/build-support/upstream-updater/urls-from-page.sh
@@ -11,4 +11,4 @@ echo "URL: $url" >&2
 
 curl -L -k "$url" | sed -re 's/^/-/;s/[hH][rR][eE][fF]="([^"]*)"/\n+\1\n-/g' | \
   sed -e '/^-/d; s/^[+]//; /^#/d;'"s/^\\//$protocol:\\/\\/$server\\//g" | \
-  sed -re 's~^[^:]*$~'"$protocol://$basepath/&~"
+  sed -re 's`^[^:]*$`'"$protocol://$basepath/&\`"
diff --git a/pkgs/build-support/vm/deb/deb-closure.pl b/pkgs/build-support/vm/deb/deb-closure.pl
index 1d41f89218b..887077037e2 100644
--- a/pkgs/build-support/vm/deb/deb-closure.pl
+++ b/pkgs/build-support/vm/deb/deb-closure.pl
@@ -1,5 +1,5 @@
 use strict;
-use Dpkg::Cdata;
+use Dpkg::Control;
 use Dpkg::Deps;
 use File::Basename;
 
@@ -7,6 +7,7 @@ my $packagesFile = shift @ARGV;
 my $urlPrefix = shift @ARGV;
 my @toplevelPkgs = @ARGV;
 
+
 my %packages;
 
 
@@ -14,10 +15,10 @@ my %packages;
 open PACKAGES, "<$packagesFile" or die;
 
 while (1) {
-    my $cdata = parsecdata(\*PACKAGES, $packagesFile);
-    last unless defined $cdata;
-    #print $cdata->{Package}, "\n";
+    my $cdata = Dpkg::Control->new(type => CTRL_INFO_PKG);
+    last if not $cdata->parse(\*PACKAGES, $packagesFile);
     die unless defined $cdata->{Package};
+    #print STDERR $cdata->{Package}, "\n";
     $packages{$cdata->{Package}} = $cdata;
 }
 
@@ -50,7 +51,7 @@ my %provides;
 
 foreach my $cdata (values %packages) {
     next unless defined $cdata->{Provides};
-    my @provides = getDeps(Dpkg::Deps::parse($cdata->{Provides}));
+    my @provides = getDeps(Dpkg::Deps::deps_parse($cdata->{Provides}));
     foreach my $name (@provides) {
         #die "conflicting provide: $name\n" if defined $provides{$name};
         #warn "provide by $cdata->{Package} conflicts with package with the same name: $name\n";
@@ -83,7 +84,7 @@ sub closePackage {
     $donePkgs{$pkgName} = 1;
 
     if (defined $cdata->{Provides}) {
-        foreach my $name (getDeps(Dpkg::Deps::parse($cdata->{Provides}))) {
+        foreach my $name (getDeps(Dpkg::Deps::deps_parse($cdata->{Provides}))) {
             $provides{$name} = $cdata->{Package};
         }
     }
@@ -92,14 +93,14 @@ sub closePackage {
 
     if (defined $cdata->{Depends}) {
         print STDERR "    $pkgName: $cdata->{Depends}\n";
-        my $deps = Dpkg::Deps::parse($cdata->{Depends});
+        my $deps = Dpkg::Deps::deps_parse($cdata->{Depends});
         die unless defined $deps;
         push @depNames, getDeps($deps);
     }
 
     if (defined $cdata->{'Pre-Depends'}) {
         print STDERR "    $pkgName: $cdata->{'Pre-Depends'}\n";
-        my $deps = Dpkg::Deps::parse($cdata->{'Pre-Depends'});
+        my $deps = Dpkg::Deps::deps_parse($cdata->{'Pre-Depends'});
         die unless defined $deps;
         push @depNames, getDeps($deps);
     }
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix
index e8de915e788..9d9bdb2033e 100644
--- a/pkgs/build-support/vm/default.nix
+++ b/pkgs/build-support/vm/default.nix
@@ -3,7 +3,7 @@
 , img ? "bzImage"
 , rootModules ?
     [ "cifs" "virtio_net" "virtio_pci" "virtio_blk" "virtio_balloon" "nls_utf8" "ext2" "ext3"
-      "unix" "hmac" "md4" "ecb" "des_generic"
+      "ext4" "unix" "hmac" "md4" "ecb" "des_generic"
     ]
 }:
 
@@ -38,35 +38,19 @@ rec {
       # Copy what we need from Glibc.
       cp -p ${pkgs.stdenv.glibc}/lib/ld-linux*.so.? $out/lib
       cp -p ${pkgs.stdenv.glibc}/lib/libc.so.* $out/lib
-      cp -p ${pkgs.stdenv.glibc}/lib/librt.so.* $out/lib
-      cp -p ${pkgs.stdenv.glibc}/lib/libdl.so.* $out/lib
-
-      # Copy some utillinux stuff.
-      cp ${utillinux}/bin/mount ${utillinux}/bin/umount $out/bin
-      cp -pd ${utillinux}/lib/libblkid*.so.* $out/lib
-      cp -pd ${utillinux}/lib/libuuid*.so.* $out/lib
-
-      # Copy some coreutils.
-      cp ${coreutils}/bin/basename $out/bin
-      cp ${coreutils}/bin/mkdir $out/bin
-      cp ${coreutils}/bin/mknod $out/bin
-      cp ${coreutils}/bin/cat $out/bin
-      cp ${coreutils}/bin/chroot $out/bin
-      cp ${coreutils}/bin/sleep $out/bin
-      cp ${coreutils}/bin/ln $out/bin
-
-      # Copy some other tools.
-      cp ${bash}/bin/bash $out/bin
-      cp ${module_init_tools}/sbin/insmod $out/bin/insmod
-      cp ${nettools}/sbin/ifconfig $out/bin
-      cp ${sysvinit}/sbin/halt $out/bin
+      cp -p ${pkgs.stdenv.glibc}/lib/libm.so.* $out/lib
+
+      # Copy BusyBox.
+      cp -pd ${pkgs.busybox}/bin/* ${pkgs.busybox}/sbin/* $out/bin
 
       # Run patchelf to make the programs refer to the copied libraries.
       for i in $out/bin/* $out/lib/*; do if ! test -L $i; then nuke-refs $i; fi; done
 
       for i in $out/bin/*; do
-          echo "patching $i..."
-          patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib $i || true
+          if [ -f "$i" -a ! -L "$i" ]; then
+              echo "patching $i..."
+              patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib $i || true
+          fi
       done
     ''; # */
 
@@ -84,8 +68,7 @@ rec {
 
 
   stage1Init = writeScript "vm-run-stage1" ''
-    #! ${initrdUtils}/bin/bash -e
-    echo START
+    #! ${initrdUtils}/bin/ash -e
 
     export PATH=${initrdUtils}/bin
 
@@ -167,8 +150,7 @@ rec {
 
     mount -o remount,ro dummy /fs
 
-    echo DONE
-    halt -d -p -f
+    poweroff -f
   '';
 
 
@@ -761,7 +743,7 @@ rec {
   debClosureGenerator =
     {name, packagesLists, urlPrefix, packages}:
 
-    runCommand "${name}.nix" {} ''
+    runCommand "${name}.nix" { buildInputs = [ perl dpkg ]; } ''
       for i in ${toString packagesLists}; do
         echo "adding $i..."
         bunzip2 < $i >> ./Packages
@@ -770,7 +752,7 @@ rec {
       # Work around this bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452279
       sed -i ./Packages -e s/x86_64-linux-gnu/x86-64-linux-gnu/g
 
-      ${perl}/bin/perl -I${dpkg} -w ${deb/deb-closure.pl} \
+      perl -w ${deb/deb-closure.pl} \
         ./Packages ${urlPrefix} ${toString packages} > $out
     '';
 
@@ -1306,6 +1288,40 @@ rec {
       packages = commonDebPackages ++ [ "diffutils" ];
     };
 
+    ubuntu1210i386 = {
+      name = "ubuntu-12.10-quantal-i386";
+      fullName = "Ubuntu 12.10 Quantal (i386)";
+      packagesLists =
+        [ (fetchurl {
+            url = mirror://ubuntu/dists/quantal/main/binary-i386/Packages.bz2;
+            sha256 = "bee3200ac8f037700ccd2311fb8b0de665bd02d46bdb2ae946cf50c5885001c3";
+          })
+          (fetchurl {
+            url = mirror://ubuntu/dists/quantal/universe/binary-i386/Packages.bz2;
+            sha256 = "323036e81c8bf409f71d3bc5cf37cfba72fe1d0fc82e9b5418d4d0cb516646e1";
+          })
+        ];
+      urlPrefix = mirror://ubuntu;
+      packages = commonDebPackages ++ [ "diffutils" ];
+    };
+
+    ubuntu1210x86_64 = {
+      name = "ubuntu-12.10-quantal-amd64";
+      fullName = "Ubuntu 12.10 Quantal (amd64)";
+      packagesList =
+        [ (fetchurl {
+            url = mirror://ubuntu/dists/quantal/main/binary-amd64/Packages.bz2;
+            sha256 = "ef14073f335ef118ebe1c7d45f5a0c17ef28f72abb57c10b9082ab5e04b5d003";
+          })
+          (fetchurl {
+            url = mirror://ubuntu/dists/quantal/universe/binary-amd64/Packages.bz2;
+            sha256 = "c762bd4ed063326577a62ff783cf9720e772b03d4a2aa38048918ee6287b96ce";
+          })
+        ];
+      urlPrefix = mirror://ubuntu;
+      packages = commonDebPackages ++ [ "diffutils" ];
+    };
+
     debian40i386 = {
       name = "debian-4.0r9-etch-i386";
       fullName = "Debian 4.0r9 Etch (i386)";
@@ -1351,22 +1367,22 @@ rec {
     };
 
     debian60i386 = {
-      name = "debian-6.0.4-squeeze-i386";
-      fullName = "Debian 6.0.4 Squeeze (i386)";
+      name = "debian-6.0.6-squeeze-i386";
+      fullName = "Debian 6.0.6 Squeeze (i386)";
       packagesList = fetchurl {
         url = mirror://debian/dists/squeeze/main/binary-i386/Packages.bz2;
-        sha256 = "1aih4n1iz4gzzm5cy1j14mpx8i25jj1237994j33k7dm0gnqgr2w";
+        sha256 = "18c0473jacd877nkky1x21dkmp4992d8qra6wj07sq0yz5gdc9c4";
       };
       urlPrefix = mirror://debian;
       packages = commonDebianPackages;
     };
 
     debian60x86_64 = {
-      name = "debian-6.0.4-squeeze-amd64";
-      fullName = "Debian 6.0.4 Squeeze (amd64)";
+      name = "debian-6.0.6-squeeze-amd64";
+      fullName = "Debian 6.0.6 Squeeze (amd64)";
       packagesList = fetchurl {
         url = mirror://debian/dists/squeeze/main/binary-amd64/Packages.bz2;
-        sha256 = "1gb3im7kl8dwd7z82xj4wb5g58r86fjj8cirvq0ssrvcm9bqaiz7";
+        sha256 = "1n1h3pz6axcaraxq8gfzq0jywlpdrqand1dnd4q79dy6cl788bi2";
       };
       urlPrefix = mirror://debian;
       packages = commonDebianPackages;
diff --git a/pkgs/data/misc/themes/green.nix b/pkgs/data/misc/themes/green.nix
deleted file mode 100644
index 945bd3c9a3c..00000000000
--- a/pkgs/data/misc/themes/green.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{fetchurl, ...} : 
-fetchurl {
-  url = http://www.kde-look.org/CONTENT/content-files/58501-green.tar.gz;
-  sha256 = "0sdykpziij1f3w4braq8r8nqg4lnsd7i7gi1k5d7c31m2q3b9a7r";
-}
diff --git a/pkgs/data/misc/themes/theme-gnu.nix b/pkgs/data/misc/themes/theme-gnu.nix
deleted file mode 100644
index 32d1a9256ac..00000000000
--- a/pkgs/data/misc/themes/theme-gnu.nix
+++ /dev/null
@@ -1,5 +0,0 @@
-{fetchurl, ...}:
-fetchurl {
-  url = http://dev.gentoo.org/~spock/repos/bootsplash/Theme-GNU.tar.bz2;
-  sha256 = "1pj91nxvwjphc8r6idl4ih3ldyk34j1w9c4p8gzmwnwg3w34xha0";
-}
diff --git a/pkgs/desktops/kde-4.7/kdebindings/perlqt.nix b/pkgs/desktops/kde-4.7/kdebindings/perlqt.nix
deleted file mode 100644
index 13c145f3275..00000000000
--- a/pkgs/desktops/kde-4.7/kdebindings/perlqt.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ kde, cmake, smokeqt, perl }:
-
-kde {
-  buildInputs = [ smokeqt perl ];
-  buildNativeInputs = [ cmake ];
-
-  meta = {
-    description = "Perl bindings for Qt library";
-  };
-}
diff --git a/pkgs/desktops/kde-4.7/kdebindings/smokekde.nix b/pkgs/desktops/kde-4.7/kdebindings/smokekde.nix
deleted file mode 100644
index c49a77a48ed..00000000000
--- a/pkgs/desktops/kde-4.7/kdebindings/smokekde.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ kde, kdelibs, smokeqt }:
-
-kde {
-  propagatedBuildInputs = [ kdelibs smokeqt ];
-
-  meta = {
-    description = "C++ parser used to generate language bindings for Qt/KDE";
-    license = "GPLv2";
-  };
-}
diff --git a/pkgs/desktops/kde-4.7/kdenetwork/log-feature.diff b/pkgs/desktops/kde-4.7/kdenetwork/log-feature.diff
deleted file mode 100644
index 6770dd399e3..00000000000
--- a/pkgs/desktops/kde-4.7/kdenetwork/log-feature.diff
+++ /dev/null
@@ -1,60 +0,0 @@
---- a/kget/CMakeLists.txt	2010-08-16 19:08:36.000000000 +0400
-+++ b/kget/CMakeLists.txt	2010-08-16 22:04:24.000000000 +0400
-@@ -53,21 +53,20 @@
- add_subdirectory(desktop)
- add_subdirectory(plasma)
- 
--# find kworkspace library to allow the shutdown after downloads completed option
--find_library(KDE4_KWORKSPACE_LIBRARY NAMES kworkspace PATHS ${KDE4_LIB_INSTALL_DIR} NO_DEFAULT_PATH )
--if(KDE4_KWORKSPACE_LIBRARY)
--    set(KDE4_KWORKSPACE_LIBS ${kworkspace_LIB_DEPENDS} ${KDE4_KWORKSPACE_LIBRARY})
-+macro_optional_find_package(KDE4Workspace)
-+macro_log_feature(KDE4WORKSPACE_FOUND "KDE4Workspace" "KDE4 workspace libraries, part of kdebase-workspace" "http://www.kde.org" FALSE "" "Allows 'shutdown after downloads completed' in kget")
-+if(KDE4WORKSPACE_FOUND)
-     add_definitions(-DHAVE_KWORKSPACE)
--    set(KWORKSPACE_FOUND true)
--endif(KDE4_KWORKSPACE_LIBRARY)
-+	include_directories(${KDE4WORKSPACE_INCLUDE_DIR})
-+endif(KDE4WORKSPACE_FOUND)
- 
- # find libkonq to allow actions and open with options in the context menu of a transfer
--find_library(KDE4_KONQUEROR_LIBRARY NAMES konq PATHS ${KDE4_LIB_INSTALL_DIR} NO_DEFAULT_PATH )
--if(KDE4_KONQUEROR_LIBRARY)
--    set(KDE4_KONQUEROR_LIBS ${konq_LIB_DEPENDS} ${KDE4_KONQUEROR_LIBRARY})
-+macro_optional_find_package(LibKonq)
-+macro_log_feature(LIBKONQ_FOUND "libkonq" "KDE4 Konqueror library" "http://www.kde.org" FALSE "" "Needed to build actions and open with options in the context menu of a transfer")
-+if(LIBKONQ_FOUND)
-     add_definitions(-DHAVE_KONQUEROR)
--    set(KONQUEROR_FOUND true)
--endif(KDE4_KONQUEROR_LIBRARY)
-+	include_directories(${LIBKONQ_INCLUDE_DIR})
-+endif(LIBKONQ_FOUND)
- 
- 
- include_directories(
-@@ -142,9 +141,9 @@
- 
- target_link_libraries(kgetcore ${KDE4_KIO_LIBS})
- 
--if (KWORKSPACE_FOUND)
--    target_link_libraries(kgetcore ${KDE4_KWORKSPACE_LIBS})
--endif (KWORKSPACE_FOUND)
-+if (KDE4WORKSPACE_FOUND)
-+    target_link_libraries(kgetcore ${KDE4WORKSPACE_KWORKSPACE_LIBS})
-+endif (KDE4WORKSPACE_FOUND)
- 
- if (HAVE_NEPOMUK)
-   target_link_libraries(kgetcore ${SOPRANO_LIBRARIES} ${NEPOMUK_LIBRARIES})
-@@ -294,9 +293,9 @@
-   target_link_libraries(kget ${SOPRANO_LIBRARIES} ${NEPOMUK_LIBRARIES})
- endif (HAVE_NEPOMUK)
- 
--if (KONQUEROR_FOUND)
--  target_link_libraries(kget ${KDE4_KONQUEROR_LIBS})
--endif (KONQUEROR_FOUND)
-+if (LIBKONQ_FOUND)
-+  target_link_libraries(kget ${LIBKONQ_LIBRARY})
-+endif (LIBKONQ_FOUND)
- 
- if (QGPGME_FOUND)
-   target_link_libraries(kget ${QGPGME_LIBRARIES})
diff --git a/pkgs/desktops/kde-4.7/kdesdk/optional-docs.diff b/pkgs/desktops/kde-4.7/kdesdk/optional-docs.diff
deleted file mode 100644
index f67e1f4cdd8..00000000000
--- a/pkgs/desktops/kde-4.7/kdesdk/optional-docs.diff
+++ /dev/null
@@ -1,39 +0,0 @@
-diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
-index 63cdef8..0c5b50a 100644
---- a/doc/CMakeLists.txt
-+++ b/doc/CMakeLists.txt
-@@ -3,22 +3,30 @@ if( UNIX )
-     add_subdirectory(cervisia)
-   endif()
- endif( UNIX )
--add_subdirectory(kapptemplate)
-+if(BUILD_kapptemplate)
-+  add_subdirectory(kapptemplate)
-+endif()
- if(BUILD_kbugbuster)
-   add_subdirectory(kbugbuster)
- endif()
- if(BUILD_kcachegrind)
-   add_subdirectory(kcachegrind)
- endif()
--add_subdirectory(kmtrace)
-+if(BUILD_kmtrace)
-+  add_subdirectory(kmtrace)
-+endif()
- if(BUILD_kompare)
-   add_subdirectory(kompare)
- endif()
- if(BUILD_lokalize)
-   add_subdirectory(lokalize)
- endif()
--add_subdirectory(poxml)
--add_subdirectory(scripts)
-+if(BUILD_poxml)
-+  add_subdirectory(poxml)
-+endif()
-+if(BUILD_scripts)
-+  add_subdirectory(scripts)
-+endif()
- 
- if(LIBXSLT_FOUND AND LIBXML2_FOUND)
-   if(BUILD_umbrello)
diff --git a/pkgs/desktops/kde-4.7/kipi-plugins.nix b/pkgs/desktops/kde-4.7/kipi-plugins.nix
deleted file mode 100644
index ea237a5d718..00000000000
--- a/pkgs/desktops/kde-4.7/kipi-plugins.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv, fetchurl, cmake, kdelibs, qt4, automoc4, phonon, libkexiv2
-, libkdcraw, libkipi, gettext, libxml2, libxslt, qjson, qca2
-, kdepimlibs }:
-
-stdenv.mkDerivation rec {
-  name = "kipi-plugins-1.9.0";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/kipi/${name}.tar.bz2";
-    sha256 = "0k4k9v1rj7129n0s0i5pvv4rabx0prxqs6sca642fj95cxc6c96m";
-  };
-
-  buildInputs =
-    # Some dependencies are missing because they are very big (OpenCV,
-    # GTK).
-    [ cmake kdelibs qt4 automoc4 phonon libkexiv2 libkdcraw libkipi
-      gettext libxml2 libxslt qjson qca2 kdepimlibs
-    ];
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "Photo Management Program";
-    license = "GPL";
-    homepage = http://www.kipi-plugins.org;
-    inherit (kdelibs.meta) platforms;
-    maintainers = with stdenv.lib.maintainers; [ viric urkud ];
-  };
-}
diff --git a/pkgs/development/androidenv/addon.xml b/pkgs/development/androidenv/addon.xml
index 7b0f69128a6..fb5d324d778 100644
--- a/pkgs/development/androidenv/addon.xml
+++ b/pkgs/development/androidenv/addon.xml
@@ -16,69 +16,85 @@
 -->
 <sdk:sdk-addon xmlns:sdk="http://schemas.android.com/sdk/android/addon/5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
-    <sdk:license id="android-sdk-license" type="text">This is the Android Software Development Kit License Agreement.
+    <sdk:license id="android-sdk-license" type="text">Terms and Conditions
+
+This is the Android Software Development Kit License Agreement.
+
 
 1. Introduction
 
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
-1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.1 The Android Software Development Kit (referred to in this License Agreement as the &quot;SDK&quot; and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 &quot;Android&quot; means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 &quot;Google&quot; means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
 
 2. Accepting this License Agreement
 
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
 
-2.2 You can accept this License Agreement by:
+2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
 
-(A) clicking to accept or agree to this License Agreement, where this option is made available to you; or
+2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
 
-(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of the Licensing Agreement from that point onwards.
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
 
-2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the Licensing Agreement or use the SDK on behalf of your employer or other entity.
 
 3. SDK License from Google
 
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
 
-3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK. Except to the extent required by applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. &quot;Intellectual Property Rights&quot; means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
-3.5 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
 
-3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
-3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
 4. Use of the SDK by You
 
+
 4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
 
 4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, your must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
 
 4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
 
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through the Android platform and/or applications for the Android platform, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
 
 4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
 
+
 5. Your Developer Credentials
 
+
 5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
 
+
 6. Privacy and Information
 
+
 6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
 
 6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
 
-7. Third Party Applications for the Android Platform
+
+7. Third Party Applications
+
 
 7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
 
@@ -86,55 +102,65 @@
 
 7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
 
+
 8. Using Android APIs
 
+
 8.1 Google Data APIs
 
 8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
 
 8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
 
+
 9. Terminating this License Agreement
 
+
 9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
 
 9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
 
 9.3 Google may at any time, terminate this License Agreement with you if:
-
 (A) you have breached any provision of this License Agreement; or
-
 (B) Google is required to do so by law; or
-
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-
-(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
 9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
 
+
 10. DISCLAIMER OF WARRANTIES
 
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED &quot;AS IS&quot; AND &quot;AS AVAILABLE&quot; WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
 
 10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
 
 10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 
+
 11. LIMITATION OF LIABILITY
 
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
 
 12. Indemnification
 
+
 12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
 
+
 13. Changes to the License Agreement
 
+
 13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
 
+
 14. General Legal Terms
 
-14.1 This License Agreement constitute the whole legal agreement between you and Google and govern your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replace any prior agreements between you and Google in relation to the SDK.
+
+14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
 
 14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
 
@@ -148,7 +174,7 @@
 
 14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
-April 10, 2009
+November 13, 2012
     </sdk:license>
 
     <sdk:license id="android-googletv-license" type="text">Terms and Conditions
@@ -157,9 +183,9 @@ This is the Google TV Add-on for the Android Software Development Kit License Ag
 
 1. Introduction
 
-1.1 The Google TV Add-on for the Android Software Development Kit (referred to in this License Agreement as the "Google TV Add-on" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the Google TV Add-on.
+1.1 The Google TV Add-on for the Android Software Development Kit (referred to in this License Agreement as the &quot;Google TV Add-on&quot; and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the Google TV Add-on.
 
-1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.2 &quot;Google&quot; means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 2. Accepting this License Agreement
 
@@ -179,7 +205,7 @@ This is the Google TV Add-on for the Android Software Development Kit License Ag
 
 3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non- assignable and non-exclusive license to use the Google TV Add-on solely to develop applications to run on the Google TV platform.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the Google TV Add-on, including any Intellectual Property Rights that subsist in the Google TV Add-on. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the Google TV Add-on, including any Intellectual Property Rights that subsist in the Google TV Add-on. &quot;Intellectual Property Rights&quot; means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
 3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Google TV Add-on or any part of the Google TV Add-on. Except to the extent required by applicable third party licenses, you may not load any part of the Google TV Add-on onto a mobile handset, television, or any other hardware device except a personal computer, combine any part of the Google TV Add-on with other software, or distribute any software or device incorporating a part of the Google TV Add-on.
 
@@ -257,7 +283,7 @@ This is the Google TV Add-on for the Android Software Development Kit License Ag
 
 10. DISCLAIMER OF WARRANTIES
 
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE GOOGLE TV ADD-ON IS AT YOUR SOLE RISK AND THAT THE GOOGLE TV ADD-ON IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE GOOGLE TV ADD-ON IS AT YOUR SOLE RISK AND THAT THE GOOGLE TV ADD-ON IS PROVIDED &quot;AS IS&quot; AND &quot;AS AVAILABLE&quot; WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
 
 10.2 YOUR USE OF THE GOOGLE TV ADD-ON AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE GOOGLE TV ADD-ON IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
 
@@ -704,11 +730,41 @@ August 15, 2011
         <sdk:libs/>
     </sdk:add-on>
 
+    <sdk:add-on>
+        <!-- Generated at Mon Nov 12 17:15:51 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:vendor-id>google</sdk:vendor-id>
+        <sdk:vendor-display>Google Inc.</sdk:vendor-display>
+        <sdk:name-id>google_apis</sdk:name-id>
+        <sdk:name-display>Google APIs</sdk:name-display>
+        <sdk:description>Android + Google APIs</sdk:description>
+        <sdk:api-level>17</sdk:api-level>
+        <sdk:revision>1</sdk:revision>
+        <sdk:libs>
+            <sdk:lib>
+                <sdk:name>com.google.android.maps</sdk:name>
+            </sdk:lib>
+            <sdk:lib>
+                <sdk:name>com.android.future.usb.accessory</sdk:name>
+            </sdk:lib>
+            <sdk:lib>
+                <sdk:name>com.google.android.media.effects</sdk:name>
+            </sdk:lib>
+        </sdk:libs>
+        <sdk:archives>
+            <sdk:archive arch="any" os="any">
+                <sdk:size>132568033</sdk:size>
+                <sdk:checksum type="sha1">62cb086f11e15713878c8834d58ef1a2454c19a4</sdk:checksum>
+                <sdk:url>google_apis-17_r01.zip</sdk:url>
+            </sdk:archive>
+        </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
+    </sdk:add-on>
+
     <!-- EXTRAS VENDOR=ANDROID ........................ -->
 
     <sdk:extra>
-        <!-- Generated at Thu Aug  9 13:20:52 2012 from git_jb-dev @ 416700 -->
-        <sdk:revision>10</sdk:revision>
+        <!-- Generated at Mon Nov 12 17:16:25 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:revision>11</sdk:revision>
         <sdk:vendor-display>Android</sdk:vendor-display>
         <sdk:vendor-id>android</sdk:vendor-id>
         <sdk:name-display>Android Support Library</sdk:name-display>
@@ -716,11 +772,12 @@ August 15, 2011
         <sdk:old-paths>compatibility</sdk:old-paths>
         <sdk:archives>
             <sdk:archive arch="any" os="any">
-                <sdk:size>1161015</sdk:size>
-                <sdk:checksum type="sha1">7c62e542d46ac3bdb89e1b90503d6afae557cf7d</sdk:checksum>
-                <sdk:url>support_r10.zip</sdk:url>
+                <sdk:size>1264808</sdk:size>
+                <sdk:checksum type="sha1">d30d182d8e4c86bb4464c03a83ccffce7bc84ecd</sdk:checksum>
+                <sdk:url>support_r11.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:extra>
 
     <!-- EXTRAS VENDOR=GOOGLE ....................... -->
@@ -768,15 +825,15 @@ August 15, 2011
         <sdk:vendor-display>Google Inc.</sdk:vendor-display>
         <sdk:name-display>Google Play services</sdk:name-display>
         <sdk:path>google_play_services</sdk:path>
-        <sdk:revision>1</sdk:revision>
+        <sdk:revision>4</sdk:revision>
         <sdk:description>Google Play Services client library and sample code</sdk:description>
         <sdk:desc-url>https://developers.google.com/android/google-play-services/index</sdk:desc-url>
         <sdk:uses-license ref="android-sdk-license"/>
         <sdk:archives>
             <sdk:archive os="any">
-                <sdk:size>363692</sdk:size>
-                <sdk:checksum type="sha1">b1808a7d5f91a3ed42839b950fd254c60e9328f1</sdk:checksum>
-                <sdk:url>google_play_services_1013.zip</sdk:url>
+                <sdk:size>3732458</sdk:size>
+                <sdk:checksum type="sha1">bbb3d11225fcf60a0bae75afa2c4737010468bf6</sdk:checksum>
+                <sdk:url>google_play_services_2012110_r04.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
     </sdk:extra>
@@ -806,14 +863,14 @@ August 15, 2011
         <sdk:name-display>Google Play Billing Library</sdk:name-display>
         <sdk:path>play_billing</sdk:path>
         <sdk:old-paths>market_billing</sdk:old-paths>
-        <sdk:revision>2</sdk:revision>
-        <sdk:description>Google Play Billing sample code</sdk:description>
-        <sdk:desc-url>http://developer.android.com/guide/market/billing/index.html</sdk:desc-url>
+        <sdk:revision>3</sdk:revision>
+        <sdk:description>Google Play Billing files and sample code</sdk:description>
+        <sdk:desc-url>http://developer.android.com/google/play/billing/index.html</sdk:desc-url>
         <sdk:archives>
             <sdk:archive os="any">
-                <sdk:size>55191</sdk:size>
-                <sdk:checksum type="sha1">3c84c05c60a9cabb578cebce0515860be7ad23d2</sdk:checksum>
-                <sdk:url>market_billing_r02.zip</sdk:url>
+                <sdk:size>435718</sdk:size>
+                <sdk:checksum type="sha1">a133d454c992ef2a18e62fa810e8185f1be4b054</sdk:checksum>
+                <sdk:url>play_billing_r03.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
         <sdk:uses-license ref="android-sdk-license"/>
@@ -890,4 +947,4 @@ August 15, 2011
         </sdk:archives>
         <sdk:uses-license ref="android-sdk-license"/>
     </sdk:extra>
-</sdk:sdk-addon>
\ No newline at end of file
+</sdk:sdk-addon>
diff --git a/pkgs/development/androidenv/addons.nix b/pkgs/development/androidenv/addons.nix
index b995b4301e9..f26db5c2cb7 100644
--- a/pkgs/development/androidenv/addons.nix
+++ b/pkgs/development/androidenv/addons.nix
@@ -182,5 +182,17 @@ in
       };
     };
     
+  google_apis_17 = buildGoogleApis {
+    name = "google_apis-17";
+      src = fetchurl {
+        url = https://dl-ssl.google.com/android/repository/google_apis-17_r01.zip;
+        sha1 = "62cb086f11e15713878c8834d58ef1a2454c19a4";
+      };
+      meta = {
+        description = "Android + Google APIs";
+        
+      };
+    };
+    
 }
-  
+  
\ No newline at end of file
diff --git a/pkgs/development/androidenv/androidsdk.nix b/pkgs/development/androidenv/androidsdk.nix
index b175266ebf7..e8e1f919fe4 100644
--- a/pkgs/development/androidenv/androidsdk.nix
+++ b/pkgs/development/androidenv/androidsdk.nix
@@ -2,22 +2,22 @@
 , platformTools, support, platforms, sysimages, addons
 , zlib_32bit
 , libX11_32bit, libxcb_32bit, libXau_32bit, libXdmcp_32bit, libXext_32bit
-, libX11, libXext, libXrender
+, libX11, libXext, libXrender, libxcb, libXau, libXdmcp
 , freetype, fontconfig, gtk, atk
 }:
 {platformVersions, useGoogleAPIs}:
 
 stdenv.mkDerivation {
-  name = "android-sdk-20.0.3";
+  name = "android-sdk-21";
   
   src = if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux")
     then fetchurl {
-      url = http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz;
-      sha256 = "0xfb41xsjaf7n6b9gsrxm24jwg2fi1hzn73y69rlqm55bw1vxhc1";
+      url = http://dl.google.com/android/android-sdk_r21-linux.tgz;
+      md5 = "7f8d73b629f808cdcfc9f9900bbd7580";
     }
     else if stdenv.system == "x86_64-darwin" then fetchurl {
-      url = http://dl.google.com/android/android-sdk_r20.0.3-macosx.zip;
-      sha256 = "0eecaa04950d5c540f36ab4183a4cbaef3ae6a7434467bfc32febaeb796a8ff2";
+      url = http://dl.google.com/android/android-sdk_r21-macosx.zip;
+      md5 = "67e46adca90dd18d7291443f6c15d6af";
     }
     else throw "platform not ${stdenv.system} supported!";
   
@@ -32,12 +32,22 @@ stdenv.mkDerivation {
     ''
       # There are a number of native binaries. We must patch them to let them find the interpreter and libstdc++
     
-      for i in dmtracedump emulator emulator-arm emulator-x86 hprof-conv mksdcard sqlite3
+      for i in dmtracedump emulator emulator-arm emulator-mips emulator-x86 hprof-conv mksdcard sqlite3
       do
           patchelf --set-interpreter ${stdenv_32bit.gcc.libc}/lib/ld-linux.so.2 $i
           patchelf --set-rpath ${stdenv_32bit.gcc.gcc}/lib $i
       done
     
+      ${stdenv.lib.optionalString (stdenv.system == "x86_64-linux") ''
+        # We must also patch the 64-bit emulator instances, if needed
+        
+        for i in emulator64-arm emulator64-mips emulator64-x86
+        do
+            patchelf --set-interpreter ${stdenv.gcc.libc}/lib/ld-linux-x86-64.so.2 $i
+            patchelf --set-rpath ${stdenv.gcc.gcc}/lib64 $i
+        done
+      ''}
+      
       # These tools also need zlib in addition to libstdc++
     
       for i in etc1tool zipalign
@@ -48,11 +58,19 @@ stdenv.mkDerivation {
     
       # The emulators need additional libraries, which are not in the RPATH => let's wrap them
     
-      for i in emulator emulator-arm emulator-x86
+      for i in emulator emulator-arm emulator-mips emulator-x86
       do
           wrapProgram `pwd`/$i \
             --prefix LD_LIBRARY_PATH : `pwd`/lib:${libX11_32bit}/lib:${libxcb_32bit}/lib:${libXau_32bit}/lib:${libXdmcp_32bit}/lib:${libXext_32bit}/lib
       done
+      
+      ${stdenv.lib.optionalString (stdenv.system == "x86_64-linux") ''
+        for i in emulator64-arm emulator64-mips emulator64-x86
+        do
+            wrapProgram `pwd`/$i \
+            --prefix LD_LIBRARY_PATH : `pwd`/lib:${libX11}/lib:${libxcb}/lib:${libXau}/lib:${libXdmcp}/lib:${libXext}/lib
+        done
+      ''}
     ''}
 
     patchShebangs .
diff --git a/pkgs/development/androidenv/default.nix b/pkgs/development/androidenv/default.nix
index d2769799df1..a76deb98b6e 100644
--- a/pkgs/development/androidenv/default.nix
+++ b/pkgs/development/androidenv/default.nix
@@ -32,7 +32,7 @@ rec {
   androidsdk = import ./androidsdk.nix {
     inherit (pkgs) stdenv fetchurl unzip makeWrapper;
     inherit (pkgs) freetype fontconfig gtk atk;
-    inherit (pkgs.xorg) libX11 libXext libXrender;
+    inherit (pkgs.xorg) libX11 libXext libXrender libxcb libXau libXdmcp;
     
     inherit platformTools support platforms sysimages addons;
     
diff --git a/pkgs/development/androidenv/platform-tools.nix b/pkgs/development/androidenv/platform-tools.nix
index bc4ceb4e39d..55499608290 100644
--- a/pkgs/development/androidenv/platform-tools.nix
+++ b/pkgs/development/androidenv/platform-tools.nix
@@ -1,15 +1,15 @@
 {stdenv, stdenv_32bit, fetchurl, unzip, zlib, ncurses}:
 
 stdenv.mkDerivation {
-  name = "android-platform-tools-r15_rc7";
+  name = "android-platform-tools-r16";
   src = if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux")
     then fetchurl {
-      url = https://dl-ssl.google.com/android/repository/platform-tools_r15_rc7-linux.zip;
-      sha1 = "444e12ba413341282cd810d2e4bdb49975c95758";
+      url = https://dl-ssl.google.com/android/repository/platform-tools_r16-linux.zip;
+      sha1 = "84d563ae5e324f223f335f11bf511bf6207c05fb";
     }
     else if stdenv.system == "x86_64-darwin" then fetchurl {
-      url = https://dl-ssl.google.com/android/repository/platform-tools_r15_rc7-macosx.zip;
-      sha1 = "974eac4afbe404278fcda8f8cd39b55c82be012d";
+      url = https://dl-ssl.google.com/android/repository/platform-tools_r16-macosx.zip;
+      sha1 = "fbb0f8d2786a83b8c3eb6df402e706e136db8fed";
     }
     else throw "System ${stdenv.system} not supported!";
   
diff --git a/pkgs/development/androidenv/platforms-linux.nix b/pkgs/development/androidenv/platforms-linux.nix
index c2cff1b62a2..f544fcc08be 100644
--- a/pkgs/development/androidenv/platforms-linux.nix
+++ b/pkgs/development/androidenv/platforms-linux.nix
@@ -194,5 +194,17 @@ in
     };
   };
     
+  platform_17 = buildPlatform {
+    name = "android-platform-4.2";
+    src = fetchurl {
+      url = https://dl-ssl.google.com/android/repository/android-17_r01.zip;
+      sha1 = "c2e7c8c8db40e06b804ddb1725ac2c3555b55025";
+    };
+    meta = {
+      description = "Android SDK Platform 4.2";
+      
+    };
+  };
+    
 }
-  
+  
\ No newline at end of file
diff --git a/pkgs/development/androidenv/platforms-macosx.nix b/pkgs/development/androidenv/platforms-macosx.nix
index 355740c4200..a1434bbe56c 100644
--- a/pkgs/development/androidenv/platforms-macosx.nix
+++ b/pkgs/development/androidenv/platforms-macosx.nix
@@ -194,5 +194,17 @@ in
     };
   };
     
+  platform_17 = buildPlatform {
+    name = "android-platform-4.2";
+    src = fetchurl {
+      url = https://dl-ssl.google.com/android/repository/android-17_r01.zip;
+      sha1 = "c2e7c8c8db40e06b804ddb1725ac2c3555b55025";
+    };
+    meta = {
+      description = "Android SDK Platform 4.2";
+      
+    };
+  };
+    
 }
-  
+  
\ No newline at end of file
diff --git a/pkgs/development/androidenv/repository-7.xml b/pkgs/development/androidenv/repository-7.xml
index 695be1d90a7..7bbbaf1e362 100644
--- a/pkgs/development/androidenv/repository-7.xml
+++ b/pkgs/development/androidenv/repository-7.xml
@@ -16,69 +16,85 @@
 -->
 <sdk:sdk-repository xmlns:sdk="http://schemas.android.com/sdk/android/repository/7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
-    <sdk:license id="android-sdk-license" type="text">This is the Android Software Development Kit License Agreement.
+    <sdk:license id="android-sdk-license" type="text">Terms and Conditions
+
+This is the Android Software Development Kit License Agreement.
+
 
 1. Introduction
 
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
-1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.1 The Android Software Development Kit (referred to in this License Agreement as the &quot;SDK&quot; and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 &quot;Android&quot; means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 &quot;Google&quot; means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
 
 2. Accepting this License Agreement
 
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
 
-2.2 You can accept this License Agreement by:
+2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
 
-(A) clicking to accept or agree to this License Agreement, where this option is made available to you; or
+2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
 
-(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of the Licensing Agreement from that point onwards.
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
 
-2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the Licensing Agreement or use the SDK on behalf of your employer or other entity.
 
 3. SDK License from Google
 
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. &quot;Intellectual Property Rights&quot; means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
-3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK. Except to the extent required by applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
 
-3.4 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
 
-3.5 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
 
-3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
-3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
 4. Use of the SDK by You
 
+
 4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
 
 4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
-4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, your must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
 
 4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
 
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through the Android platform and/or applications for the Android platform, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
 
 4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
 
+
 5. Your Developer Credentials
 
+
 5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
 
+
 6. Privacy and Information
 
+
 6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
 
 6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
 
-7. Third Party Applications for the Android Platform
+
+7. Third Party Applications
+
 
 7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
 
@@ -86,55 +102,65 @@
 
 7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
 
+
 8. Using Android APIs
 
+
 8.1 Google Data APIs
 
 8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
 
 8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
 
+
 9. Terminating this License Agreement
 
+
 9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
 
 9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
 
 9.3 Google may at any time, terminate this License Agreement with you if:
-
 (A) you have breached any provision of this License Agreement; or
-
 (B) Google is required to do so by law; or
-
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-
-(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
 9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
 
+
 10. DISCLAIMER OF WARRANTIES
 
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED &quot;AS IS&quot; AND &quot;AS AVAILABLE&quot; WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
 
 10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
 
 10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 
+
 11. LIMITATION OF LIABILITY
 
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
 
 12. Indemnification
 
+
 12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
 
+
 13. Changes to the License Agreement
 
+
 13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
 
+
 14. General Legal Terms
 
-14.1 This License Agreement constitute the whole legal agreement between you and Google and govern your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replace any prior agreements between you and Google in relation to the SDK.
+
+14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
 
 14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
 
@@ -148,7 +174,7 @@
 
 14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
-April 10, 2009
+November 13, 2012
     </sdk:license>
 
     <!-- PLATFORMS ........................ -->
@@ -180,6 +206,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated manually from earlier versions -->
@@ -213,6 +240,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <sdk:platform>
@@ -245,6 +273,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Thu Oct 22 10:16:34 PDT 2009 using eclair-sdk 17704: Platform. Addon. Tools. Doc. -->
@@ -280,6 +309,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Mon Nov 23 14:08:02 PST 2009 using eclair-release 20723: Platform. Addon. -->
@@ -315,6 +345,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Thu May  6 15:57:41 PDT 2010 using eclair 35983: Platform. -->
@@ -339,6 +370,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Wed Jun 30 16:13:06 PDT 2010 using froyo-release 43546: Platform. Addon. -->
@@ -363,6 +395,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Thu Jan 20 09:40:59 PST 2011 using gingerbread-sdk-release 93351: Platform. -->
@@ -388,6 +421,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Fri Feb  4 16:41:27 PST 2011 using gingerbread-release 101070: Platform. -->
@@ -412,6 +446,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Thu Feb 17 08:41:10 PST 2011 using honeycomb 104254: Platform. -->
@@ -436,6 +471,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Wed May  4 19:39:17 PDT 2011 using honeycomb-mr1 123685: Platform.
@@ -462,6 +498,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- Generated on Fri Jul 15 11:50:12 PDT 2011 using honeycomb-mr2-release 140714: Platform. -->
@@ -486,6 +523,7 @@ April 10, 2009
         <sdk:layoutlib>
             <sdk:api>4</sdk:api>
         </sdk:layoutlib>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <sdk:platform>
@@ -505,6 +543,7 @@ April 10, 2009
                 <sdk:url>android-14_r03.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <sdk:platform>
@@ -527,6 +566,7 @@ April 10, 2009
                 <sdk:url>android-15_r03.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <sdk:platform>
@@ -549,6 +589,30 @@ April 10, 2009
                 <sdk:url>android-16_r03.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
+    </sdk:platform>
+
+    <sdk:platform>
+        <!-- Generated at Mon Nov 12 17:12:35 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:revision>1</sdk:revision>
+        <sdk:description>Android SDK Platform 4.2</sdk:description>
+        <sdk:version>4.2</sdk:version>
+        <sdk:api-level>17</sdk:api-level>
+        <sdk:min-tools-rev>
+            <sdk:major>21</sdk:major>
+        </sdk:min-tools-rev>
+        <sdk:layoutlib>
+            <sdk:api>9</sdk:api>
+            <sdk:revision>1</sdk:revision>
+        </sdk:layoutlib>
+        <sdk:archives>
+            <sdk:archive arch="any" os="any">
+                <sdk:size>47886130</sdk:size>
+                <sdk:checksum type="sha1">c2e7c8c8db40e06b804ddb1725ac2c3555b55025</sdk:checksum>
+                <sdk:url>android-17_r01.zip</sdk:url>
+            </sdk:archive>
+        </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform>
 
     <!-- SYSTEM IMAGES ........................ -->
@@ -566,6 +630,7 @@ April 10, 2009
                 <sdk:url>sysimg_armv7a-14_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:system-image>
 
     <sdk:system-image>
@@ -581,6 +646,7 @@ April 10, 2009
                 <sdk:url>sysimg_armv7a-15_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:system-image>
 
     <sdk:system-image>
@@ -596,6 +662,23 @@ April 10, 2009
                 <sdk:url>sysimg_armv7a-16_r03.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
+    </sdk:system-image>
+
+    <sdk:system-image>
+        <!-- Generated at Mon Nov 12 17:14:39 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:revision>1</sdk:revision>
+        <sdk:description>Android SDK Platform 4.2</sdk:description>
+        <sdk:api-level>17</sdk:api-level>
+        <sdk:abi>armeabi-v7a</sdk:abi>
+        <sdk:archives>
+            <sdk:archive arch="any" os="any">
+                <sdk:size>116831648</sdk:size>
+                <sdk:checksum type="sha1">45b9344473e0a6d063c2b1fe58d8cd47d307905e</sdk:checksum>
+                <sdk:url>sysimg_armv7a-17_r01.zip</sdk:url>
+            </sdk:archive>
+        </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:system-image>
 
     <!-- SAMPLES ........................ -->
@@ -615,6 +698,7 @@ April 10, 2009
                 <sdk:url>samples-2.1_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Tue May 11 19:15:20 PDT 2010 using froyo 36658: Samples. -->
@@ -632,6 +716,7 @@ April 10, 2009
                 <sdk:url>samples-2.2_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Tue Nov 30 19:39:34 PST 2010 using gingerbread 79962: Samples. -->
@@ -650,6 +735,7 @@ April 10, 2009
                 <sdk:url>samples-2.3_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Tue Feb  8 17:37:15 PST 2011 using gingerbread 102121: Samples. -->
@@ -667,6 +753,7 @@ April 10, 2009
                 <sdk:url>samples-2.3.3_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Thu Feb 17 08:45:49 PST 2011 using honeycomb 104254: Samples. -->
@@ -684,6 +771,7 @@ April 10, 2009
                 <sdk:url>samples-3.0_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Wed May  4 19:49:56 PDT 2011 using honeycomb-mr1 123685: Samples. -->
@@ -701,6 +789,7 @@ April 10, 2009
                 <sdk:url>samples-3.1_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <!-- Generated on Fri Jul 15 11:52:24 PDT 2011 using honeycomb-mr2 142871: Samples. -->
@@ -718,6 +807,7 @@ April 10, 2009
                 <sdk:url>samples-3.2_r01-linux.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <sdk:sample>
@@ -731,6 +821,7 @@ April 10, 2009
                 <sdk:url>samples-14_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <sdk:sample>
@@ -744,6 +835,7 @@ April 10, 2009
                 <sdk:url>samples-15_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
     <sdk:sample>
@@ -757,132 +849,125 @@ April 10, 2009
                 <sdk:url>samples-16_r01.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:sample>
 
-    <!-- PLATFORM-TOOLS ........................ -->
-
-    <sdk:platform-tool>
-        <!-- Generated at Thu Jul 19 18:38:34 2012 from git_jb-dev @ 407773 -->
-        <sdk:revision>
-            <sdk:major>14</sdk:major>
-        </sdk:revision>
+    <sdk:sample>
+        <!-- Generated at Mon Nov 12 17:18:09 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:revision>1</sdk:revision>
+        <sdk:api-level>17</sdk:api-level>
         <sdk:archives>
-            <sdk:archive arch="any" os="windows">
-                <sdk:size>11159472</sdk:size>
-                <sdk:checksum type="sha1">6028258d8f2fba14d8b40c3cf507afa0289aaa13</sdk:checksum>
-                <sdk:url>platform-tools_r14-windows.zip</sdk:url>
-            </sdk:archive>
-            <sdk:archive arch="any" os="linux">
-                <sdk:size>10985068</sdk:size>
-                <sdk:checksum type="sha1">6e2bc329c9485eb383172cbc2cde8b0c0cd1843f</sdk:checksum>
-                <sdk:url>platform-tools_r14-linux.zip</sdk:url>
-            </sdk:archive>
-            <sdk:archive arch="any" os="macosx">
-                <sdk:size>11342461</sdk:size>
-                <sdk:checksum type="sha1">4a015090c6a209fc33972acdbc65745e0b3c08b9</sdk:checksum>
-                <sdk:url>platform-tools_r14-macosx.zip</sdk:url>
+            <sdk:archive arch="any" os="any">
+                <sdk:size>14840030</sdk:size>
+                <sdk:checksum type="sha1">12d58cb26503610fc05bd7618c434cc6f983bc41</sdk:checksum>
+                <sdk:url>samples-17_r01.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
-    </sdk:platform-tool>
+        <sdk:uses-license ref="android-sdk-license"/>
+    </sdk:sample>
+
+    <!-- PLATFORM-TOOLS ........................ -->
 
     <sdk:platform-tool>
-        <!-- Generated at Wed Oct 17 15:42:13 2012 from git_jb-dev @ 505673 -->
+        <!-- Generated at Mon Nov 12 17:13:48 2012 from git_jb-mr1-dev @ 527242 -->
         <sdk:revision>
-            <sdk:major>15</sdk:major>
-            <sdk:preview>9</sdk:preview>
+            <sdk:major>16</sdk:major>
         </sdk:revision>
         <sdk:archives>
             <sdk:archive arch="any" os="windows">
-                <sdk:size>11170483</sdk:size>
-                <sdk:checksum type="sha1">853afdf5f63aaac61dcfd016a7acb930b6dac377</sdk:checksum>
-                <sdk:url>platform-tools_r15_rc9-windows.zip</sdk:url>
+                <sdk:size>11938435</sdk:size>
+                <sdk:checksum type="sha1">0d6245b685c7d303cf4a054a3d373c4427b7ad01</sdk:checksum>
+                <sdk:url>platform-tools_r16-windows.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="linux">
-                <sdk:size>10996592</sdk:size>
-                <sdk:checksum type="sha1">c1aa2bc0d6f7dac7e292151ee77752bbfb10d1c5</sdk:checksum>
-                <sdk:url>platform-tools_r15_rc9-linux.zip</sdk:url>
+                <sdk:size>12676089</sdk:size>
+                <sdk:checksum type="sha1">84d563ae5e324f223f335f11bf511bf6207c05fb</sdk:checksum>
+                <sdk:url>platform-tools_r16-linux.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="macosx">
-                <sdk:size>11345162</sdk:size>
-                <sdk:checksum type="sha1">22ac626ec3526b606d358193a16df10179f1d4f5</sdk:checksum>
-                <sdk:url>platform-tools_r15_rc9-macosx.zip</sdk:url>
+                <sdk:size>13147351</sdk:size>
+                <sdk:checksum type="sha1">fbb0f8d2786a83b8c3eb6df402e706e136db8fed</sdk:checksum>
+                <sdk:url>platform-tools_r16-macosx.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:platform-tool>
 
     <!-- TOOLS ........................ -->
 
     <sdk:tool>
-        <!-- Generated at Thu Aug  9 13:16:38 2012 from git_tools_r20 @ 427395 -->
+        <!-- Generated at Mon Nov 12 17:07:47 2012 from git_tools_r21 @ 519525 -->
         <sdk:revision>
-            <sdk:major>20</sdk:major>
-            <sdk:minor>0</sdk:minor>
-            <sdk:micro>3</sdk:micro>
+            <sdk:major>21</sdk:major>
         </sdk:revision>
         <sdk:min-platform-tools-rev>
-            <sdk:major>12</sdk:major>
+            <sdk:major>16</sdk:major>
         </sdk:min-platform-tools-rev>
         <sdk:archives>
             <sdk:archive arch="any" os="windows">
-                <sdk:size>90272048</sdk:size>
-                <sdk:checksum type="sha1">54fb94168e631e211910f88aa40c532205730dd4</sdk:checksum>
-                <sdk:url>tools_r20.0.3-windows.zip</sdk:url>
+                <sdk:size>98982670</sdk:size>
+                <sdk:checksum type="sha1">57bbfadcedbef44fc322e5e037666393668cf3fe</sdk:checksum>
+                <sdk:url>tools_r21-windows.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="linux">
-                <sdk:size>82723559</sdk:size>
-                <sdk:checksum type="sha1">09bc633b406ae81981e3a0db19426acbb01ef219</sdk:checksum>
-                <sdk:url>tools_r20.0.3-linux.zip</sdk:url>
+                <sdk:size>91495104</sdk:size>
+                <sdk:checksum type="sha1">013b9c04407a9d73b8bf3c574327fbe870acd264</sdk:checksum>
+                <sdk:url>tools_r21-linux.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="macosx">
-                <sdk:size>58197071</sdk:size>
-                <sdk:checksum type="sha1">09cee5ff3226277a6f0c07dcd29cba4ffc2e1da4</sdk:checksum>
-                <sdk:url>tools_r20.0.3-macosx.zip</sdk:url>
+                <sdk:size>65767130</sdk:size>
+                <sdk:checksum type="sha1">fcfa3a6932f2ed0d970a0ca959bb2b4972f7d46d</sdk:checksum>
+                <sdk:url>tools_r21-macosx.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:tool>
 
     <sdk:tool>
-        <!-- Generated at Wed Oct 17 15:40:42 2012 from git_mirror-aosp-master @ 506320 -->
+        <!-- Generated at Fri Nov 30 13:45:55 2012 from git_tools_r21 @ 539280 -->
         <sdk:revision>
             <sdk:major>21</sdk:major>
-            <sdk:preview>9</sdk:preview>
+            <sdk:minor>0</sdk:minor>
+            <sdk:micro>1</sdk:micro>
+            <sdk:preview>1</sdk:preview>
         </sdk:revision>
         <sdk:min-platform-tools-rev>
-            <sdk:major>15</sdk:major>
-            <sdk:preview>9</sdk:preview>
+            <sdk:major>16</sdk:major>
         </sdk:min-platform-tools-rev>
         <sdk:archives>
             <sdk:archive arch="any" os="windows">
-                <sdk:size>98865433</sdk:size>
-                <sdk:checksum type="sha1">a1379cef10f33e74061f6935fd74922b0351addb</sdk:checksum>
-                <sdk:url>tools_r21_rc9-windows.zip</sdk:url>
+                <sdk:size>98998088</sdk:size>
+                <sdk:checksum type="sha1">1503aaf2c91cb07c0240a2db3af0de027941a4f6</sdk:checksum>
+                <sdk:url>tools_r21.0.1_rc1-windows.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="linux">
-                <sdk:size>91377922</sdk:size>
-                <sdk:checksum type="sha1">dde958cb26276b632a02ca6d530506c09ce4e086</sdk:checksum>
-                <sdk:url>tools_r21_rc9-linux.zip</sdk:url>
+                <sdk:size>91510079</sdk:size>
+                <sdk:checksum type="sha1">183670a7f9878d8d3693d5fcf32e1357b69f0fed</sdk:checksum>
+                <sdk:url>tools_r21.0.1_rc1-linux.zip</sdk:url>
             </sdk:archive>
             <sdk:archive arch="any" os="macosx">
-                <sdk:size>65655657</sdk:size>
-                <sdk:checksum type="sha1">43803f6179707ca6bd4a37e129bcf022ebda0043</sdk:checksum>
-                <sdk:url>tools_r21_rc9-macosx.zip</sdk:url>
+                <sdk:size>65777178</sdk:size>
+                <sdk:checksum type="sha1">109d4f287904875f067e021be3fd1f549e6afb67</sdk:checksum>
+                <sdk:url>tools_r21.0.1_rc1-macosx.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:tool>
 
     <!-- DOCS ........................ -->
 
     <sdk:doc>
-        <!-- Generated at Tue Oct  9 14:08:23 2012 from git_jb-dev @ 495790 -->
-        <sdk:revision>3</sdk:revision>
-        <sdk:api-level>16</sdk:api-level>
+        <!-- Generated at Mon Nov 12 17:17:53 2012 from git_jb-mr1-dev @ 528390 -->
+        <sdk:revision>1</sdk:revision>
+        <sdk:api-level>17</sdk:api-level>
         <sdk:archives>
             <sdk:archive arch="any" os="any">
-                <sdk:size>164244602</sdk:size>
-                <sdk:checksum type="sha1">3168152f52f5edc0c85523c875c96e7431ab4545</sdk:checksum>
-                <sdk:url>docs-16_r03.zip</sdk:url>
+                <sdk:size>171564393</sdk:size>
+                <sdk:checksum type="sha1">fb988cdd2beaac0dd47dc630821ccc30557c67e5</sdk:checksum>
+                <sdk:url>docs-17_r01.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:doc>
 
     <!-- SOURCES ........................ -->
@@ -898,6 +983,7 @@ April 10, 2009
                 <sdk:url>sources-14_r01.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:source>
 
     <sdk:source>
@@ -911,6 +997,7 @@ April 10, 2009
                 <sdk:url>sources-15_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:source>
 
     <sdk:source>
@@ -924,5 +1011,20 @@ April 10, 2009
                 <sdk:url>sources-16_r02.zip</sdk:url>
             </sdk:archive>
         </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
+    </sdk:source>
+
+    <sdk:source>
+        <!-- Generated at Mon Nov 12 17:16:08 2012 from git_jb-mr1-dev @ 526865 -->
+        <sdk:revision>1</sdk:revision>
+        <sdk:api-level>17</sdk:api-level>
+        <sdk:archives>
+            <sdk:archive arch="any" os="any">
+                <sdk:size>18976816</sdk:size>
+                <sdk:checksum type="sha1">6f1f18cd2d2b1852d7f6892df9cee3823349d43a</sdk:checksum>
+                <sdk:url>sources-17_r01.zip</sdk:url>
+            </sdk:archive>
+        </sdk:archives>
+        <sdk:uses-license ref="android-sdk-license"/>
     </sdk:source>
-</sdk:sdk-repository>
\ No newline at end of file
+</sdk:sdk-repository>
diff --git a/pkgs/development/androidenv/support.nix b/pkgs/development/androidenv/support.nix
index 0c69bf37107..2e9690de7a2 100644
--- a/pkgs/development/androidenv/support.nix
+++ b/pkgs/development/androidenv/support.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl, unzip}:
 
 stdenv.mkDerivation {
-  name = "android-support";
+  name = "android-support-r11";
   src = fetchurl {
-    url = https://dl-ssl.google.com/android/repository/support_r10.zip;
-    sha1 = "7c62e542d46ac3bdb89e1b90503d6afae557cf7d";
+    url = https://dl-ssl.google.com/android/repository/support_r11.zip;
+    sha1 = "d30d182d8e4c86bb4464c03a83ccffce7bc84ecd";
   };
   
   buildCommand = ''
diff --git a/pkgs/development/androidenv/sysimages.nix b/pkgs/development/androidenv/sysimages.nix
index 3add0c41444..b35b4298983 100644
--- a/pkgs/development/androidenv/sysimages.nix
+++ b/pkgs/development/androidenv/sysimages.nix
@@ -38,5 +38,13 @@ in
     };
   };
     
+  sysimg_17 = buildSystemImage {
+    name = "armeabi-v7a-17";
+    src = fetchurl {
+      url = https://dl-ssl.google.com/android/repository/sysimg_armv7a-17_r01.zip;
+      sha1 = "45b9344473e0a6d063c2b1fe58d8cd47d307905e";
+    };
+  };
+    
 }
-  
+  
\ No newline at end of file
diff --git a/pkgs/development/compilers/cmucl/binary.nix b/pkgs/development/compilers/cmucl/binary.nix
index 11d0b723ce4..55f64234a32 100644
--- a/pkgs/development/compilers/cmucl/binary.nix
+++ b/pkgs/development/compilers/cmucl/binary.nix
@@ -15,10 +15,6 @@ let
         arch = "x86-linux";
         sha256 = "1s00r1kszk5zhmv7m8z5q2wcqjn2gn7fbqwji3hgnsdvbb1f3jdn";
       }
-    else if system == "i686-darwin" then fetchDist {
-        arch = "x86-darwin";
-        sha256 = "0vd3zbp5zcp0hjd3y03k595hmri8hw884brjpwjiby3jpm3l40np";
-      }
     else throw "Unsupported platform for cmucl.";
 in
 
diff --git a/pkgs/development/compilers/ecl/default.nix b/pkgs/development/compilers/ecl/default.nix
index fb801b6b844..40690841965 100644
--- a/pkgs/development/compilers/ecl/default.nix
+++ b/pkgs/development/compilers/ecl/default.nix
@@ -1,47 +1,45 @@
-{builderDefsPackage
-  , gmp, mpfr, libffi
-  , ...} @ x:
-builderDefsPackage (a :  
-let 
-  propagatedBuildInputs = with a; [
+{stdenv, fetchurl
+, gmp, mpfr, libffi
+, noUnicode ? false, 
+}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="ecl";
+    version="12.12.1";
+    name="${baseName}-${version}";
+    hash="15y2dgj95li6mxiz9pnllj9x88km0z8gfh46kysfllkp2pl7rrsl";
+    url="mirror://sourceforge/project/ecls/ecls/12.12/ecl-12.12.1.tgz";
+    sha256="15y2dgj95li6mxiz9pnllj9x88km0z8gfh46kysfllkp2pl7rrsl";
+  };
+  buildInputs = [
+    libffi
+  ];
+  propagatedBuildInputs = [
     gmp mpfr
   ];
-  buildInputs = [ gmp libffi mpfr ];
 in
-rec {
-  mainVersion = "12.7";
-  revision = "1";
-  version = "${mainVersion}.${revision}";
-
-  name = "ecl-${version}";
-
-  src = a.fetchurl {
-    url = "mirror://sourceforge/project/ecls/ecls/${mainVersion}/${name}.tar.gz";
-    sha256 = "0k8ww142g3bybvvnlijqsbidl8clbs1pb4ympk2ds07z5swvy2ap";
-  };
-
+stdenv.mkDerivation {
+  inherit (s) name version;
   inherit buildInputs propagatedBuildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
   configureFlags = [
     "--enable-threads"
     ]
     ++
-    (a.lib.optional (! (a.lib.attrByPath ["noUnicode"] false a)) 
+    (stdenv.lib.optional (! noUnicode)
       "--enable-unicode")
     ;
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall" "fixEclConfig"];
-
-  fixEclConfig = a.fullDepEntry ''
+  postInstall = ''
     sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
-  '' ["minInit"];
-      
+  '';
   meta = {
-    description = "A Lisp implementation aiming to be small and fast";
-    maintainers = [
-      a.lib.maintainers.raskin
-    ];
-    platforms = with a.lib.platforms; 
-      linux;
+    inherit (s) version;
+    description = "Lisp implementation aiming to be small, fast and easy to embed";
+    license = stdenv.lib.licenses.mit ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
   };
-}) x
+}
diff --git a/pkgs/development/compilers/ecl/default.upstream b/pkgs/development/compilers/ecl/default.upstream
new file mode 100644
index 00000000000..70dcb1b4344
--- /dev/null
+++ b/pkgs/development/compilers/ecl/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/ecls/files/ecls/
+SF_version_dir
+version_link '[.]tgz/download$'
+SF_redirect
diff --git a/pkgs/development/compilers/eql/default.nix b/pkgs/development/compilers/eql/default.nix
index 4e288824713..5bb0a2e5f64 100644
--- a/pkgs/development/compilers/eql/default.nix
+++ b/pkgs/development/compilers/eql/default.nix
@@ -12,9 +12,9 @@ let
     (builtins.attrNames (builtins.removeAttrs x helperArgNames));
   sourceInfo = rec {
     method = "fetchgit";
-    rev = "14f62c94f952104d27d920ea662c8a61b370abe8";
+    rev = "9097bf98446ee33c07bb155d800395775ce0d9b2";
     url = "git://gitorious.org/eql/eql";
-    hash = "1ca31f0ad8cbc45d2fdf7b1e4059b1e612523c043f4688d7147c7e16fa5ba9ca";
+    hash = "1fp88xmmk1sa0iqxahfiv818bp2sbf66vqrd4xq9jb731ybdvsb8";
     version = rev;
     name = "eql-git-${version}";
   };
@@ -30,7 +30,7 @@ rec {
   inherit (sourceInfo) name version;
   inherit buildInputs;
 
-  phaseNames = ["setVars" "fixPaths" "firstMetaTypeId" "buildEQLLib" "doQMake" "doMake" "doDeploy"];
+  phaseNames = ["setVars" "fixPaths" "doQMake" "doMake" "doDeploy"];
 
   setVars = a.fullDepEntry (''
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC"
@@ -40,27 +40,13 @@ rec {
     sed -re 's@[(]in-home "gui/.command-history"[)]@(concatenate '"'"'string (ext:getenv "HOME") "/.eql-gui-command-history")@' -i gui/gui.lisp
   '') ["minInit" "doUnpack"];
 
-  firstMetaTypeId = a.fullDepEntry (''
-    cd src 
-    qmake first_metatype_id.pro
-    make
-    TMP=.
-    TMPDIR=.
-    XKB_BINDIR="${xkbcomp}/bin" Xvfb -once -reset -terminate :2 -xkbdir ${xkeyboard_config}/etc/X11/xkb &
-    sleep 10;
-    DISPLAY=:2 ./first_metatype_id
-  '') ["doUnpack" "addInputs"];
-
-  buildEQLLib = a.fullDepEntry (''
-    ecl -shell make-eql-lib.lisp
-    qmake eql_lib.pro
-    make
-  '') ["doUnpack" "addInputs" "firstMetaTypeId"];
-
   doQMake = a.fullDepEntry (''
+    cd src
     qmake eql_exe.pro
     make
-  '') ["addInputs" "firstMetaTypeId" "buildEQLLib"];
+    cd ..
+    cd src
+  '') ["addInputs" "doUnpack" "buildEQLLib"];
 
   doDeploy = a.fullDepEntry (''
     cd ..
@@ -70,7 +56,16 @@ rec {
     ln -s $out/lib/eql/build-dir/src/*.h $out/include
     ln -s $out/lib/eql/build-dir/src/gen/*.h $out/include/gen
     ln -s $out/lib/eql/build-dir/libeql*.so* $out/lib
-  '') ["minInit" "defEnsureDir"];
+  '') ["minInit"];
+
+  buildEQLLib = a.fullDepEntry (''
+    cd src
+    ecl -shell make-eql-lib.lisp
+    qmake eql_lib.pro
+    make
+    cd ..
+  '') ["doUnpack" "addInputs"];
+
 
   meta = {
     description = "Embedded Qt Lisp (ECL+Qt)";
diff --git a/pkgs/development/compilers/gcc/4.0/gcc-4.0.2-cxx.patch b/pkgs/development/compilers/gcc/4.0/gcc-4.0.2-cxx.patch
deleted file mode 100644
index b9d558d5c17..00000000000
--- a/pkgs/development/compilers/gcc/4.0/gcc-4.0.2-cxx.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN gcc-4.0.2/configure gcc-4.0.2.new/configure
---- gcc-4.0.2/configure	2005-09-13 09:01:28.000000000 +0200
-+++ gcc-4.0.2.new/configure	2006-01-20 20:38:09.000000000 +0100
-@@ -3471,7 +3471,7 @@
- # being built; programs in there won't even run.
- if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then
-   # Search for pre-installed headers if nothing else fits.
--  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include'
-+  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include $(NIX_EXTRA_CFLAGS)'
- fi
- 
- if test "x${use_gnu_ld}" = x &&
diff --git a/pkgs/development/compilers/gcc/4.2-apple32/builder.sh b/pkgs/development/compilers/gcc/4.2-apple32/builder.sh
deleted file mode 100644
index 1e4eccafbb2..00000000000
--- a/pkgs/development/compilers/gcc/4.2-apple32/builder.sh
+++ /dev/null
@@ -1,125 +0,0 @@
-source $stdenv/setup
-
-
-export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy
-mkdir $NIX_FIXINC_DUMMY
-
-
-# libstdc++ needs this; otherwise it will use /lib/cpp, which is a Bad
-# Thing.
-export CPP="gcc -E"
-
-
-if test "$noSysDirs" = "1"; then
-
-    # Figure out what extra flags to pass to the gcc compilers being
-    # generated to make sure that they use our glibc.
-    if test -e $NIX_GCC/nix-support/orig-glibc; then
-        glibc=$(cat $NIX_GCC/nix-support/orig-glibc)
-
-        # Ugh.  Copied from gcc-wrapper/builder.sh.  We can't just
-        # source in $NIX_GCC/nix-support/add-flags, since that would
-        # cause *this* GCC to be linked against the *previous* GCC.
-        # Need some more modularity there.
-        extraCFlags="-B$glibc/lib -isystem $glibc/include"
-        extraLDFlags="-B$glibc/lib -L$glibc/lib -Wl,-s \
-          -Wl,-dynamic-linker,$glibc/lib/ld-linux.so.2"
-
-        # Oh, what a hack.  I should be shot for this.  In stage 1, we
-        # should link against the previous GCC, but not afterwards.
-        # Otherwise we retain a dependency.  However, ld-wrapper,
-        # which adds the linker flags for the previous GCC, is also
-        # used in stage 2/3.  We can prevent it from adding them by
-        # NIX_GLIBC_FLAGS_SET, but then gcc-wrapper will also not add
-        # them, thereby causing stage 1 to fail.  So we use a trick to
-        # only set the flags in gcc-wrapper.
-        hook=$(pwd)/ld-wrapper-hook
-        echo "NIX_GLIBC_FLAGS_SET=1" > $hook
-        export NIX_LD_WRAPPER_START_HOOK=$hook
-
-        # Use *real* header files, otherwise a limits.h is generated
-        # that does not include Glibc's limits.h (notably missing
-        # SSIZE_MAX, which breaks the build).
-        export NIX_FIXINC_DUMMY=$glibc/include
-    fi
-
-    export NIX_EXTRA_CFLAGS=$extraCFlags
-    export NIX_EXTRA_LDFLAGS=$extraLDFlags
-    export CFLAGS=$extraCFlags
-    export CXXFLAGS=$extraCFlags
-    export LDFLAGS=$extraLDFlags
-fi
-
-
-preConfigure() {
-    
-    # Determine the frontends to build.
-    langs="c"
-    if test -n "$langCC"; then
-        langs="$langs,c++"
-    fi
-    if test -n "$langF77"; then
-        langs="$langs,f95"
-    fi
-
-    # Perform the build in a different directory.
-    mkdir ../build
-    cd ../build
-
-    configureScript=../$sourceRoot/configure
-    configureFlags="--enable-languages=$langs --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-multilib --with-gxx-include-dir=${STDCXX_INCDIR}"
-}
-
-
-postInstall() {
-    # Remove precompiled headers for now.  They are very big and
-    # probably not very useful yet.
-    find $out/include -name "*.gch" -exec rm -rf {} \; -prune
-
-    # Remove `fixincl' to prevent a retained dependency on the
-    # previous gcc.
-    rm -rf $out/libexec/gcc/*/*/install-tools
-}
-
-postUnpack() {
-  mv libstdcxx-16/libstdcxx $sourceRoot/
-}
-
-STDCXX_INCDIR="$out/include/c++/4.2.1"
-
-genericBuild
-
-
-echo '-------------------------------------------------------------------------------------------------------------------------'
-echo 'libstdcxx-16'
-echo '-------------------------------------------------------------------------------------------------------------------------'
-
-cd ..
-pwd
-
-preConfigure() {
-    # Perform the build in a different directory.
-    mkdir ../build_libstdcxx
-    cd ../build_libstdcxx
-
-    ln -s ../build/gcc gcc
-    
-    configureScript=../$sourceRoot/libstdcxx/configure
-    configureFlags="--disable-libstdcxx-pch --disable-libstdcxx-debug --disable-multilib --with-gxx-include-dir=${STDCXX_INCDIR}"
-}
-
-unpackPhase () {
-  echo '-'
-}
-
-postInstall() {
-  echo '-'
-  echo "cp -v ${STDCXX_INCDIR}/*/bits/* ${STDCXX_INCDIR}/bits/"
-  cp -v ${STDCXX_INCDIR}/*/bits/* ${STDCXX_INCDIR}/bits/
-}
-
-patchPhase() {
-  echo '-'
-}
-
-genericBuild
diff --git a/pkgs/development/compilers/gcc/4.2-apple32/debug_list.patch b/pkgs/development/compilers/gcc/4.2-apple32/debug_list.patch
deleted file mode 100644
index b26f15e6512..00000000000
--- a/pkgs/development/compilers/gcc/4.2-apple32/debug_list.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -rc libstdcxx-16-orig/libstdcxx/libstdc++-v3/src/Makefile.in libstdcxx-16/libstdcxx/libstdc++-v3/src/Makefile.in
-*** libstdcxx-16-orig/libstdcxx/libstdc++-v3/src/Makefile.in	Thu Jul 23 19:13:52 2009
---- libstdcxx-16/libstdcxx/libstdc++-v3/src/Makefile.in	Thu Jul 23 19:38:23 2009
-***************
-*** 65,71 ****
-  	numeric_members.lo time_members.lo
-  am__objects_2 = basic_file.lo c++locale.lo
-  am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
-! 	codecvt.lo complex_io.lo ctype.lo debug.lo debug_list.lo \
-  	functexcept.lo globals_locale.lo globals_io.lo ios.lo \
-  	ios_failure.lo ios_init.lo ios_locale.lo limits.lo list.lo \
-  	locale.lo locale_init.lo locale_facets.lo localename.lo \
---- 65,71 ----
-  	numeric_members.lo time_members.lo
-  am__objects_2 = basic_file.lo c++locale.lo
-  am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
-! 	codecvt.lo complex_io.lo ctype.lo debug.lo \
-  	functexcept.lo globals_locale.lo globals_io.lo ios.lo \
-  	ios_failure.lo ios_init.lo ios_locale.lo limits.lo list.lo \
-  	locale.lo locale_init.lo locale_facets.lo localename.lo \
-***************
-*** 315,321 ****
-  	complex_io.cc \
-  	ctype.cc \
-  	debug.cc \
-- 	debug_list.cc \
-  	functexcept.cc \
-  	globals_locale.cc \
-  	globals_io.cc \
---- 315,320 ----
diff --git a/pkgs/development/compilers/gcc/4.2-apple32/default.nix b/pkgs/development/compilers/gcc/4.2-apple32/default.nix
deleted file mode 100644
index 3346a4e327a..00000000000
--- a/pkgs/development/compilers/gcc/4.2-apple32/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchurl, noSysDirs
-, langC ? true, langCC ? true, langF77 ? false
-, profiledCompiler ? false
-, gmp ? null, mpfr ? null, bison ? null, flex ? null
-}:
-
-assert langC;
-assert stdenv.isDarwin;
-assert langF77 -> gmp != null;
-
-stdenv.mkDerivation ({
-  name = "gcc-4.2.1-apple-5574";
-  builder = ./builder.sh;
-  src = 
-    stdenv.lib.optional /*langC*/ true (fetchurl {
-      url = http://www.opensource.apple.com/tarballs/gcc_42/gcc_42-5574.tar.gz ;
-      sha256 = "0b76ef3cded7822e3c0ec430f9811b6bb84895055b683acd2df7f7253d745a50";
-    }) ++
-    stdenv.lib.optional langCC (fetchurl {
-      url = http://www.opensource.apple.com/tarballs/libstdcxx/libstdcxx-16.tar.gz ;
-      sha256 = "a7d8041e50e110f5a503e188a05cb217f0c99c51f248a0a1387cc07a0b6f167f";
-    }) ;
-
-  enableParallelBuilding = true;
-
-  sourceRoot = "gcc_42-5574/";
-  patches =
-    [./pass-cxxcpp.patch ./debug_list.patch]
-    ++ (if noSysDirs then [./no-sys-dirs.patch] else []);
-  inherit noSysDirs langC langCC langF77 profiledCompiler;
-} // (if langF77 then {buildInputs = [gmp mpfr bison flex];} else {}))
diff --git a/pkgs/development/compilers/gcc/4.2-apple32/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.2-apple32/no-sys-dirs.patch
deleted file mode 100644
index b7b93d6944c..00000000000
--- a/pkgs/development/compilers/gcc/4.2-apple32/no-sys-dirs.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff -ruN gcc-4.1.0/gcc/cppdefault.c gcc-4.1.0.new/gcc/cppdefault.c
---- gcc-4.1.0/gcc/cppdefault.c	2005-06-25 04:02:01.000000000 +0200
-+++ gcc-4.1.0.new/gcc/cppdefault.c	2006-03-01 18:48:58.000000000 +0100
-@@ -41,6 +41,10 @@
- # undef CROSS_INCLUDE_DIR
- #endif
- 
-+#undef LOCAL_INCLUDE_DIR
-+#undef SYSTEM_INCLUDE_DIR
-+#undef STANDARD_INCLUDE_DIR
-+
- const struct default_include cpp_include_defaults[]
- #ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
-diff -ruN gcc-4.1.0/gcc/Makefile.in gcc-4.1.0.new/gcc/Makefile.in
---- gcc-4.1.0/gcc/Makefile.in	2006-02-16 16:23:24.000000000 +0100
-+++ gcc-4.1.0.new/gcc/Makefile.in	2006-03-01 18:55:12.000000000 +0100
-@@ -219,7 +219,7 @@
- CPPFLAGS = @CPPFLAGS@
- 
- # These exists to be overridden by the x-* and t-* files, respectively.
--X_CFLAGS =
-+X_CFLAGS = $(NIX_EXTRA_CFLAGS) $(NIX_EXTRA_LDFLAGS)
- T_CFLAGS =
- 
- X_CPPFLAGS =
-@@ -383,7 +383,11 @@
- MD5_H	    = $(srcdir)/../include/md5.h
- 
- # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
--NATIVE_SYSTEM_HEADER_DIR = /usr/include
-+# Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent
-+# `fixinc' from fixing header files in /usr/include.  However,
-+# NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set
-+# it to some dummy directory.
-+NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY)
- # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
- CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
- 
-@@ -395,7 +399,7 @@
- STMP_FIXINC = @STMP_FIXINC@
- 
- # Test to see whether <limits.h> exists in the system header files.
--LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ]
-+LIMITS_H_TEST = true
- 
- # Directory for prefix to system directories, for
- # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc.
-@@ -3002,7 +3006,7 @@
-   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
-   -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
-   -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
--  -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
-+  -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \
-   -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
-   -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
-   @TARGET_SYSTEM_ROOT_DEFINE@
-diff -ruN gcc-4.1.0/libstdc++-v3/include/Makefile.in gcc-4.1.0.new/libstdc++-v3/include/Makefile.in
---- gcc-4.1.0/libstdc++-v3/include/Makefile.in	2006-01-10 18:14:00.000000000 +0100
-+++ gcc-4.1.0.new/libstdc++-v3/include/Makefile.in	2006-03-01 18:57:32.000000000 +0100
-@@ -1257,8 +1257,8 @@
- 	if [ ! -d "${pch_output_builddir}" ]; then \
- 	  mkdir -p ${pch_output_builddir}; \
- 	fi; \
--	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \
--	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch;
-+	$(CXX) $(CFLAGS) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \
-+	$(CXX) $(CFLAGS) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch;
- 
- # For robustness sake (in light of junk files or in-source
- # configuration), copy from the build or source tree to the install
-diff -ruN gcc-4.1.0/ltcf-cxx.sh gcc-4.1.0.new/ltcf-cxx.sh
---- gcc-4.1.0/ltcf-cxx.sh	2005-07-16 04:30:53.000000000 +0200
-+++ gcc-4.1.0.new/ltcf-cxx.sh	2006-03-01 18:58:15.000000000 +0100
-@@ -989,7 +989,7 @@
-   # the conftest object file.
-   pre_test_object_deps_done=no
- 
--  for p in `eval $output_verbose_link_cmd`; do
-+  for p in `true`; do
- 
-     case $p in
- 
-diff -ruN gcc-4.1.0/ltconfig gcc-4.1.0.new/ltconfig
---- gcc-4.1.0/ltconfig	2005-07-16 04:30:53.000000000 +0200
-+++ gcc-4.1.0.new/ltconfig	2006-03-01 18:59:58.000000000 +0100
-@@ -2322,6 +2322,11 @@
- # A language-specific compiler.
- CC=$CC
- 
-+# Ugly hack to get libmudflap (and possibly other libraries) to build.
-+# Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag
-+# to Glibc gets lost.  Here we forcibly add it to any invocation.
-+CC="\$CC $NIX_EXTRA_LDFLAGS"
-+
- # Is the compiler the GNU C compiler?
- with_gcc=$with_gcc
- 
-diff -ruN gcc-4.1.0/Makefile.in gcc-4.1.0.new/Makefile.in
---- gcc-4.1.0/Makefile.in	2005-12-15 15:02:02.000000000 +0100
-+++ gcc-4.1.0.new/Makefile.in	2006-03-01 19:41:04.000000000 +0100
-@@ -286,7 +286,7 @@
- WINDRES = @WINDRES@
- 
- CFLAGS = @CFLAGS@
--LDFLAGS = 
-+LDFLAGS = $(NIX_EXTRA_LDFLAGS)
- LIBCFLAGS = $(CFLAGS)
- CXXFLAGS = @CXXFLAGS@
- LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
-@@ -329,12 +329,12 @@
- # CFLAGS will be just -g.  We want to ensure that TARGET libraries
- # (which we know are built with gcc) are built with optimizations so
- # prepend -O2 when setting CFLAGS_FOR_TARGET.
--CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
-+CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(NIX_EXTRA_CFLAGS)
- SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
--CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
-+CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) $(NIX_EXTRA_CFLAGS)
- LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
- LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
--LDFLAGS_FOR_TARGET = 
-+LDFLAGS_FOR_TARGET = $(NIX_EXTRA_LDFLAGS)
- PICFLAG_FOR_TARGET = 
- 
- # ------------------------------------
diff --git a/pkgs/development/compilers/gcc/4.2-apple32/pass-cxxcpp.patch b/pkgs/development/compilers/gcc/4.2-apple32/pass-cxxcpp.patch
deleted file mode 100644
index 4f9a29ae51b..00000000000
--- a/pkgs/development/compilers/gcc/4.2-apple32/pass-cxxcpp.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -rc gcc-orig/Makefile.in gcc-4.1.1/Makefile.in
-*** gcc-orig/Makefile.in	Wed Jun 21 13:40:23 2006
---- gcc-4.1.1/Makefile.in	Wed Jun 21 14:19:44 2006
-***************
-*** 213,219 ****
-  RAW_CXX_TARGET_EXPORTS = \
-  	$(BASE_TARGET_EXPORTS) \
-  	CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
-! 	CXX="$(RAW_CXX_FOR_TARGET)"; export CXX;
-  
-  NORMAL_TARGET_EXPORTS = \
-  	$(BASE_TARGET_EXPORTS) \
---- 213,220 ----
-  RAW_CXX_TARGET_EXPORTS = \
-  	$(BASE_TARGET_EXPORTS) \
-  	CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
-! 	CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \
-! 	CXXCPP="$(RAW_CXX_FOR_TARGET) $(CFLAGS_FOR_BUILD) -E"; export CXXCPP;
-  
-  NORMAL_TARGET_EXPORTS = \
-  	$(BASE_TARGET_EXPORTS) \
diff --git a/pkgs/development/compilers/gcc/4.7/default.nix b/pkgs/development/compilers/gcc/4.7/default.nix
index 0267c1def5d..60ef44f2a90 100644
--- a/pkgs/development/compilers/gcc/4.7/default.nix
+++ b/pkgs/development/compilers/gcc/4.7/default.nix
@@ -181,7 +181,6 @@ stdenv.mkDerivation ({
       let
         libc = if libcCross != null then libcCross else stdenv.glibc;
         gnu_h = "gcc/config/gnu.h";
-        i386_gnu_h = "gcc/config/i386/gnu.h";
         extraCPPDeps =
              libc.propagatedBuildInputs
           ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
@@ -194,8 +193,8 @@ stdenv.mkDerivation ({
           then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
           else "-L${libpthread}/lib";
       in
-        '' echo "augmenting \`CPP_SPEC' in \`${i386_gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${i386_gnu_h}" \
+        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
+           sed -i "${gnu_h}" \
                -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
 
            echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
@@ -289,7 +288,9 @@ stdenv.mkDerivation ({
         )
       )
     }
-    ${if (stdenv ? glibc) then " --with-native-system-header-dir=${stdenv.glibc}/include" else ""}
+    ${if (stdenv ? glibc && cross == null)
+      then " --with-native-system-header-dir=${stdenv.glibc}/include"
+      else ""}
     ${ # Trick that should be taken out once we have a mips64el-linux not loongson2f
       if cross == null && stdenv.system == "mips64el-linux" then "--with-arch=loongson2f" else ""}
     ${if langAda then " --enable-libada" else ""}
diff --git a/pkgs/development/compilers/ghc/with-packages.nix b/pkgs/development/compilers/ghc/with-packages.nix
index f4f567f30b3..07071ef8414 100644
--- a/pkgs/development/compilers/ghc/with-packages.nix
+++ b/pkgs/development/compilers/ghc/with-packages.nix
@@ -79,7 +79,12 @@ stdenv.mkDerivation rec {
     echo -n "Generating wrappers "
 
     for prg in ghc ghci ghc-${ghc.version} ghci-${ghc.version}; do
-      makeWrapper ${ghc}/bin/$prg $out/bin/$prg --add-flags "-B$linkedTopDir"
+      # The NIX env-vars are picked up by our patched version of ghc-paths.
+      makeWrapper ${ghc}/bin/$prg $out/bin/$prg \
+        --add-flags "-B$linkedTopDir" \
+        --set "NIX_GHC"        "$out/bin/ghc"     \
+        --set "NIX_GHCPKG"     "$out/bin/ghc-pkg" \
+        --set "NIX_GHC_LIBDIR" "$linkedTopDir"
       echo -n .
     done
 
diff --git a/pkgs/development/compilers/jdk/default.nix b/pkgs/development/compilers/jdk/default.nix
deleted file mode 100644
index 8940be7f34d..00000000000
--- a/pkgs/development/compilers/jdk/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-args:
-
-if args.stdenv.system == "i686-linux" || args.stdenv.system == "x86_64-linux" then
-  (import ./jdk6-linux.nix) ( removeAttrs args ["cabextract"] )
-else if args.stdenv.system == "i686-cygwin" then
-  (import ./jdk6-cygwin.nix) (removeAttrs args ["pluginSupport" "xlibs" "installjdk" "xlibs"])
-else
-  abort "the JDK is not supported on this platform"
-
diff --git a/pkgs/development/compilers/jdk/jdk6-cygwin.nix b/pkgs/development/compilers/jdk/jdk6-cygwin.nix
deleted file mode 100644
index 31c9c614031..00000000000
--- a/pkgs/development/compilers/jdk/jdk6-cygwin.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ stdenv
-, fetchurl
-, unzip
-, cabextract
-, ...
-}:
-
-assert stdenv.system == "i686-cygwin";
-
-stdenv.mkDerivation rec {
-  name = "jdk-1.6.0_20";
-
-  src = fetchurl {
-    url = file:///tmp/jdk-6u20-windows-i586.exe;
-    sha256 = "0w4afz8a9gi1iyhh47gvhiy59dfrzx0fnmywdff3v5cx696w25fh";
-  };
-
-  buildInputs = [unzip cabextract]; 
-
-  buildCommand = ''
-    cabextract ${src}
-    mkdir -p $out
-    unzip -d $out tools.zip
-    find $out -name '*.exe' | xargs chmod a+x 
-    find $out -name '*.dll' | xargs chmod a+x 
-
-    cd $out
-    $out/bin/unpack200.exe ./jre/lib/jsse.pack ./jre/lib/jsse.jar
-    $out/bin/unpack200.exe ./jre/lib/javaws.pack ./jre/lib/javaws.jar
-    $out/bin/unpack200.exe ./jre/lib/plugin.pack ./jre/lib/plugin.jar
-    $out/bin/unpack200.exe ./jre/lib/charsets.pack ./jre/lib/charsets.jar
-    $out/bin/unpack200.exe ./jre/lib/deploy.pack ./jre/lib/deploy.jar
-    $out/bin/unpack200.exe ./jre/lib/rt.pack ./jre/lib/rt.jar
-    $out/bin/unpack200.exe ./jre/lib/ext/localedata.pack ./jre/lib/ext/localedata.jar
-    $out/bin/unpack200.exe ./lib/tools.pack ./lib/tools.jar
-
-    rm ./jre/lib/jsse.pack \
-       ./jre/lib/javaws.pack \
-       ./jre/lib/plugin.pack \
-       ./jre/lib/charsets.pack \
-       ./jre/lib/deploy.pack \
-       ./jre/lib/rt.pack \
-       ./jre/lib/ext/localedata.pack \
-       ./lib/tools.pack
-  '';
-
-  meta.license = "unfree";
-}
diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix
index b8a5a10ec97..a4503911b92 100644
--- a/pkgs/development/compilers/julia/default.nix
+++ b/pkgs/development/compilers/julia/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
  , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
  , ncurses, libunistring, lighttpd, patchelf, openblas, liblapack
- , tcl, tk
+ , tcl, tk, xproto, libX11
  } :
 let
   realGcc = stdenv.gcc.gcc;
 in
 stdenv.mkDerivation rec {
   pname = "julia";
-  date = "20121122";
+  date = "20121209";
   name = "${pname}-git-${date}";
 
   grisu_ver = "1.1.1";
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   arpack_ver = "3.1.2";
   clp_ver = "1.14.5";
   lighttpd_ver = "1.4.29";
+  patchelf_ver = "0.6";
 
   grisu_src = fetchurl {
     url = "http://double-conversion.googlecode.com/files/double-conversion-${grisu_ver}.tar.gz";
@@ -52,38 +53,40 @@ stdenv.mkDerivation rec {
     url = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${lighttpd_ver}.tar.gz";
     sha256 = "ff9f4de3901d03bb285634c5b149191223d17f1c269a16c863bac44238119c85";
   };
+  patchelf_src = fetchurl {
+    url = "http://hydra.nixos.org/build/1524660/download/2/patchelf-${patchelf_ver}.tar.bz2";
+    sha256 = "00bw29vdsscsili65wcb5ay0gvg1w0ljd00sb5xc6br8bylpyzpw";
+  };
 
   src = fetchgit {
     url = "git://github.com/JuliaLang/julia.git";
-    rev = "51076ef4c1b269de738b6185865b389601627eb7";
-    sha256 = "1hbhxdiymkv0pd4dhr9wbvh1566ivfffhmafsjh8jcwh2f9fz90b";
+    rev = "27b950f62aeb3664ab76e5d827b30b4885a9efb9";
+    sha256 = "0khx8ln2zq3vpj0g66hnsdhw04hxl79fq43rc06ggsmc1j4xrifb";
   };
 
   buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
     fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
-    openblas liblapack
+    openblas liblapack tcl tk xproto libX11 
     ];
 
   configurePhase = ''
     for i in GMP LLVM PCRE LAPACK OPENBLAS BLAS READLINE FFTW LIBUNWIND SUITESPARSE GLPK LIGHTTPD ZLIB; 
     do 
-      sed -e "s@USE_SYSTEM_$i=0@USE_SYSTEM_$i=1@" -i Make.inc; 
+      makeFlags="$makeFlags USE_SYSTEM_$i=1 "
     done
-    sed -e 's@-lcurses@@g' -i Make.inc
 
     copy_kill_hash(){
       cp "$1" "$2/$(basename "$1" | sed -e 's/^[a-z0-9]*-//')"
     }
 
-    for i in "${grisu_src}" "${dsfmt_src}" "${arpack_src}" "${clp_src}" ; do
+    for i in "${grisu_src}" "${dsfmt_src}" "${arpack_src}" "${clp_src}" "${patchelf_src}" ; do
       copy_kill_hash "$i" deps
     done
     copy_kill_hash "${dsfmt_src}" deps/random
 
     ${if realGcc ==null then "" else 
     ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz "''}
-
-    sed -e 's@ cpp @ gcc -E @g' -i base/Makefile
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
 
     export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
 
@@ -101,17 +104,19 @@ stdenv.mkDerivation rec {
   '';
 
   preBuild = ''
-    make -C test/unicode all SHELL="${stdenv.shell}"
-    make -C extras glpk_h.jl GLPK_PREFIX="$GLPK_PREFIX" SHELL="${stdenv.shell}"
+    mkdir -p usr/lib
+    ln -s libuv.a usr/lib/uv.a
+  '';
+
+  preInstall = ''
+    make -C deps install-tk-wrapper
   '';
 
   postInstall = ''
-   ld -E --whole-archive --shared ${suitesparse}/lib/lib*[a-z].a -o "$out"/lib/libsuitesparse-shared.so
-   for i in umfpack cholmod amd camd colamd btf cxsparse ldl rbio spqr suitesparseconfig; do
-     ln -s "libsuitesparse-shared.so" "$out/lib/lib$i.so"
-   done
-   ln -s "${lighttpd}/sbin/lighttpd" "$out/sbin/"
-   ln -s "${lighttpd}/lib/"* "$out/lib/"
+   (
+   cd $out/share/julia/test/ 
+   $out/bin/julia runtests.jl all
+   ) || true
   '';
 
   meta = {
diff --git a/pkgs/development/compilers/ocaml/cvs.nix b/pkgs/development/compilers/ocaml/cvs.nix
deleted file mode 100644
index cc40ca9aac5..00000000000
--- a/pkgs/development/compilers/ocaml/cvs.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-args: with args;
-
-stdenv.mkDerivation (rec {
-  
-  name = "ocaml-cvs-2009-09-24";
-  
-  src = fetchcvs {
-    cvsRoot = ":pserver:anoncvs@camlcvs.inria.fr:/caml";
-    module = "ocaml";
-    date = "2009-09-24";
-    sha256 = "3909bffebc9ce36ca51711d7d95596cba94376ebb1975c6ed46b09c9892c3ef1";
-  };
-
-  prefixKey = "-prefix ";
-  configureFlags = ["-no-tk"];
-  buildFlags = "world" +
-    (if !stdenv.isArm then "bootstrap world.opt" else "");
-  buildInputs = [ncurses];
-  installTargets = "install" + (if !stdenv.isArm then "installopt" else "");
-  patchPhase = ''
-    CAT=$(type -tp cat)
-    sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang
-  '';
-
-  meta = {
-    homepage = http://caml.inria.fr/ocaml;
-    license = "QPL, LGPL2 (library part)";
-    desctiption = "Most popular variant of the Caml language";
-  };
-
-})
diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix
index 246696f81e2..a1cb2f7fe19 100644
--- a/pkgs/development/compilers/openjdk/default.nix
+++ b/pkgs/development/compilers/openjdk/default.nix
@@ -39,13 +39,15 @@ let
     else
       throw "openjdk requires i686-linux or x86_64 linux";
 
+  build = "147";
+
 in
 
 stdenv.mkDerivation rec {
-  name = "openj${if jreOnly then "re" else "dk"}-7b127";
+  name = "openj${if jreOnly then "re" else "dk"}-7b${build}";
 
   src = fetchurl {
-    url = http://www.java.net/download/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zip;
+    url = "http://www.java.net/download/openjdk/jdk7/promoted/b${build}/openjdk-7-fcs-src-b${build}-27_jun_2011.zip";
     sha256 = "1qhwlz9y5qmwmja4qnxg6sn3pgsg1i11fb9j41w8l26acyhk34rs";
   };
 
@@ -126,7 +128,7 @@ stdenv.mkDerivation rec {
     "FREETYPE_HEADERS_PATH=${freetype}/include"
     "FREETYPE_LIB_PATH=${freetype}/lib"
     "MILESTONE=release"
-    "BUILD_NUMBER=b127"
+    "BUILD_NUMBER=b${build}"
     "CUPS_HEADERS_PATH=${cups}/include"
     "USRBIN_PATH="
     "COMPILER_PATH="
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index adffb7c5074..607e1da8117 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -4,10 +4,11 @@ let
   s= # Generated upstream information
   rec {
     baseName="sbcl";
-    version="1.1.1";
-    name="${baseName}-${version}";
-    hash="1gkwz0248zl2nhx79ck5wiyxj8407c10gcrpgg1c67102pgyiikv";
-    url="mirror://sourceforge/project/sbcl/sbcl/1.1.1/sbcl-1.1.1-source.tar.bz2";
+    version="1.1.2";
+    name="sbcl-1.1.2";
+    hash="04vp68cf0jfpjwx64iys7hi7qxbk2h7277wiym7k4jgirka08yhc";
+    url="mirror://sourceforge/project/sbcl/sbcl/1.1.2/sbcl-1.1.2-source.tar.bz2";
+    sha256="04vp68cf0jfpjwx64iys7hi7qxbk2h7277wiym7k4jgirka08yhc";
   };
   buildInputs = with a; [
     clisp makeWrapper
@@ -90,5 +91,3 @@ rec {
     inherit(s) version;
   };
 }
-
-
diff --git a/pkgs/development/compilers/tiger/builder.sh b/pkgs/development/compilers/tiger/builder.sh
deleted file mode 100644
index c602b5280f6..00000000000
--- a/pkgs/development/compilers/tiger/builder.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-buildinputs="$aterm $sdf $strategoxt"
-source $stdenv/setup || exit 1
-
-tar zxf $src || exit 1
-cd tiger-* || exit 1
-./configure --prefix=$out \
-	--with-aterm=$aterm \
-	--with-sdf=$sdf \
-	--with-stratego-xt=$strategoxt \
-        --enable-tiger \
-        --enable-ir \
-	--enable-asm \
-    || exit 1
-make || exit 1
-make install || exit 1
diff --git a/pkgs/development/compilers/tiger/default.nix b/pkgs/development/compilers/tiger/default.nix
deleted file mode 100644
index 2fd297b8848..00000000000
--- a/pkgs/development/compilers/tiger/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{stdenv, fetchurl, aterm, sdf, strategoxt}: stdenv.mkDerivation {
-  name = "tiger-1.3-4631";
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = http://losser.st-lab.cs.uu.nl/~mbravenb/dailydist/tiger/src/tiger-1.3-4631.tar.gz;
-    md5 = "1ea6070d84134eb6cff7fb32a75ef90a";
-  };
-  aterm = aterm;
-  sdf = sdf;
-  strategoxt = strategoxt;
-}
diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix
index cc49ab87af8..e5c8f268548 100644
--- a/pkgs/development/interpreters/guile/default.nix
+++ b/pkgs/development/interpreters/guile/default.nix
@@ -7,11 +7,11 @@
  else stdenv.mkDerivation)
 
 (rec {
-  name = "guile-2.0.6";
+  name = "guile-2.0.7";
 
   src = fetchurl {
     url = "mirror://gnu/guile/${name}.tar.xz";
-    sha256 = "000ng5qsq3cl1k35jvzvhwxj92wx4q87745n2fppkd4irh58vv5l";
+    sha256 = "0f53pxkia4v17n0avwqlcjpy0n89hkazm2xsa6p84lv8k6k8y9vg";
   };
 
   buildNativeInputs = [ makeWrapper gawk pkgconfig ];
diff --git a/pkgs/development/interpreters/hiphopvm/default.nix b/pkgs/development/interpreters/hiphopvm/default.nix
new file mode 100644
index 00000000000..d2cdf06f138
--- /dev/null
+++ b/pkgs/development/interpreters/hiphopvm/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl, fetchgit, cmake, boost, libunwind, mysql, libmemcached, pcre
+, libevent, gd, curl, libxml2, icu, flex, bison, openssl, zlib, php, re2c
+, expat, libcap, oniguruma, libdwarf, libmcrypt, inteltbb, google_perftools
+, bzip2, openldap, readline, libelf, uwimap, binutils, cyrus_sasl, pam
+}:
+assert stdenv.system == "x86_64-linux";
+let
+  src = fetchgit {
+    url = "git://github.com/facebook/hiphop-php.git";
+    rev = "73f1c0ebd9b313f6b3baecd8c8046e0b595b1157";
+    sha256 = "104133c6054bc9ab0288eaa0cea168b6699e537b3ea76ecdc38ee833d93dca09";
+  };
+
+  libxml2_280 = stdenv.lib.overrideDerivation libxml2 (args: rec { 
+    name = "libxml2-2.8.0";
+
+    src = fetchurl {
+      url = "ftp://xmlsoft.org/libxml2/${name}.tar.gz";
+      sha256 = "0ak2mjwvanz91nwxf1kkgbhrkm85vhhkpj7ymz8r6lb84bix1qpj";
+    };
+
+    patches = [];
+  });
+ 
+  curlFB = stdenv.lib.overrideDerivation curl (args: { patches = [ "${src}/src/third_party/libcurl-7.22.1.fb-changes.diff" ]; });
+
+  fbPatch = "${src}/src/third_party/libevent-1.4.14.fb-changes.diff";
+  libeventFB = stdenv.lib.overrideDerivation libevent (args: { patches = [fbPatch]; });
+in
+stdenv.mkDerivation {
+  name = "hiphop-php-73f1c0ebd9";
+  inherit src;
+  dontUseCmakeBuildDir = true;
+  dontUseCmakeConfigure = true;
+  USE_HHVM=1;
+  preConfigure = ''
+    export HPHP_HOME=$PWD
+    export HPHP_LIB=$PWD/bin
+    export TBB_INSTALL_DIR=${inteltbb}
+    export TBB_ARCH_PLATFORM="intel64/cc4.1.0_libc2.4_kernel2.6.16.21"
+    sed -i 's| DEPRECATED | DEPRECATED_ |' src/runtime/base/runtime_error.h
+  '';
+  NIX_LDFLAGS = "-lpam -L${pam}/lib";
+  MYSQL_DIR=mysql;
+  buildInputs = [ 
+    cmake boost libunwind mysql libmemcached pcre libeventFB gd curlFB
+    libxml2_280 icu flex bison openssl zlib php expat libcap oniguruma
+    libdwarf libmcrypt inteltbb google_perftools bzip2 openldap readline
+    libelf uwimap binutils cyrus_sasl pam
+  ];
+  installPhase = ''
+    mkdir -p $out/bin
+    cp src/hhvm/hhvm $out/bin
+    cp bin/systemlib.php $out/bin
+  '';
+  patches = [./tbb.patch];
+
+  meta = {
+    description = "HipHop is a high performance PHP toolchain.";
+    homepage = https://github.com/facebook/hiphop-php;
+    platforms = ["x86_64-linux"];
+  };
+}
diff --git a/pkgs/development/interpreters/hiphopvm/tbb.patch b/pkgs/development/interpreters/hiphopvm/tbb.patch
new file mode 100644
index 00000000000..0dee06d00fd
--- /dev/null
+++ b/pkgs/development/interpreters/hiphopvm/tbb.patch
@@ -0,0 +1,13 @@
+diff --git a/CMake/FindTBB.cmake b/CMake/FindTBB.cmake
+index 6a09c85..977418c 100644
+--- a/CMake/FindTBB.cmake
++++ b/CMake/FindTBB.cmake
+@@ -164,7 +164,7 @@ mark_as_advanced(TBB_INCLUDE_DIR)
+ #-- Look for libraries
+ # GvdB: $ENV{TBB_ARCH_PLATFORM} is set by the build script tbbvars[.bat|.sh|.csh]
+ if (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "")
+-    set (TBB_LIBRARY_DIR "${_TBB_INSTALL_DIR}/$ENV{TBB_ARCH_PLATFORM}/lib")
++    set (TBB_LIBRARY_DIR "${_TBB_INSTALL_DIR}/lib/$ENV{TBB_ARCH_PLATFORM}")
+ else (NOT $ENV{TBB_ARCH_PLATFORM} STREQUAL "")
+     # HH: deprecated
+     message(STATUS "[Warning] FindTBB.cmake: The use of TBB_ARCHITECTURE and TBB_COMPILER is deprecated and may not be supported in future versions. Please set $ENV{TBB_ARCH_PLATFORM} (using tbbvars.[bat|csh|sh]).")
diff --git a/pkgs/development/interpreters/php/5.3.nix b/pkgs/development/interpreters/php/5.3.nix
index e073a51c92d..014ce9d3b97 100644
--- a/pkgs/development/interpreters/php/5.3.nix
+++ b/pkgs/development/interpreters/php/5.3.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, composableDerivation, autoconf, automake, flex, bison
-, apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql
-, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng }:
+, apacheHttpd, mysql, libxml2, readline, zlib, curl, gd, postgresql, gettext
+, openssl, pkgconfig, sqlite, config, libiconv, libjpeg, libpng, freetype }:
 
 composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
 
@@ -84,8 +84,8 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
       };
 
       gd = {
-        configureFlags = ["--with-gd=${gd}"];
-        buildInputs = [gd libpng libjpeg ];
+        configureFlags = ["--with-gd=${gd} --with-freetype-dir=${freetype}"];
+        buildInputs = [gd libpng libjpeg freetype];
       };
 
       soap = {
@@ -105,6 +105,11 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
         configureFlags = ["--enable-mbstring"];
       };
 
+      gettext = {
+        configureFlags = ["--with-gettext=${gettext}"];
+        buildInputs = [gettext];
+      };
+
       /*
          php is build within this derivation in order to add the xdebug lines to the php.ini.
          So both Apache and command line php both use xdebug without having to configure anything.
diff --git a/pkgs/development/interpreters/php/fix.patch b/pkgs/development/interpreters/php/fix.patch
index 1cec8fea0fe..02f2c9c6c93 100644
--- a/pkgs/development/interpreters/php/fix.patch
+++ b/pkgs/development/interpreters/php/fix.patch
@@ -54,3 +54,25 @@
      if test -z `$APXS -q SYSCONFDIR`; then
        APACHE_HOOKS_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                         $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
+diff -rc php-5.3.18/configure php-5.3.18-new/configure
+*** php-5.3.18/configure	2012-10-17 18:29:10.000000000 +0200
+--- php-5.3.18-new/configure	2012-11-13 05:36:24.730136551 +0100
+***************
+*** 45113,45121 ****
+  
+  
+  if test "$PHP_GETTEXT" != "no"; then
+!   for i in $PHP_GETTEXT /usr/local /usr; do
+!     test -r $i/include/libintl.h && GETTEXT_DIR=$i && break
+!   done
+  
+    if test -z "$GETTEXT_DIR"; then
+      { echo "configure: error: Cannot locate header file libintl.h" 1>&2; exit 1; }
+--- 45113,45119 ----
+  
+  
+  if test "$PHP_GETTEXT" != "no"; then
+!   GETTEXT_DIR=$PHP_GETTEXT
+  
+    if test -z "$GETTEXT_DIR"; then
+      { echo "configure: error: Cannot locate header file libintl.h" 1>&2; exit 1; }
diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix
index f87e1e3810f..6fa27c23525 100644
--- a/pkgs/development/interpreters/python/2.6/default.nix
+++ b/pkgs/development/interpreters/python/2.6/default.nix
@@ -60,6 +60,8 @@ let
     postInstall =
       ''
         rm -rf "$out/lib/python${majorVersion}/test"
+        ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb
+        ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion}
       '';
 
     passthru = {
diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix
index 09860310541..7e28cdc1db7 100644
--- a/pkgs/development/interpreters/python/2.7/default.nix
+++ b/pkgs/development/interpreters/python/2.7/default.nix
@@ -74,6 +74,8 @@ let
     postInstall =
       ''
         rm -rf "$out/lib/python${majorVersion}/test"
+        ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb
+        ln -s $out/lib/python${majorVersion}/pdb.py $out/bin/pdb${majorVersion}
       '';
 
     passthru = {
diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix
index e8e343976bc..f4892f92b41 100644
--- a/pkgs/development/interpreters/python/wrapper.nix
+++ b/pkgs/development/interpreters/python/wrapper.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   unpackPhase = "true";
   installPhase = ''
     mkdir -p "$out/bin"
-    for prg in 2to3 idle pydoc python python-config python${python.majorVersion} python${python.majorVersion}-config smtpd.py; do
+    for prg in 2to3 idle pdb pdb${python.majorVersion} pydoc python python-config python${python.majorVersion} python${python.majorVersion}-config smtpd.py; do
       makeWrapper "$python/bin/$prg" "$out/bin/$prg" --suffix PYTHONPATH : "$PYTHONPATH"
     done
     ensureDir "$out/share"
diff --git a/pkgs/development/interpreters/spidermonkey/builder.sh b/pkgs/development/interpreters/spidermonkey/builder.sh
deleted file mode 100644
index 91110159665..00000000000
--- a/pkgs/development/interpreters/spidermonkey/builder.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-source $stdenv/setup
-
-set -e
-set -x
-
-tar zxf $src
-cd js/src
-
-
-# Extend Makefile to dump some of its variables we want to know.
-cat >> Makefile.ref <<EOF
-printlibraries :
-	@echo \$(LIBRARY) \$(SHARED_LIBRARY) > LIBRARIES
-
-printprograms :
-	@echo \$(PROGRAM) > PROGRAMS
-EOF
-
-MAKE="make -f Makefile.ref"
-
-$MAKE printlibraries
-$MAKE printprograms
-$MAKE
-
-mkdir -p $out
-mkdir -p $out/bin
-mkdir -p $out/lib
-
-# Install the binaries that have been created.
-install $(cat PROGRAMS) $out/bin
-install $(cat LIBRARIES) $out/lib
diff --git a/pkgs/development/interpreters/toolbus/default.nix b/pkgs/development/interpreters/toolbus/default.nix
deleted file mode 100644
index eda55b06963..00000000000
--- a/pkgs/development/interpreters/toolbus/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{javaAdapter ? false,
- jdk ? null,
-   stdenv, fetchurl, toolbuslib, atermjava, aterm, yacc, flex, tcltk} :
-
-stdenv.mkDerivation {
-   name = "toolbus-1.2.2";
-   builder = ./builder.sh;
-   src = fetchurl {
-            url = http://nixos.org/tarballs/toolbus-1.2.2.tar.gz;
-            md5 = "887349b097006c0883e1948797349a50";
-         };
-   java = if javaAdapter then true else false;
-   jdk = if javaAdapter then jdk else null;
-
-   inherit toolbuslib atermjava aterm yacc flex tcltk;
-   buildInputs = [toolbuslib atermjava aterm yacc flex jdk tcltk] ;
-}
diff --git a/pkgs/development/libraries/SDL_image/default.nix b/pkgs/development/libraries/SDL_image/default.nix
index 1ecb2f83082..8f0d59bc212 100644
--- a/pkgs/development/libraries/SDL_image/default.nix
+++ b/pkgs/development/libraries/SDL_image/default.nix
@@ -1,41 +1,27 @@
-{ stdenv, fetchhg, SDL, libpng, libjpeg, libtiff, libungif, libXpm, automake,
-  autoconf, pkgconfig }:
+{ stdenv, fetchurl, SDL, libpng, libjpeg, libtiff, libungif, libXpm }:
 
 stdenv.mkDerivation rec {
-  pname = "SDL_image";
-  version = "1.2.10-20110925";
+  name = "SDL_image-1.2.12";
 
-  name = "${pname}-${version}";
-
-  src = fetchhg {
-    url = http://hg.libsdl.org/SDL_image;
-    tag = "bb611e7cb1e5";
-    sha256 = "0003inlvvmlc2fyrzy01lwhhfb90ppsar2skaa7x6rhmpc71dakz";
+  src = fetchurl {
+    url = "http://www.libsdl.org/projects/SDL_image/release/${name}.tar.gz";
+    sha256 = "16an9slbb8ci7d89wakkmyfvp7c0cval8xw4hkg0842nhhlp540b";
   };
 
   buildInputs = [SDL libpng libjpeg libtiff libungif libXpm];
 
-  buildNativeInputs = [ automake autoconf pkgconfig ];
-
-  patches = [ ./jpeg-linux.diff ];
-
-  preConfigure = ''
-    ./autogen.sh
-    '';
-
   postInstall = ''
     sed -i -e 's,"SDL.h",<SDL/SDL.h>,' \
-    -e 's,"SDL_version.h",<SDL/SDL_version.h>,' \
-    -e 's,"begin_code.h",<SDL/begin_code.h>,' \
-    -e 's,"close_code.h",<SDL/close_code.h>,' \
+      -e 's,"SDL_version.h",<SDL/SDL_version.h>,' \
+      -e 's,"begin_code.h",<SDL/begin_code.h>,' \
+      -e 's,"close_code.h",<SDL/close_code.h>,' \
       $out/include/SDL/SDL_image.h
-
-    ln -sv $out/include/SDL/SDL_image.h $out/include/
+    ln -sv SDL/SDL_image.h $out/include/SDL_image.h
   '';
 
   meta = {
     description = "SDL image library";
-    homepage = http://www.libsdl.org/projects/SDL_image/;
+    homepage = "http://www.libsdl.org/projects/SDL_image/";
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/SDL_image/jpeg-linux.diff b/pkgs/development/libraries/SDL_image/jpeg-linux.diff
deleted file mode 100644
index fd4cdf7f7a4..00000000000
--- a/pkgs/development/libraries/SDL_image/jpeg-linux.diff
+++ /dev/null
@@ -1,21 +0,0 @@
-# HG changeset patch
-# User Yury G. Kudryashov <urkud@ya.ru>
-# Date 1316994786 -14400
-# Node ID 4c3cd9a4b0602c45c11ec62bcc1f5562ea071d70
-# Parent  bb611e7cb1e58cc37a6773a22a15c74b55e3d267
-Fix compilation on Linux
-
-Submitted upstream, see http://bugzilla.libsdl.org/show_bug.cgi?id=1179
-
-diff -r bb611e7cb1e5 -r 4c3cd9a4b060 IMG_jpg.c
---- a/IMG_jpg.c	Thu Aug 25 02:24:35 2011 -0400
-+++ b/IMG_jpg.c	Mon Sep 26 03:53:06 2011 +0400
-@@ -34,7 +34,7 @@
- 
- #include <jpeglib.h>
- 
--#if JPEG_LIB_VERSION >= 80
-+#ifdef JPEG_TRUE /* MinGW version of jpeg-8.x renamed TRUE to JPEG_TRUE etc. */
- 	typedef JPEG_boolean boolean;
- 	#define TRUE JPEG_TRUE
- 	#define FALSE JPEG_FALSE
diff --git a/pkgs/development/libraries/boost/1.52.nix b/pkgs/development/libraries/boost/1.52.nix
index 0de11aaed87..367c2426b78 100644
--- a/pkgs/development/libraries/boost/1.52.nix
+++ b/pkgs/development/libraries/boost/1.52.nix
@@ -63,7 +63,12 @@ stdenv.mkDerivation {
 
   buildPhase = "./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${layout} variant=${variant} threading=${threading} link=${link} ${cflags} install";
 
-  installPhase = ":";
+  # normal install does not install bjam, this is a separate step
+  installPhase = ''
+    cd tools/build/v2
+    sh bootstrap.sh
+    ./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${layout} variant=${variant} threading=${threading} link=${link} ${cflags} install
+  '';
 
   crossAttrs = rec {
     buildInputs = [ expat.hostDrv zlib.hostDrv bzip2.hostDrv ];
diff --git a/pkgs/development/libraries/cil-aterm/atermprinter.patch b/pkgs/development/libraries/cil-aterm/atermprinter.patch
deleted file mode 100644
index 16761898e19..00000000000
--- a/pkgs/development/libraries/cil-aterm/atermprinter.patch
+++ /dev/null
@@ -1,515 +0,0 @@
-diff -urN cil.orig/Makefile.cil.in cil/Makefile.cil.in
---- cil.orig/Makefile.cil.in	2005-06-01 14:37:13.000000000 +0200
-+++ cil/Makefile.cil.in	2005-11-21 10:45:48.000000000 +0100
-@@ -75,6 +75,7 @@
-               canonicalize heap oneret partial simplemem simplify \
- 	      dataslicing \
-               testcil \
-+	      atermprinter \
- 	      $(CILLY_FEATURES) \
- 	      feature_config
- # ww: we don't want "maincil" in an external cil library (cil.cma),
-diff -urN cil.orig/src/ext/atermprinter.ml cil/src/ext/atermprinter.ml
---- cil.orig/src/ext/atermprinter.ml	1970-01-01 01:00:00.000000000 +0100
-+++ cil/src/ext/atermprinter.ml	2005-11-21 11:14:44.000000000 +0100
-@@ -0,0 +1,489 @@
-+open Cil
-+open Pretty
-+open List
-+open String
-+open Printf
-+module S = String 
-+module E = Errormsg
-+module H = Hashtbl
-+module IH = Inthash
-+
-+let outputfilename = ref "cil.aterm"
-+let trace p = eprintf "%s" (p ^ "\n") ; flush stderr
-+let invalidStmt = mkStmt (Instr [])
-+let id = fun x -> x 
-+let compose f g x = (f (g x))
-+let (@) = compose
-+let pSpace            = text " "
-+let foldl1 op ls      = match ls with
-+			| (x::xs) -> fold_left op x xs
-+                        | _       -> raise (Invalid_argument "foldl1 should not take an empty list")
-+let pPacked d l r     = l ++ d ++ r
-+let pParens d         = pPacked d (text "(") (text ")")
-+let pBraced d         = pPacked d (text "{") (text "}")
-+let pSquared d        = pPacked d (text "[") (text "]")
-+let pSpaced d         = pPacked d pSpace pSpace
-+let pBool b           = (pSpaced @ text @ S.capitalize @ string_of_bool) b
-+let pInt64 i          = text (Int64.to_string i)
-+let pSeqSep sep xs    = match xs with
-+			| [] -> nil
-+                        | _  -> foldl1 (pPacked sep) xs
-+let pCommaSep xs      = pSeqSep (text ",") xs
-+let pPair (a,b)       = (pSpaced @ pParens @ pCommaSep) [a;b]
-+let pTriplet (a,b,c)  = (pSpaced @ pParens @ pCommaSep) [a;b;c]
-+let pSemiColSep xs    = pSeqSep (text ";") xs
-+let pTriple f g h (a,b,c) = (f a, g b, h c)
-+let pDouble f g (a,b) = (f a, g b)
-+let pOption p m  = match m with
-+	         | None   -> text "None()"
-+                 | Some v -> text "Some" ++ pParens( p v )
-+let pSpParens = pSpaced @ pParens
-+let pQuoted str = pPacked (text(escaped str)) (text "\"") (text "\"")
-+let pList   = pSpaced @ pSquared @ pCommaSep
-+let pRecord = pSpaced @ pBraced  @ pCommaSep
-+
-+class atermPrinter : cilPrinter  = 
-+object (self)
-+  inherit defaultCilPrinterClass
-+
-+  (* printing variable declarations; just store the varinfo *)
-+  method pVDecl () (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pVDecl"
-+                                         ; self#pp_varinfo vinfo
-+  (* printing variable uses; same as declarations; store the varinfo *)
-+  method pVar (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pVar" ;
-+    self#pp_varinfo vinfo
-+
-+  method pLval () ((lh, off):lval) : doc = if !E.verboseFlag then trace "pLvalue" ;
-+    text "Lvalue" ++ (pParens @ pCommaSep) [ self#pp_lhost lh ; self#pOffset nil off ] 
-+
-+  (** we are not using the first argument which represents the base from which we are
-+      offsetting, because we just want to generate a tree view of the CIL tree. For a tree view
-+      this base case is not necessary **)
-+  method pOffset (d:doc) (o:offset) : doc = if !E.verboseFlag then trace "pOffset" ;
-+    match o with
-+    | NoOffset           -> text "Offset_NoOffset() "
-+    | Field (finfo, off) -> text "Offset_Field" ++ (pParens @ pCommaSep) [ (self#pFieldDecl ()) finfo ; self#pOffset nil off ]
-+    | Index (e, off)     -> text "Offset_Index" ++ (pParens @ pCommaSep) [ self#pExp () e ; self#pOffset nil off ]
-+  
-+  (*** INSTRUCTIONS ***)
-+  method pInstr () (i:instr) : doc = if !E.verboseFlag then trace "pInstr" ;
-+    match i with
-+    | Set (lv,e,l) -> text "Set" ++ (pParens @ pCommaSep) [ 
-+	self#pLval () lv ;
-+	self#pExp () e ;
-+	self#pp_location l ]
-+    | Call (olv,e, elst, l) -> text "Call" ++ (pParens @ pCommaSep) [
-+	pOption (self#pLval ()) olv ;
-+	self#pExp () e ;
-+	pList (map (self#pExp ()) elst) ;
-+	self#pp_location l]
-+    | Asm (attr, slst1, slvlst, selst, slst2, l) -> text "Asm" ++ (pParens @ pCommaSep) [
-+	self#pAttrs () attr ;
-+	(pList  @ map pQuoted) slst1 ;
-+	pList (map (pPair @ pDouble pQuoted (self#pLval ())) slvlst) ;
-+	pList (map (pPair @ pDouble pQuoted (self#pExp ())) selst) ;
-+	(pList  @ map pQuoted) slst2 ;
-+	self#pp_location l]
-+
-+  (* a statement itself is just a record of info about the statement
-+     the different kinds of statements can be found at pStmtKind *) 
-+  method pStmt () (s:stmt) : doc = if !E.verboseFlag then trace "pStmt" ;
-+    self#pp_stmtinfo s
-+  method dStmt (out:out_channel) (i:int) (s:stmt) : unit = fprint out i (self#pStmt () s)
-+
-+  (* a block is just a record of info about the block of interest.
-+     the real block is a stmtkind (see pStmtKind) *)
-+  method dBlock (out:out_channel) (i:int) (b:block) : unit = fprint out i (self#pBlock () b)
-+  method pBlock () (b:block) : doc = if !E.verboseFlag then trace "pBlock" ;
-+    self#pp_blockinfo b
-+
-+  (*** GLOBALS ***)
-+  method pGlobal () (g:global) : doc = if !E.verboseFlag then trace "pGlobal" ;      (* global (vars, types, etc.) *)
-+    match g with 
-+    | GType        (typ , l) -> text "GlobalType" ++ (pParens @ pCommaSep) [ self#pp_typeinfo typ ; self#pp_location l ]
-+    | GCompTag     (comp, l) -> text "GlobalCompTag" ++ (pParens @ pCommaSep) [ self#pp_compinfo comp ; self#pp_location l ]
-+    | GCompTagDecl (comp, l) -> text "GlobalCompTagDecl" ++ (pParens @ pCommaSep) [ self#pp_compinfo comp ; self#pp_location l ]
-+    | GEnumTag     (enum, l) -> text "GlobalEnumTag" ++ (pParens @ pCommaSep) [ self#pp_enuminfo enum ; self#pp_location l ]
-+    | GEnumTagDecl (enum, l) -> text "GlobalEnumTagDecl" ++ (pParens @ pCommaSep) [ self#pp_enuminfo enum ; self#pp_location l ]
-+    | GVarDecl     (vinf, l) -> text "GlobalVarDecl" ++ (pParens @ pCommaSep) [ self#pp_varinfo vinf ; self#pp_location l ]
-+    | GVar   (vinf, iinf, l) -> text "GlobalVar" ++ (pParens @ pCommaSep) [ self#pp_varinfo vinf ; self#pp_initinfo iinf ; self#pp_location l ]
-+    | GFun         (fdec, l) -> text "GlobalFun" ++ (pParens @ pCommaSep) [ self#pp_fundec fdec ; self#pp_location l ]
-+    | GAsm         (str , l) -> text "GlobalAsm"  ++ (pParens @ pCommaSep) [ pQuoted str ; self#pp_location l ]
-+    | GPragma      (attr, l) -> text "GlobalPragma" ++ (pParens @ pCommaSep) [ (fun (doc1, bool1) -> doc1) (self#pAttr attr)
-+                                                        ; self#pp_location l
-+                                        ]
-+    | GText str -> text "GlobalText" ++ pParens( pQuoted str)
-+  method dGlobal (out:out_channel) (g:global) : unit = fprint out 80 (self#pGlobal () g)
-+
-+  (* a fielddecl is just a record containing info about the decl *)
-+  method pFieldDecl () : fieldinfo -> doc = if !E.verboseFlag then trace "pFieldDecl" ;
-+    self#pp_fieldinfo
-+
-+  (*** TYPES ***)
-+  method pType (nameOpt: doc option) (* Whether we are declaring a name or 
-+                                      * we are just printing a type *)
-+               () (t:typ) =  if !E.verboseFlag then trace "pType" ;     (* use of some type *)
-+    match t with
-+    | TVoid  attr         -> text "TVoid" ++ pParens( self#pAttrs () attr)
-+    | TInt   (ikin, attr) -> text "TInt" ++ (pParens @ pCommaSep) [ self#pp_ikind ikin ; self#pAttrs () attr ]
-+    | TFloat (fkin, attr) -> text "TFloat" ++ (pParens @ pCommaSep) [ self#pp_fkind fkin ; self#pAttrs () attr ]
-+    | TPtr   (t   , attr) -> text "TPtr" ++ (pParens @ pCommaSep) [ self#pType None () t ; self#pAttrs () attr ]
-+    | TArray (t, e, attr) -> text "TArray" ++ (pParens @ pCommaSep) [ self#pType None () t ;
-+	pOption (self#pExp ()) e ; self#pAttrs () attr ]
-+    | TFun (t, olst, b, attr) -> text "TFun" ++ (pParens @ pCommaSep) [ 
-+        self#pType None () t ;
-+	pOption (pList @ (map ( pTriplet
-+                              @ (pTriple (pQuoted) (self#pType None ()) (self#pAttrs ()))
-+                              )     
-+                         )
-+                )
-+                olst ;
-+	pBool b ;
-+	self#pAttrs () attr]
-+    | TNamed (tinfo, attr) -> text "TNamed" ++ (pParens @ pCommaSep) [ self#pp_typeinfo tinfo ; self#pAttrs () attr ]
-+    | TComp  (cinfo, attr) -> text "TComp" ++ (pParens @ pCommaSep) [ (text @ string_of_int) cinfo.ckey ;
-+                                                           self#pAttrs () attr]
-+    | TEnum  (einfo, attr) -> text "TEnum" ++ (pParens @ pCommaSep) [ self#pp_enuminfo einfo ; self#pAttrs () attr ]
-+    | TBuiltin_va_list (attr) -> text "TBuiltin_va_list" ++ pParens( self#pAttrs () attr)
-+  
-+  (*** ATTRIBUTES ***)
-+  method pAttr (Attr(an, args) : attribute) : (doc * bool) = if !E.verboseFlag then trace "pAttr" ;
-+    ( text "Attr" ++ (pParens @ pCommaSep) [ pQuoted an ; pList (map (self#pAttrParam ()) args) ]
-+    , false
-+    )
-+
-+  method pAttrParam () (p:attrparam) : doc = if !E.verboseFlag then trace "pAttrParam" ;
-+    match p with
-+    | AInt      (i)               -> text "AInt" ++ pParens( pQuoted (string_of_int i))
-+    | AStr      (s)               -> text "AStr" ++ pParens( pQuoted s)
-+    | ACons     (s, args)         -> text "ACons" ++ (pParens @ pCommaSep) [ pQuoted s ; pList (map (self#pAttrParam ()) args) ]
-+    | ASizeOf   (t)               -> text "ASizeOf" ++ pParens( self#pType None () t)
-+    | ASizeOfE  (arg)             -> text "ASizeOfE" ++ pParens( self#pAttrParam () arg)
-+    | ASizeOfS  (tsig)            -> text "ASizeOfS" ++ pParens( self#pp_typsig tsig)
-+    | AAlignOf  (t)               -> text "AAlignOf" ++ pParens( self#pType None () t)
-+    | AAlignOfE (arg)             -> text "AAlignOfE" ++ pParens( self#pAttrParam () arg)
-+    | AAlignOfS (tsig)            -> text "AAlignOfS" ++ pParens( self#pp_typsig tsig)
-+    | AUnOp     (uop, arg)        -> text "AUnOp" ++ (pParens @ pCommaSep) [ self#pp_unop uop ; self#pAttrParam () arg ]
-+    | ABinOp    (bop, arg1, arg2) -> text "ABinOp" ++ (pParens @ pCommaSep) [ self#pp_binop bop 
-+                                                                ; self#pAttrParam () arg1
-+                                                                ; self#pAttrParam () arg2 ]
-+    | ADot      (arg, s)          -> text "ADot" ++ (pParens @ pCommaSep) [ self#pAttrParam () arg ; pQuoted s]
-+
-+  method pAttrs () (attr:attributes) : doc = if !E.verboseFlag then trace "pAttrs" ;
-+    text "Attributes" ++ pParens( 
-+               pList (map (fst @ self#pAttr) attr)
-+              )
-+  
-+  (*** LABELS ***)
-+  method pLabel () (l:label) : doc = if !E.verboseFlag then trace "pLabel" ;
-+    match l with
-+    | Label   (s,l,b) -> text "Label" ++ (pParens @ pCommaSep) [
-+	pQuoted s ;
-+	self#pp_location l ;
-+	pBool b ]
-+    | Case    (e,l)   -> text "Case" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pp_location l ]
-+    | Default (l)     -> text "Default" ++ pParens( self#pp_location l)
-+
-+  (*** printing out locations as line directives is not necessary
-+       because we are printing the tree structure and locations are
-+       present everywhere ***)
-+  method pLineDirective : ?forcefile:bool -> location -> doc = fun ?forcefile _ -> nil
-+
-+  (*** STATEMENT KINDS ***)
-+  method pStmtKind s () (sk:stmtkind) : doc = if !E.verboseFlag then trace "pStmtKind" ;
-+    match sk with
-+    | Instr      (ilst)          -> text "Instr" ++ pParens( pList (map (self#pInstr ()) ilst))
-+    | Return     (oe, l)         -> text "Return" ++ (pParens @ pCommaSep) [ pOption (self#pExp ()) oe ; self#pp_location l ]
-+    | Goto       (stmtref, l)    -> text "Goto" ++ (pParens @ pCommaSep) [ self#pStmt () !stmtref ; self#pp_location l ]
-+    | Break      (l)             -> text "Break" ++ pParens( self#pp_location l)
-+    | Continue   (l)             -> text "Continue" ++ pParens( self#pp_location l)
-+    | If         (e, b1, b2, l)  -> text "If" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pBlock () b1 ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+    | Switch     (e,b,stlst,l)   -> text "Switch" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pBlock () b ;
-+	pList (map (self#pStmt ()) stlst) ;
-+	self#pp_location l ]
-+    | Loop       (b,l,os1, os2)  -> text "Loop" ++ (pParens @ pCommaSep) [
-+	self#pBlock () b ;
-+	self#pp_location l ;
-+	pOption (self#pStmt ()) os1 ;
-+	pOption (self#pStmt ()) os2 ]
-+    | Block      (b)             -> text "Block" ++ pParens( self#pBlock () b)
-+    | TryFinally (b1,b2,l)       -> text "TryFinally" ++ (pParens @ pCommaSep) [ 
-+	self#pBlock () b1 ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+    | TryExcept  (b1, pr, b2, l) -> text "TryExcept" ++ (pParens @ pCommaSep) [ 
-+	self#pBlock () b1 ;
-+	(  pPair
-+         @ pDouble (pList @ map (self#pInstr ())) 
-+                   (self#pExp ())
-+        ) pr ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+
-+  (*** EXPRESSIONS ***)
-+
-+  method pExp () (e:exp) : doc = if !E.verboseFlag then trace "pExp" ;
-+    match e with
-+    | Const     (c)              -> text "Constant" ++ pParens( self#pp_constant c)
-+    | Lval      (lh,off)         -> text "Lvalue" ++ (pParens @ pCommaSep)  [self#pp_lhost lh ; self#pOffset nil off ]
-+    | SizeOf    (t)              -> text "SizeOfType" ++ pParens( self#pType None () t)
-+    | SizeOfE   (e)              -> text "SizeOfExp" ++ pParens( self#pExp () e)
-+    | SizeOfStr (s)              -> text "SizeOfString" ++ pParens( pQuoted s)
-+    | AlignOf   (t)              -> text "AlignOfType" ++ pParens( self#pType None () t)
-+    | AlignOfE  (e)              -> text "AlignOfExp" ++ pParens( self#pExp () e)
-+    | UnOp      (uop, e, t)      -> text "UnOp" ++ (pParens @ pCommaSep) [ 
-+					self#pp_unop uop ; 
-+                                        self#pExp () e ; 
-+	                                self#pType None () t ]
-+    | BinOp     (bop, e1, e2, t) -> text "BinOp" ++ (pParens @ pCommaSep) [ 
-+                                        self#pp_binop bop ;
-+                                        self#pExp () e1 ;
-+                                        self#pExp () e2 ;
-+                                        self#pType None () t ]
-+    | CastE     (t,e)            -> text "Cast" ++ (pParens @ pCommaSep) [ self#pType None () t ; self#pExp () e]
-+    | AddrOf    (lv)             -> text "AddressOf" ++ pParens( self#pLval () lv)
-+    | StartOf   (lv)             -> text "StartOf" ++ pParens( self#pLval () lv)
-+
-+  (*** INITIALIZERS ***)
-+  method pInit () (i:init) : doc = if !E.verboseFlag then trace "pInit" ;
-+    match i with
-+    | SingleInit   (e)        -> text "SingleInit" ++ pParens( self#pExp () e)
-+    | CompoundInit (t, oilst) -> text "CompoundInit" ++ (pParens @ pCommaSep) [ self#pType None () t ;
-+				    pList (map (  pPair
-+			                        @ pDouble (self#pOffset nil) (self#pInit ())
-+			                       ) 
-+			                       oilst
-+			                  ) ]
-+  method dInit (out:out_channel) (i:int) (init1:init) : unit = fprint out i (self#pInit () init1)
-+
-+  (*** auxiliary methods ***)
-+  (* Mart: hmmmm *)
-+  method private pp_storage (s:storage) : doc =
-+    let tok = match s with
-+	      | NoStorage -> "NoStorage"
-+	      | Static    -> "Static"
-+	      | Register  -> "Register"
-+	      | Extern	  -> "Extern"
-+    in pQuoted ("Storage" ^ tok)
-+
-+  method private pp_typeinfo (tinfo:typeinfo) : doc = if !E.verboseFlag then trace "pp_typeinfo" ;
-+    text "Typeinfo" ++ (pParens @ pCommaSep) [   
-+    pQuoted tinfo.tname ;
-+    self#pType None () tinfo.ttype ;
-+    pBool tinfo.treferenced ]
-+
-+  method private pp_fieldinfo (finfo:fieldinfo) : doc = if !E.verboseFlag then trace "pp_fieldinfo" ;
-+    text "Fieldinfo" ++ (pParens @ pCommaSep) [ 
-+    pQuoted finfo.fname ;
-+    self#pType None () finfo.ftype ;
-+    pOption (pQuoted @ string_of_int) finfo.fbitfield ;
-+    self#pAttrs () finfo.fattr ;
-+    self#pp_location finfo.floc ]
-+
-+  method private pp_compinfo (cinfo:compinfo) : doc = if !E.verboseFlag then trace "pp_compinfo" ;
-+    text "Compinfo" ++ (pParens @ pCommaSep) [ 
-+    pBool cinfo.cstruct ;
-+    pQuoted cinfo.cname ;
-+    text (string_of_int cinfo.ckey) ;
-+    pList (map (self#pFieldDecl ()) cinfo.cfields) ;
-+    self#pAttrs () cinfo.cattr ;
-+    pBool cinfo.cdefined ;
-+    pBool cinfo.creferenced ]
-+
-+  method private pp_enuminfo (einfo:enuminfo) : doc = if !E.verboseFlag then trace "pp_enuminfo" ;
-+    text "Enuminfo" ++ (pParens @ pCommaSep) [
-+    pQuoted einfo.ename ;
-+    pList (map (  pTriplet
-+                @ (pTriple pQuoted (self#pExp ()) self#pp_location)
-+               )
-+               einfo.eitems) ;
-+    self#pAttrs () einfo.eattr ;
-+    pBool einfo.ereferenced ]
-+
-+  method private pp_location (loc:location) : doc = if !E.verboseFlag then trace "pp_location" ;
-+    text "Location" ++ (pParens @ pCommaSep) [
-+    text (string_of_int loc.line) ;
-+    pQuoted loc.file ;
-+    text (string_of_int loc.byte) ]
-+
-+  method private pp_varinfo (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pp_varinfo" ;
-+    text "Varinfo" ++ (pParens @ pCommaSep) [
-+    pQuoted vinfo.vname ;
-+    self#pType None () vinfo.vtype ;
-+    self#pAttrs () vinfo.vattr ;
-+    self#pp_storage vinfo.vstorage ;
-+    pBool vinfo.vglob ;
-+    pBool vinfo.vinline ;
-+    self#pp_location vinfo.vdecl ;
-+    text (string_of_int vinfo.vid) ;
-+    pBool vinfo.vaddrof ;
-+    pBool vinfo.vreferenced ]
-+
-+  method private pp_initinfo (iinfo:initinfo) : doc = if !E.verboseFlag then trace "pp_initinfo" ;
-+    text "Initinfo" ++ pParens( 
-+    pOption (self#pInit ()) iinfo.init)
-+
-+  method private pp_fundec (fdec:fundec) : doc = if !E.verboseFlag then trace "pp_fundec" ;
-+    text "Fundec" ++ (pParens @ pCommaSep) [
-+    self#pp_varinfo fdec.svar ;
-+    pList (map self#pp_varinfo fdec.sformals) ;
-+    pList (map self#pp_varinfo fdec.slocals) ;
-+    text (string_of_int fdec.smaxid) ;
-+    self#pBlock () fdec.sbody ;
-+    pOption (pSpParens @ text @ string_of_int) fdec.smaxstmtid ;
-+    pList (map (self#pStmt ()) fdec.sallstmts) ]
-+
-+  method private pp_ikind (ikin:ikind) : doc =
-+    let tok = match ikin with
-+              | IChar  -> "IChar"
-+	      | ISChar -> "ISChar"
-+	      | IUChar -> "IUChar"
-+	      | IInt   -> "IInt"
-+	      | IUInt  -> "IUInt"
-+	      | IShort -> "IShort"
-+	      | IUShort -> "IUShort"
-+	      | ILong  -> "ILong"
-+	      | IULong -> "IULong"
-+	      | ILongLong -> "ILongLong"
-+	      | IULongLong -> "IULongLong"
-+    in  pQuoted ("Ikind" ^ tok)
-+
-+  method private pp_fkind (fkin:fkind) : doc =
-+    let tok = match fkin with
-+	      | FFloat -> "FFloat"
-+	      | FDouble -> "FDouble"
-+	      | FLongDouble -> "FLongDouble"
-+    in pQuoted ("Fkind" ^ tok)
-+
-+  method private pp_typsig (tsig:typsig) : doc = if !E.verboseFlag then trace "pp_typsig" ;
-+    match tsig with
-+    | TSArray (tsig2, oe, attr)         -> text "TSArray" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      pOption pInt64 oe ;
-+					      self#pAttrs () attr ]
-+    | TSPtr   (tsig2, attr)             -> text "TSPtr" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      self#pAttrs () attr ]	
-+    | TSComp  (b, s, attr)              -> text "TSComp" ++ (pParens @ pCommaSep) [
-+					      pBool b ;
-+					      pQuoted s ;
-+					      self#pAttrs () attr ]
-+    | TSFun   (tsig2, tsiglst, b, attr) -> text "TSFun" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      pList (map self#pp_typsig tsiglst) ;
-+					      pBool b ;
-+					      self#pAttrs () attr ]
-+    | TSEnum  (s, attr)                 -> text "TSEnum" ++ (pParens @ pCommaSep) [
-+					      pQuoted s ;
-+					      self#pAttrs () attr ]
-+    | TSBase  (t)                       -> text "TSBase" ++ pParens( self#pType None () t)
-+     
-+
-+  method private pp_unop (uop:unop) : doc =
-+    let tok = match uop with
-+	      | Neg -> "Neg"
-+	      | BNot -> "BNot"
-+	      | LNot -> "LNot"
-+    in pQuoted ("UnOp" ^ tok)
-+
-+  method private pp_binop (bop:binop) : doc = 
-+    let tok = match bop with
-+              | PlusA -> "PlusA"
-+	      | PlusPI -> "PlusPI"
-+	      | IndexPI -> "IndexPI"
-+	      | MinusA -> "MinusA"
-+	      | MinusPI -> "MinusPI"
-+	      | MinusPP -> "MinusPP"
-+	      | Mult -> "Mult"
-+	      | Div -> "Div"
-+	      | Mod -> "Mod"
-+	      | Shiftlt -> "Shiftlt"
-+	      | Shiftrt -> "Shiftrt"
-+	      | Lt -> "Lt"
-+	      | Gt -> "Gt"
-+	      | Le -> "Le"
-+	      | Ge -> "Ge"
-+	      | Eq -> "Eq"
-+	      | Ne -> "Ne"
-+	      | BAnd -> "BAnd"
-+	      | BXor -> "BXor"
-+	      | BOr -> "BOr"
-+	      | LAnd -> "LAnd"
-+	      | LOr -> "LOr"
-+    in pQuoted ("BinOp" ^ tok )
-+
-+  method private pp_constant (c:constant) : doc = if !E.verboseFlag then trace "pp_constant" ;
-+    match c with
-+    | CInt64 (i, ikin, os) -> text "CInt64" ++ (pParens @ pCommaSep) [  
-+                                  pQuoted (Int64.to_string i)  ;
-+				  self#pp_ikind ikin ;
-+				  pOption pQuoted os ]
-+    | CStr   (s)           -> text "CStr" ++ pParens( pQuoted s)
-+    | CWStr  (ilist)       -> text "CWStr" ++ pParens( pList (map ( text @ Int64.to_string) ilist))
-+    | CChr   (c)           -> text "CChr" ++ pParens( text "\"" ++ text (Char.escaped c) ++ text "\"")
-+    | CReal  (f, fkin, os) -> text "CReal" ++ (pParens @ pCommaSep) [  pQuoted (sprintf "%f0" f) ;
-+				  self#pp_fkind fkin ;
-+				  pOption pQuoted os ]
-+
-+  method private pp_lhost (lh:lhost) : doc = if !E.verboseFlag then trace "pp_lhost" ;
-+    match lh with
-+    | Var (vinfo) -> text "Var" ++ pParens( self#pp_varinfo vinfo)
-+    | Mem (e)     -> text "Mem" ++ pParens( self#pExp () e)
-+
-+  method private pp_blockinfo (b:block) : doc = if !E.verboseFlag then trace "pp_blockinfo" ;
-+    text "Block" ++ (pParens @ pCommaSep) [
-+    self#pAttrs () b.battrs ;
-+    pList (map (self#pStmt ()) b.bstmts) ]
-+
-+  method private pp_stmtinfo (sinfo:stmt) : doc = if !E.verboseFlag then trace "pp_stmtinfo" ;
-+    text "Stmt" ++ (pParens @ pCommaSep) [
-+    pList (map (self#pLabel ()) sinfo.labels) ;
-+    self#pStmtKind invalidStmt () sinfo.skind ;
-+    text (string_of_int sinfo.sid) ;
-+    pList (map self#pp_stmtinfo sinfo.succs) ;
-+    pList (map self#pp_stmtinfo sinfo.preds) ]
-+end
-+
-+let ppFile (f:file) (pp:cilPrinter) : doc = if !E.verboseFlag then trace "ppFile" ;
-+  text "File" ++ (pParens @ pCommaSep) [ 
-+  pQuoted f.fileName ;
-+  pList (map (pp#pGlobal ()) f.globals) ]
-+
-+(* we need a different more flexible mapGlobals
-+   we only visit globals and not global init;
-+   use mapGlobinits *)
-+let mapGlobals2 (fl: file) 
-+                (doone: global -> 'a) : 'a list = 
-+  List.map doone fl.globals
-+
-+(* We redefine dumpFile because we don't want a header in our
-+   file telling us it was generated with CIL blabla *)
-+let dumpFile (pp: cilPrinter) (out : out_channel) file =
-+  printDepth := 99999;  
-+  Pretty.fastMode := true;
-+  if !E.verboseFlag then ignore (E.log "printing file %s\n" file.fileName);
-+  let file_doc = ppFile file pp in
-+  fprint out 80 file_doc;
-+  flush out
-+
-+let feature : featureDescr =
-+  { fd_name = "printaterm";
-+    fd_enabled = ref false;
-+    fd_description = "printing the current CIL AST to an ATerm";
-+    fd_extraopt = [("--atermfile", Arg.String (fun s -> outputfilename := s), "=<filename>: writes the ATerm to <filename>");];
-+    fd_doit = (function (f: file) ->        
-+        let channel = open_out !outputfilename in 
-+        let printer = new atermPrinter
-+	in dumpFile printer channel f
-+         ; close_out channel
-+    );
-+    fd_post_check = false;
-+  }
-diff -urN cil.orig/src/maincil.ml cil/src/maincil.ml
---- cil.orig/src/maincil.ml	2005-06-01 14:37:13.000000000 +0200
-+++ cil/src/maincil.ml	2005-11-21 10:45:34.000000000 +0100
-@@ -105,6 +105,7 @@
-     Simplemem.feature;
-     Simplify.feature;
-     Dataslicing.feature;
-+    Atermprinter.feature;
-   ] 
-   @ Feature_config.features 
- 
diff --git a/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.3.nix b/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.3.nix
deleted file mode 100644
index 9df14593019..00000000000
--- a/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.3.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{ stdenv, fetchurl, ocaml, perl }:
-
-stdenv.mkDerivation {
-  name    = "cil-aterm-1.3.3";
-  src     = fetchurl {
-		url = http://manju.cs.berkeley.edu/cil/distrib/cil-1.3.3.tar.gz;
-                md5 = "dafd350c154990728efb35a7073ca81a";
-            };
-  patches = [./atermprinter.patch];
-  buildInputs = [ ocaml perl ];
-  inherit ocaml perl;
-}  
diff --git a/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.4.patch b/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.4.patch
deleted file mode 100644
index 13fecc80171..00000000000
--- a/pkgs/development/libraries/cil-aterm/cil-aterm-1.3.4.patch
+++ /dev/null
@@ -1,593 +0,0 @@
-diff -urN cil-old/bin/CilConfig.pm.in cil-new/bin/CilConfig.pm.in
---- cil-old/bin/CilConfig.pm.in	2005-11-22 06:34:41.000000000 +0100
-+++ cil-new/bin/CilConfig.pm.in	2006-09-13 13:52:44.000000000 +0200
-@@ -1,7 +1,7 @@
- 
--use lib "@CILHOME@/lib"; # The libraries are in the lib directory
-+use lib "@prefix@/lib"; # The libraries are in the lib directory
- $::archos    = "@ARCHOS@";
- $::cc        = "@CC@";
--$::cilhome   = "@CILHOME@";
-+$::cilhome   = "@prefix@";
- $::default_mode = "@DEFAULT_CIL_MODE@";
- 
-diff -urN cil-old/Makefile.cil.in cil-new/Makefile.cil.in
---- cil-old/Makefile.cil.in	2005-11-22 06:34:41.000000000 +0100
-+++ cil-new/Makefile.cil.in	2006-09-13 13:52:09.000000000 +0200
-@@ -78,6 +78,7 @@
-               canonicalize heap oneret partial simplemem simplify \
- 	      dataslicing \
-               testcil \
-+              atermprinter \
- 	      $(CILLY_FEATURES) \
- 	      feature_config
- # ww: we don't want "maincil" in an external cil library (cil.cma),
-@@ -536,6 +537,8 @@
- 
- prefix = @prefix@
- exec_prefix = @exec_prefix@
-+bindir = @prefix@/bin
-+objdir = @prefix@/$(OBJDIR)
- libdir = @libdir@
- pkglibdir = $(libdir)/cil
- datadir = @datadir@
-@@ -554,6 +557,11 @@
- 	$(INSTALL_DATA) $(install_lib) $(DESTDIR)$(pkglibdir)
- 	$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
- 	$(INSTALL_DATA) $(addprefix lib/, $(filter %.pm, $(DISTRIB_LIB))) $(DESTDIR)$(pkgdatadir)
-+	$(INSTALL) -d $(bindir)
-+	$(INSTALL) -d $(objdir)
-+	$(INSTALL) bin/* $(bindir)
-+	$(INSTALL_DATA) lib/* $(bindir)
-+	$(INSTALL) $(OBJDIR)/*.exe $(objdir)
- 
- cil.spec: cil.spec.in
- 	./config.status $@
-diff -urN cil-old/ocamlutil/Makefile.ocaml cil-new/ocamlutil/Makefile.ocaml
---- cil-old/ocamlutil/Makefile.ocaml	2005-11-22 06:34:41.000000000 +0100
-+++ cil-new/ocamlutil/Makefile.ocaml	2006-09-13 13:52:09.000000000 +0200
-@@ -135,6 +135,7 @@
- 
- CAMLFLAGS    =$(OPT_FLAGS) -I $(OBJDIR)
- 
-+
- # sm: two styles for echoing compilation progress:
- #   style 1, by George:
- #     - print English descriptions of what's happening
-@@ -152,20 +153,12 @@
- #   $(AT)          - put this before shell commands which are to be executed,
- #                    and also printed in style 2
- #   $(ECHO)        - use in place of '@' for things not printed in either style
--ifdef ECHOSTYLE_SCOTT
--  # 'true' silently consumes its arguments, whereas 'echo' prints them
--  NARRATIVE   := true           
--  COMMAND     := echo
--  AT          := 
--  ECHO        := @
--else
--  NARRATIVE   := echo
--  COMMAND     := true
--  # change these next two definitions to <empty> to echo everything,
--  # or leave as @ to suppress echoing
--  AT          := @
--  ECHO        := @
--endif
-+ 
-+# 'true' silently consumes its arguments, whereas 'echo' prints them
-+NARRATIVE   := true           
-+COMMAND     := echo
-+AT          := 
-+ECHO        := @
- 
- ifdef PREPROC
-   COMPILEFLAGS += -pp "$(PREPROC)$"
-@@ -361,4 +354,4 @@
- endif
- 
- listmodules: 
--	@echo $(MODULES)
-\ No newline at end of file
-+	@echo $(MODULES)
-diff -urN cil-old/src/ext/atermprinter.ml cil-new/src/ext/atermprinter.ml
---- cil-old/src/ext/atermprinter.ml	1970-01-01 01:00:00.000000000 +0100
-+++ cil-new/src/ext/atermprinter.ml	2006-09-13 13:52:09.000000000 +0200
-@@ -0,0 +1,488 @@
-+open Cil
-+open Pretty
-+open List
-+open String
-+open Printf
-+module S = String 
-+module E = Errormsg
-+module H = Hashtbl
-+module IH = Inthash
-+
-+let outputfilename = ref "cil.aterm"
-+let trace p = eprintf "%s" (p ^ "\n") ; flush stderr
-+let invalidStmt = mkStmt (Instr [])
-+let id = fun x -> x 
-+let compose f g x = (f (g x))
-+let (@) = compose
-+let pSpace            = text " "
-+let foldl1 op ls      = match ls with
-+			| (x::xs) -> fold_left op x xs
-+                        | _       -> raise (Invalid_argument "foldl1 should not take an empty list")
-+let pPacked d l r     = l ++ d ++ r
-+let pParens d         = pPacked d (text "(") (text ")")
-+let pBraced d         = pPacked d (text "{") (text "}")
-+let pSquared d        = pPacked d (text "[") (text "]")
-+let pSpaced d         = pPacked d pSpace pSpace
-+let pBool b           = (pSpaced @ text @ S.capitalize @ string_of_bool) b
-+let pInt64 i          = text (Int64.to_string i)
-+let pSeqSep sep xs    = match xs with
-+			| [] -> nil
-+                        | _  -> foldl1 (pPacked sep) xs
-+let pCommaSep xs      = pSeqSep (text ",") xs
-+let pPair (a,b)       = (pSpaced @ pParens @ pCommaSep) [a;b]
-+let pTriplet (a,b,c)  = (pSpaced @ pParens @ pCommaSep) [a;b;c]
-+let pSemiColSep xs    = pSeqSep (text ";") xs
-+let pTriple f g h (a,b,c) = (f a, g b, h c)
-+let pDouble f g (a,b) = (f a, g b)
-+let pOption p m  = match m with
-+	         | None   -> text "None()"
-+                 | Some v -> text "Some" ++ pParens( p v )
-+let pSpParens = pSpaced @ pParens
-+let pQuoted str = pPacked (text(escaped str)) (text "\"") (text "\"")
-+let pList   = pSpaced @ pSquared @ pCommaSep
-+let pRecord = pSpaced @ pBraced  @ pCommaSep
-+
-+class atermPrinter : cilPrinter  = 
-+object (self)
-+  inherit defaultCilPrinterClass
-+
-+  (* printing variable declarations; just store the varinfo *)
-+  method pVDecl () (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pVDecl"
-+                                         ; self#pp_varinfo vinfo
-+  (* printing variable uses; same as declarations; store the varinfo *)
-+  method pVar (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pVar" ;
-+    self#pp_varinfo vinfo
-+
-+  method pLval () ((lh, off):lval) : doc = if !E.verboseFlag then trace "pLvalue" ;
-+    text "Lvalue" ++ (pParens @ pCommaSep) [ self#pp_lhost lh ; self#pOffset nil off ] 
-+
-+  (** we are not using the first argument which represents the base from which we are
-+      offsetting, because we just want to generate a tree view of the CIL tree. For a tree view
-+      this base case is not necessary **)
-+  method pOffset (d:doc) (o:offset) : doc = if !E.verboseFlag then trace "pOffset" ;
-+    match o with
-+    | NoOffset           -> text "Offset_NoOffset() "
-+    | Field (finfo, off) -> text "Offset_Field" ++ (pParens @ pCommaSep) [ (self#pFieldDecl ()) finfo ; self#pOffset nil off ]
-+    | Index (e, off)     -> text "Offset_Index" ++ (pParens @ pCommaSep) [ self#pExp () e ; self#pOffset nil off ]
-+  
-+  (*** INSTRUCTIONS ***)
-+  method pInstr () (i:instr) : doc = if !E.verboseFlag then trace "pInstr" ;
-+    match i with
-+    | Set (lv,e,l) -> text "Set" ++ (pParens @ pCommaSep) [ 
-+	self#pLval () lv ;
-+	self#pExp () e ;
-+	self#pp_location l ]
-+    | Call (olv,e, elst, l) -> text "Call" ++ (pParens @ pCommaSep) [
-+	pOption (self#pLval ()) olv ;
-+	self#pExp () e ;
-+	pList (map (self#pExp ()) elst) ;
-+	self#pp_location l]
-+    | Asm (attr, slst1, slvlst, selst, slst2, l) -> text "Asm" ++ (pParens @ pCommaSep) [
-+	self#pAttrs () attr ;
-+	(pList  @ map pQuoted) slst1 ;
-+	pList (map (pPair @ pDouble pQuoted (self#pLval ())) slvlst) ;
-+	pList (map (pPair @ pDouble pQuoted (self#pExp ())) selst) ;
-+	(pList  @ map pQuoted) slst2 ;
-+	self#pp_location l]
-+
-+  (* a statement itself is just a record of info about the statement
-+     the different kinds of statements can be found at pStmtKind *) 
-+  method pStmt () (s:stmt) : doc = if !E.verboseFlag then trace "pStmt" ;
-+    self#pp_stmtinfo s
-+  method dStmt (out:out_channel) (i:int) (s:stmt) : unit = fprint out i (self#pStmt () s)
-+
-+  (* a block is just a record of info about the block of interest.
-+     the real block is a stmtkind (see pStmtKind) *)
-+  method dBlock (out:out_channel) (i:int) (b:block) : unit = fprint out i (self#pBlock () b)
-+  method pBlock () (b:block) : doc = if !E.verboseFlag then trace "pBlock" ;
-+    self#pp_blockinfo b
-+
-+  (*** GLOBALS ***)
-+  method pGlobal () (g:global) : doc = if !E.verboseFlag then trace "pGlobal" ;      (* global (vars, types, etc.) *)
-+    match g with 
-+    | GType        (typ , l) -> text "GlobalType" ++ (pParens @ pCommaSep) [ self#pp_typeinfo typ ; self#pp_location l ]
-+    | GCompTag     (comp, l) -> text "GlobalCompTag" ++ (pParens @ pCommaSep) [ self#pp_compinfo comp ; self#pp_location l ]
-+    | GCompTagDecl (comp, l) -> text "GlobalCompTagDecl" ++ (pParens @ pCommaSep) [ self#pp_compinfo comp ; self#pp_location l ]
-+    | GEnumTag     (enum, l) -> text "GlobalEnumTag" ++ (pParens @ pCommaSep) [ self#pp_enuminfo enum ; self#pp_location l ]
-+    | GEnumTagDecl (enum, l) -> text "GlobalEnumTagDecl" ++ (pParens @ pCommaSep) [ self#pp_enuminfo enum ; self#pp_location l ]
-+    | GVarDecl     (vinf, l) -> text "GlobalVarDecl" ++ (pParens @ pCommaSep) [ self#pp_varinfo vinf ; self#pp_location l ]
-+    | GVar   (vinf, iinf, l) -> text "GlobalVar" ++ (pParens @ pCommaSep) [ self#pp_varinfo vinf ; self#pp_initinfo iinf ; self#pp_location l ]
-+    | GFun         (fdec, l) -> text "GlobalFun" ++ (pParens @ pCommaSep) [ self#pp_fundec fdec ; self#pp_location l ]
-+    | GAsm         (str , l) -> text "GlobalAsm"  ++ (pParens @ pCommaSep) [ pQuoted str ; self#pp_location l ]
-+    | GPragma      (attr, l) -> text "GlobalPragma" ++ (pParens @ pCommaSep) [ (fun (doc1, bool1) -> doc1) (self#pAttr attr)
-+                                                        ; self#pp_location l
-+                                        ]
-+    | GText str -> text "GlobalText" ++ pParens( pQuoted str)
-+  method dGlobal (out:out_channel) (g:global) : unit = fprint out 80 (self#pGlobal () g)
-+
-+  (* a fielddecl is just a record containing info about the decl *)
-+  method pFieldDecl () : fieldinfo -> doc = if !E.verboseFlag then trace "pFieldDecl" ;
-+    self#pp_fieldinfo
-+
-+  (*** TYPES ***)
-+  method pType (nameOpt: doc option) (* Whether we are declaring a name or 
-+                                      * we are just printing a type *)
-+               () (t:typ) =  if !E.verboseFlag then trace "pType" ;     (* use of some type *)
-+    match t with
-+    | TVoid  attr         -> text "TVoid" ++ pParens( self#pAttrs () attr)
-+    | TInt   (ikin, attr) -> text "TInt" ++ (pParens @ pCommaSep) [ self#pp_ikind ikin ; self#pAttrs () attr ]
-+    | TFloat (fkin, attr) -> text "TFloat" ++ (pParens @ pCommaSep) [ self#pp_fkind fkin ; self#pAttrs () attr ]
-+    | TPtr   (t   , attr) -> text "TPtr" ++ (pParens @ pCommaSep) [ self#pType None () t ; self#pAttrs () attr ]
-+    | TArray (t, e, attr) -> text "TArray" ++ (pParens @ pCommaSep) [ self#pType None () t ;
-+	pOption (self#pExp ()) e ; self#pAttrs () attr ]
-+    | TFun (t, olst, b, attr) -> text "TFun" ++ (pParens @ pCommaSep) [ 
-+        self#pType None () t ;
-+	pOption (pList @ (map ( pTriplet
-+                              @ (pTriple (pQuoted) (self#pType None ()) (self#pAttrs ()))
-+                              )     
-+                         )
-+                )
-+                olst ;
-+	pBool b ;
-+	self#pAttrs () attr]
-+    | TNamed (tinfo, attr) -> text "TNamed" ++ (pParens @ pCommaSep) [ self#pp_typeinfo tinfo ; self#pAttrs () attr ]
-+    | TComp  (cinfo, attr) -> text "TComp" ++ (pParens @ pCommaSep) [ (text @ string_of_int) cinfo.ckey ;
-+                                                           self#pAttrs () attr]
-+    | TEnum  (einfo, attr) -> text "TEnum" ++ (pParens @ pCommaSep) [ self#pp_enuminfo einfo ; self#pAttrs () attr ]
-+    | TBuiltin_va_list (attr) -> text "TBuiltin_va_list" ++ pParens( self#pAttrs () attr)
-+  
-+  (*** ATTRIBUTES ***)
-+  method pAttr (Attr(an, args) : attribute) : (doc * bool) = if !E.verboseFlag then trace "pAttr" ;
-+    ( text "Attr" ++ (pParens @ pCommaSep) [ pQuoted an ; pList (map (self#pAttrParam ()) args) ]
-+    , false
-+    )
-+
-+  method pAttrParam () (p:attrparam) : doc = if !E.verboseFlag then trace "pAttrParam" ;
-+    match p with
-+    | AInt      (i)               -> text "AInt" ++ pParens( pQuoted (string_of_int i))
-+    | AStr      (s)               -> text "AStr" ++ pParens( pQuoted s)
-+    | ACons     (s, args)         -> text "ACons" ++ (pParens @ pCommaSep) [ pQuoted s ; pList (map (self#pAttrParam ()) args) ]
-+    | ASizeOf   (t)               -> text "ASizeOf" ++ pParens( self#pType None () t)
-+    | ASizeOfE  (arg)             -> text "ASizeOfE" ++ pParens( self#pAttrParam () arg)
-+    | ASizeOfS  (tsig)            -> text "ASizeOfS" ++ pParens( self#pp_typsig tsig)
-+    | AAlignOf  (t)               -> text "AAlignOf" ++ pParens( self#pType None () t)
-+    | AAlignOfE (arg)             -> text "AAlignOfE" ++ pParens( self#pAttrParam () arg)
-+    | AAlignOfS (tsig)            -> text "AAlignOfS" ++ pParens( self#pp_typsig tsig)
-+    | AUnOp     (uop, arg)        -> text "AUnOp" ++ (pParens @ pCommaSep) [ self#pp_unop uop ; self#pAttrParam () arg ]
-+    | ABinOp    (bop, arg1, arg2) -> text "ABinOp" ++ (pParens @ pCommaSep) [ self#pp_binop bop 
-+                                                                ; self#pAttrParam () arg1
-+                                                                ; self#pAttrParam () arg2 ]
-+    | ADot      (arg, s)          -> text "ADot" ++ (pParens @ pCommaSep) [ self#pAttrParam () arg ; pQuoted s]
-+
-+  method pAttrs () (attr:attributes) : doc = if !E.verboseFlag then trace "pAttrs" ;
-+    text "Attributes" ++ pParens( 
-+               pList (map (fst @ self#pAttr) attr)
-+              )
-+  
-+  (*** LABELS ***)
-+  method pLabel () (l:label) : doc = if !E.verboseFlag then trace "pLabel" ;
-+    match l with
-+    | Label   (s,l,b) -> text "Label" ++ (pParens @ pCommaSep) [
-+	pQuoted s ;
-+	self#pp_location l ;
-+	pBool b ]
-+    | Case    (e,l)   -> text "Case" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pp_location l ]
-+    | Default (l)     -> text "Default" ++ pParens( self#pp_location l)
-+
-+  (*** printing out locations as line directives is not necessary
-+       because we are printing the tree structure and locations are
-+       present everywhere ***)
-+  method pLineDirective : ?forcefile:bool -> location -> doc = fun ?forcefile _ -> nil
-+
-+  (*** STATEMENT KINDS ***)
-+  method pStmtKind s () (sk:stmtkind) : doc = if !E.verboseFlag then trace "pStmtKind" ;
-+    match sk with
-+    | Instr      (ilst)          -> text "Instr" ++ pParens( pList (map (self#pInstr ()) ilst))
-+    | Return     (oe, l)         -> text "Return" ++ (pParens @ pCommaSep) [ pOption (self#pExp ()) oe ; self#pp_location l ]
-+    | Goto       (stmtref, l)    -> text "Goto" ++ (pParens @ pCommaSep) [ self#pStmt () !stmtref ; self#pp_location l ]
-+    | Break      (l)             -> text "Break" ++ pParens( self#pp_location l)
-+    | Continue   (l)             -> text "Continue" ++ pParens( self#pp_location l)
-+    | If         (e, b1, b2, l)  -> text "If" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pBlock () b1 ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+    | Switch     (e,b,stlst,l)   -> text "Switch" ++ (pParens @ pCommaSep) [ 
-+	self#pExp () e ;
-+	self#pBlock () b ;
-+	pList (map (self#pStmt ()) stlst) ;
-+	self#pp_location l ]
-+    | Loop       (b,l,os1, os2)  -> text "Loop" ++ (pParens @ pCommaSep) [
-+	self#pBlock () b ;
-+	self#pp_location l ;
-+	pOption (self#pStmt ()) os1 ;
-+	pOption (self#pStmt ()) os2 ]
-+    | Block      (b)             -> text "Block" ++ pParens( self#pBlock () b)
-+    | TryFinally (b1,b2,l)       -> text "TryFinally" ++ (pParens @ pCommaSep) [ 
-+	self#pBlock () b1 ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+    | TryExcept  (b1, pr, b2, l) -> text "TryExcept" ++ (pParens @ pCommaSep) [ 
-+	self#pBlock () b1 ;
-+	(  pPair
-+         @ pDouble (pList @ map (self#pInstr ())) 
-+                   (self#pExp ())
-+        ) pr ;
-+	self#pBlock () b2 ;
-+	self#pp_location l ]
-+
-+  (*** EXPRESSIONS ***)
-+
-+  method pExp () (e:exp) : doc = if !E.verboseFlag then trace "pExp" ;
-+    match e with
-+    | Const     (c)              -> text "Constant" ++ pParens( self#pp_constant c)
-+    | Lval      (lh,off)         -> text "Lvalue" ++ (pParens @ pCommaSep)  [self#pp_lhost lh ; self#pOffset nil off ]
-+    | SizeOf    (t)              -> text "SizeOfType" ++ pParens( self#pType None () t)
-+    | SizeOfE   (e)              -> text "SizeOfExp" ++ pParens( self#pExp () e)
-+    | SizeOfStr (s)              -> text "SizeOfString" ++ pParens( pQuoted s)
-+    | AlignOf   (t)              -> text "AlignOfType" ++ pParens( self#pType None () t)
-+    | AlignOfE  (e)              -> text "AlignOfExp" ++ pParens( self#pExp () e)
-+    | UnOp      (uop, e, t)      -> text "UnOp" ++ (pParens @ pCommaSep) [ 
-+					self#pp_unop uop ; 
-+                                        self#pExp () e ; 
-+	                                self#pType None () t ]
-+    | BinOp     (bop, e1, e2, t) -> text "BinOp" ++ (pParens @ pCommaSep) [ 
-+                                        self#pp_binop bop ;
-+                                        self#pExp () e1 ;
-+                                        self#pExp () e2 ;
-+                                        self#pType None () t ]
-+    | CastE     (t,e)            -> text "Cast" ++ (pParens @ pCommaSep) [ self#pType None () t ; self#pExp () e]
-+    | AddrOf    (lv)             -> text "AddressOf" ++ pParens( self#pLval () lv)
-+    | StartOf   (lv)             -> text "StartOf" ++ pParens( self#pLval () lv)
-+
-+  (*** INITIALIZERS ***)
-+  method pInit () (i:init) : doc = if !E.verboseFlag then trace "pInit" ;
-+    match i with
-+    | SingleInit   (e)        -> text "SingleInit" ++ pParens( self#pExp () e)
-+    | CompoundInit (t, oilst) -> text "CompoundInit" ++ (pParens @ pCommaSep) [ self#pType None () t ;
-+				    pList (map (  pPair
-+			                        @ pDouble (self#pOffset nil) (self#pInit ())
-+			                       ) 
-+			                       oilst
-+			                  ) ]
-+  method dInit (out:out_channel) (i:int) (init1:init) : unit = fprint out i (self#pInit () init1)
-+
-+  (*** auxiliary methods ***)
-+  method private pp_storage (s:storage) : doc =
-+    let tok = match s with
-+	      | NoStorage -> "NoStorage"
-+	      | Static    -> "Static"
-+	      | Register  -> "Register"
-+	      | Extern	  -> "Extern"
-+    in text ("Storage_" ^ tok)
-+
-+  method private pp_typeinfo (tinfo:typeinfo) : doc = if !E.verboseFlag then trace "pp_typeinfo" ;
-+    text "Typeinfo" ++ (pParens @ pCommaSep) [   
-+    pQuoted tinfo.tname ;
-+    self#pType None () tinfo.ttype ;
-+    pBool tinfo.treferenced ]
-+
-+  method private pp_fieldinfo (finfo:fieldinfo) : doc = if !E.verboseFlag then trace "pp_fieldinfo" ;
-+    text "Fieldinfo" ++ (pParens @ pCommaSep) [ 
-+    pQuoted finfo.fname ;
-+    self#pType None () finfo.ftype ;
-+    pOption (pQuoted @ string_of_int) finfo.fbitfield ;
-+    self#pAttrs () finfo.fattr ;
-+    self#pp_location finfo.floc ]
-+
-+  method private pp_compinfo (cinfo:compinfo) : doc = if !E.verboseFlag then trace "pp_compinfo" ;
-+    text "Compinfo" ++ (pParens @ pCommaSep) [ 
-+    pBool cinfo.cstruct ;
-+    pQuoted cinfo.cname ;
-+    text (string_of_int cinfo.ckey) ;
-+    pList (map (self#pFieldDecl ()) cinfo.cfields) ;
-+    self#pAttrs () cinfo.cattr ;
-+    pBool cinfo.cdefined ;
-+    pBool cinfo.creferenced ]
-+
-+  method private pp_enuminfo (einfo:enuminfo) : doc = if !E.verboseFlag then trace "pp_enuminfo" ;
-+    text "Enuminfo" ++ (pParens @ pCommaSep) [
-+    pQuoted einfo.ename ;
-+    pList (map (  pTriplet
-+                @ (pTriple pQuoted (self#pExp ()) self#pp_location)
-+               )
-+               einfo.eitems) ;
-+    self#pAttrs () einfo.eattr ;
-+    pBool einfo.ereferenced ]
-+
-+  method private pp_location (loc:location) : doc = if !E.verboseFlag then trace "pp_location" ;
-+    text "Location" ++ (pParens @ pCommaSep) [
-+    text (string_of_int loc.line) ;
-+    pQuoted loc.file ;
-+    text (string_of_int loc.byte) ]
-+
-+  method private pp_varinfo (vinfo:varinfo) : doc = if !E.verboseFlag then trace "pp_varinfo" ;
-+    text "Varinfo" ++ (pParens @ pCommaSep) [
-+    pQuoted vinfo.vname ;
-+    self#pType None () vinfo.vtype ;
-+    self#pAttrs () vinfo.vattr ;
-+    self#pp_storage vinfo.vstorage ;
-+    pBool vinfo.vglob ;
-+    pBool vinfo.vinline ;
-+    self#pp_location vinfo.vdecl ;
-+    text (string_of_int vinfo.vid) ;
-+    pBool vinfo.vaddrof ;
-+    pBool vinfo.vreferenced ]
-+
-+  method private pp_initinfo (iinfo:initinfo) : doc = if !E.verboseFlag then trace "pp_initinfo" ;
-+    text "Initinfo" ++ pParens( 
-+    pOption (self#pInit ()) iinfo.init)
-+
-+  method private pp_fundec (fdec:fundec) : doc = if !E.verboseFlag then trace "pp_fundec" ;
-+    text "Fundec" ++ (pParens @ pCommaSep) [
-+    self#pp_varinfo fdec.svar ;
-+    pList (map self#pp_varinfo fdec.sformals) ;
-+    pList (map self#pp_varinfo fdec.slocals) ;
-+    text (string_of_int fdec.smaxid) ;
-+    self#pBlock () fdec.sbody ;
-+    pOption (pSpParens @ text @ string_of_int) fdec.smaxstmtid ;
-+    pList (map (self#pStmt ()) fdec.sallstmts) ]
-+
-+  method private pp_ikind (ikin:ikind) : doc =
-+    let tok = match ikin with
-+              | IChar  -> "IChar"
-+	      | ISChar -> "ISChar"
-+	      | IUChar -> "IUChar"
-+	      | IInt   -> "IInt"
-+	      | IUInt  -> "IUInt"
-+	      | IShort -> "IShort"
-+	      | IUShort -> "IUShort"
-+	      | ILong  -> "ILong"
-+	      | IULong -> "IULong"
-+	      | ILongLong -> "ILongLong"
-+	      | IULongLong -> "IULongLong"
-+    in text ("Ikind_" ^ tok)
-+
-+  method private pp_fkind (fkin:fkind) : doc =
-+    let tok = match fkin with
-+	      | FFloat -> "FFloat"
-+	      | FDouble -> "FDouble"
-+	      | FLongDouble -> "FLongDouble"
-+    in text ("Fkind_" ^ tok)
-+
-+  method private pp_typsig (tsig:typsig) : doc = if !E.verboseFlag then trace "pp_typsig" ;
-+    match tsig with
-+    | TSArray (tsig2, oe, attr)         -> text "TSArray" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      pOption pInt64 oe ;
-+					      self#pAttrs () attr ]
-+    | TSPtr   (tsig2, attr)             -> text "TSPtr" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      self#pAttrs () attr ]	
-+    | TSComp  (b, s, attr)              -> text "TSComp" ++ (pParens @ pCommaSep) [
-+					      pBool b ;
-+					      pQuoted s ;
-+					      self#pAttrs () attr ]
-+    | TSFun   (tsig2, tsiglst, b, attr) -> text "TSFun" ++ (pParens @ pCommaSep) [
-+					      self#pp_typsig tsig2 ;
-+					      pList (map self#pp_typsig tsiglst) ;
-+					      pBool b ;
-+					      self#pAttrs () attr ]
-+    | TSEnum  (s, attr)                 -> text "TSEnum" ++ (pParens @ pCommaSep) [
-+					      pQuoted s ;
-+					      self#pAttrs () attr ]
-+    | TSBase  (t)                       -> text "TSBase" ++ pParens( self#pType None () t)
-+     
-+
-+  method private pp_unop (uop:unop) : doc =
-+    let tok = match uop with
-+	      | Neg -> "Neg"
-+	      | BNot -> "BNot"
-+	      | LNot -> "LNot"
-+    in text ("UnOp_" ^ tok)
-+
-+  method private pp_binop (bop:binop) : doc = 
-+    let tok = match bop with
-+              | PlusA -> "PlusA"
-+	      | PlusPI -> "PlusPI"
-+	      | IndexPI -> "IndexPI"
-+	      | MinusA -> "MinusA"
-+	      | MinusPI -> "MinusPI"
-+	      | MinusPP -> "MinusPP"
-+	      | Mult -> "Mult"
-+	      | Div -> "Div"
-+	      | Mod -> "Mod"
-+	      | Shiftlt -> "Shiftlt"
-+	      | Shiftrt -> "Shiftrt"
-+	      | Lt -> "Lt"
-+	      | Gt -> "Gt"
-+	      | Le -> "Le"
-+	      | Ge -> "Ge"
-+	      | Eq -> "Eq"
-+	      | Ne -> "Ne"
-+	      | BAnd -> "BAnd"
-+	      | BXor -> "BXor"
-+	      | BOr -> "BOr"
-+	      | LAnd -> "LAnd"
-+	      | LOr -> "LOr"
-+    in text ("BinOp_" ^ tok )
-+
-+  method private pp_constant (c:constant) : doc = if !E.verboseFlag then trace "pp_constant" ;
-+    match c with
-+    | CInt64 (i, ikin, os) -> text "CInt64" ++ (pParens @ pCommaSep) [  
-+                                  pQuoted (Int64.to_string i)  ;
-+				  self#pp_ikind ikin ;
-+				  pOption pQuoted os ]
-+    | CStr   (s)           -> text "CStr" ++ pParens( pQuoted s)
-+    | CWStr  (ilist)       -> text "CWStr" ++ pParens( pList (map ( text @ Int64.to_string) ilist))
-+    | CChr   (c)           -> text "CChr" ++ pParens( text "\"" ++ text (Char.escaped c) ++ text "\"")
-+    | CReal  (f, fkin, os) -> text "CReal" ++ (pParens @ pCommaSep) [  pQuoted (sprintf "%f0" f) ;
-+				  self#pp_fkind fkin ;
-+				  pOption pQuoted os ]
-+
-+  method private pp_lhost (lh:lhost) : doc = if !E.verboseFlag then trace "pp_lhost" ;
-+    match lh with
-+    | Var (vinfo) -> text "Var" ++ pParens( self#pp_varinfo vinfo)
-+    | Mem (e)     -> text "Mem" ++ pParens( self#pExp () e)
-+
-+  method private pp_blockinfo (b:block) : doc = if !E.verboseFlag then trace "pp_blockinfo" ;
-+    text "Block" ++ (pParens @ pCommaSep) [
-+    self#pAttrs () b.battrs ;
-+    pList (map (self#pStmt ()) b.bstmts) ]
-+
-+  method private pp_stmtinfo (sinfo:stmt) : doc = if !E.verboseFlag then trace "pp_stmtinfo" ;
-+    text "Stmt" ++ (pParens @ pCommaSep) [
-+    pList (map (self#pLabel ()) sinfo.labels) ;
-+    self#pStmtKind invalidStmt () sinfo.skind ;
-+    text (string_of_int sinfo.sid) ;
-+    pList (map self#pp_stmtinfo sinfo.succs) ;
-+    pList (map self#pp_stmtinfo sinfo.preds) ]
-+end
-+
-+let ppFile (f:file) (pp:cilPrinter) : doc = if !E.verboseFlag then trace "ppFile" ;
-+  text "File" ++ (pParens @ pCommaSep) [ 
-+  pQuoted f.fileName ;
-+  pList (map (pp#pGlobal ()) f.globals) ]
-+
-+(* we need a different more flexible mapGlobals
-+   we only visit globals and not global init;
-+   use mapGlobinits *)
-+let mapGlobals2 (fl: file) 
-+                (doone: global -> 'a) : 'a list = 
-+  List.map doone fl.globals
-+
-+(* We redefine dumpFile because we don't want a header in our
-+   file telling us it was generated with CIL blabla *)
-+let dumpFile (pp: cilPrinter) (out : out_channel) file =
-+  printDepth := 99999;  
-+  Pretty.fastMode := true;
-+  if !E.verboseFlag then ignore (E.log "printing file %s\n" file.fileName);
-+  let file_doc = ppFile file pp in
-+  fprint out 80 file_doc;
-+  flush out
-+
-+let feature : featureDescr =
-+  { fd_name = "printaterm";
-+    fd_enabled = ref false;
-+    fd_description = "printing the current CIL AST to an ATerm";
-+    fd_extraopt = [("--atermfile", Arg.String (fun s -> outputfilename := s), "=<filename>: writes the ATerm to <filename>");];
-+    fd_doit = (function (f: file) ->        
-+        let channel = open_out !outputfilename in 
-+        let printer = new atermPrinter
-+	in dumpFile printer channel f
-+         ; close_out channel
-+    );
-+    fd_post_check = false;
-+  }
-diff -urN cil-old/src/maincil.ml cil-new/src/maincil.ml
---- cil-old/src/maincil.ml	2005-11-22 06:34:41.000000000 +0100
-+++ cil-new/src/maincil.ml	2006-09-13 13:52:09.000000000 +0200
-@@ -105,6 +105,7 @@
-     Simplemem.feature;
-     Simplify.feature;
-     Dataslicing.feature;
-+    Atermprinter.feature;
-   ] 
-   @ Feature_config.features 
- 
diff --git a/pkgs/development/libraries/cracklib/builder.sh b/pkgs/development/libraries/cracklib/builder.sh
deleted file mode 100644
index 3833cc1e6c1..00000000000
--- a/pkgs/development/libraries/cracklib/builder.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-source $stdenv/setup
-
-preConfigure() {
-  mkdir cracklib-dicts/
-  cp $dicts cracklib-dicts/
-}
-
-postInstall() {
-  $out/sbin/cracklib-format cracklib-dicts/* | $out/sbin/cracklib-packer cracklib_dict
-  cp cracklib_dict.* $out/lib
-}
-
-genericBuild
diff --git a/pkgs/development/libraries/cracklib/default.nix b/pkgs/development/libraries/cracklib/default.nix
index 9833d79a726..32d1c478a49 100644
--- a/pkgs/development/libraries/cracklib/default.nix
+++ b/pkgs/development/libraries/cracklib/default.nix
@@ -3,18 +3,11 @@
 stdenv.mkDerivation rec {
   name = "cracklib-2.8.16";
 
-  #builder = ./builder.sh;
-
   src = fetchurl {
     url = "mirror://sourceforge/cracklib/${name}.tar.gz";
     sha256 = "1g3mchdvra9nihxlkl3rdz96as3xnfw5m59hmr5k17l7qa9a8fpw";
   };
 
-  #dicts = fetchurl {
-  #  url = http://nixos.org/tarballs/cracklib-words.gz;
-  #  md5 = "d18e670e5df560a8745e1b4dede8f84f";
-  #};
-
   meta = {
     homepage = http://sourceforge.net/projects/cracklib;
     description = "A library for checking the strength of passwords";
diff --git a/pkgs/development/libraries/crypto++/default.nix b/pkgs/development/libraries/crypto++/default.nix
index 8f39de41e55..43d1011ec0a 100644
--- a/pkgs/development/libraries/crypto++/default.nix
+++ b/pkgs/development/libraries/crypto++/default.nix
@@ -14,10 +14,7 @@ stdenv.mkDerivation rec {
   ] ++ stdenv.lib.optional (stdenv.system != "i686-cygwin") ./dll.patch;
 
 
-  buildInputs = [ unzip ]
-
-    # For some reason the makefile sets "AR = libtool" on Darwin.
-    ++ stdenv.lib.optional (stdenv.system == "i686-darwin") libtool;
+  buildInputs = [ unzip ];
 
   # Unpack the thing in a subdirectory.
   unpackPhase = ''
diff --git a/pkgs/development/libraries/despotify/default.nix b/pkgs/development/libraries/despotify/default.nix
new file mode 100644
index 00000000000..13732d34e09
--- /dev/null
+++ b/pkgs/development/libraries/despotify/default.nix
@@ -0,0 +1,34 @@
+{
+  stdenv, fetchsvn, openssl, zlib, libvorbis, pulseaudio, gstreamer, libao,
+  libtool, ncurses, glibc
+}:
+
+stdenv.mkDerivation rec {
+
+  name = "despotify";
+
+  src = fetchsvn {
+    url = "https://despotify.svn.sourceforge.net/svnroot/despotify";
+    rev = "521";
+  };
+
+  buildInputs = [
+    openssl zlib libvorbis pulseaudio gstreamer libao libtool ncurses glibc
+  ];
+
+  configurePhase = "cd src";
+
+  installPhase = "make LDCONFIG=true INSTALL_PREFIX=$out install";
+
+  meta = {
+    description = "Open source Spotify client and library";
+    longDescription = ''
+      despotify is a open source implementation of the Spotify API.  This
+      package provides both a library and a few already quite useful,
+      proof-of-concept clients.
+    '';
+    homepage = "http://despotify.se";
+    license = stdenv.lib.licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/libraries/directfb/src-for-default.nix b/pkgs/development/libraries/directfb/src-for-default.nix
index c154ac68e4a..a9c8c16a9d3 100644
--- a/pkgs/development/libraries/directfb/src-for-default.nix
+++ b/pkgs/development/libraries/directfb/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="1.5.3";
-   name="directfb-1.5.3";
-   hash="1w2i4az6v4sh086s27qbyn5w02s67a7dfm2xdpdm4r2zpgl7axg5";
-   url="http://directfb.org/downloads/Core/DirectFB-1.5/DirectFB-${version}.tar.gz";
-   advertisedUrl="http://directfb.org/downloads/Core/DirectFB-1.5/DirectFB-1.5.3.tar.gz";
+   version="1.6.2";
+   name="directfb-1.6.2";
+   hash="0k9x8lnjvlyalsd07a8z4iv2rfmpiz6j7aj0y4m4sybxhc8c86xr";
+   url="http://directfb.org/downloads/Core/DirectFB-1.6/DirectFB-${version}.tar.gz";
+   advertisedUrl="http://directfb.org/downloads/Core/DirectFB-1.6/DirectFB-1.6.2.tar.gz";
   
   
 }
diff --git a/pkgs/development/libraries/eigen/2.0.nix b/pkgs/development/libraries/eigen/2.0.nix
new file mode 100644
index 00000000000..6884aca16fc
--- /dev/null
+++ b/pkgs/development/libraries/eigen/2.0.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, cmake}:
+
+let
+  v = "2.0.16";
+in
+stdenv.mkDerivation {
+  name = "eigen-${v}";
+  
+  src = fetchurl {
+    url = "http://bitbucket.org/eigen/eigen/get/${v}.tar.bz2";
+    name = "eigen-${v}.tar.bz2";
+    sha256 = "1akcb4g5hvc664gfc6sxb6f6jrm55fgks6017wg0smyvmm6k09v0";
+  };
+  
+  buildNativeInputs = [ cmake ];
+  
+  meta = with stdenv.lib; {
+    description = "C++ template library for linear algebra: vectors, matrices, and related algorithms";
+    license = licenses.lgpl3Plus;
+    homepage = http://eigen.tuxfamily.org ;
+    maintainers = with stdenv.lib.maintainers; [ sander urkud raskin ];
+  };
+}
diff --git a/pkgs/development/libraries/eigen/default.nix b/pkgs/development/libraries/eigen/default.nix
index 6884aca16fc..56f66aba8f8 100644
--- a/pkgs/development/libraries/eigen/default.nix
+++ b/pkgs/development/libraries/eigen/default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, cmake}:
 
 let
-  v = "2.0.16";
+  v = "3.1.2";
 in
 stdenv.mkDerivation {
   name = "eigen-${v}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
   src = fetchurl {
     url = "http://bitbucket.org/eigen/eigen/get/${v}.tar.bz2";
     name = "eigen-${v}.tar.bz2";
-    sha256 = "1akcb4g5hvc664gfc6sxb6f6jrm55fgks6017wg0smyvmm6k09v0";
+    sha256 = "1hywvbn4a8f96fjn3cvd6nxzh5jvh05s1r263d9vqlgn25dxrzay";
   };
   
   buildNativeInputs = [ cmake ];
diff --git a/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch b/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch
deleted file mode 100644
index 1642affba91..00000000000
--- a/pkgs/development/libraries/freeglut/freeglut-gcc-4.2.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -urN freeglut-2.4.0.old/src/freeglut_joystick.c freeglut-2.4.0/src/freeglut_joystick.c
---- freeglut-2.4.0.old/src/freeglut_joystick.c	2007-06-16 03:51:41.000000000 +0000
-+++ freeglut-2.4.0/src/freeglut_joystick.c	2007-06-16 03:54:27.000000000 +0000
-@@ -1682,9 +1682,6 @@
- 
-   fgInitialiseJoysticks ();
- 
--  if ( !fgJoystick )
--    return 0;
--
-   if ( !fgState.JoysticksInitialised )
-     return 0;
- 
diff --git a/pkgs/development/libraries/ftgl/2.1.2.nix b/pkgs/development/libraries/ftgl/2.1.2.nix
index 121f99e3b03..c83173450b1 100644
--- a/pkgs/development/libraries/ftgl/2.1.2.nix
+++ b/pkgs/development/libraries/ftgl/2.1.2.nix
@@ -13,6 +13,8 @@ stdenv.mkDerivation {
 
   buildInputs = [freetype mesa];
 
+  NIX_LDFLAGS = "-lGLU -lGL";
+
   patches = [ ./gcc.patch ];
 
   configureFlags = "--enable-shared";
diff --git a/pkgs/development/libraries/gmp/4.3.1.nix b/pkgs/development/libraries/gmp/4.3.1.nix
deleted file mode 100644
index 5f83d9ae46d..00000000000
--- a/pkgs/development/libraries/gmp/4.3.1.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{stdenv, fetchurl, m4, cxx ? true}:
-
-stdenv.mkDerivation rec {
-  name = "gmp-4.3.1";
-
-  src = fetchurl {
-    url = "mirror://gnu/gmp/${name}.tar.bz2";
-    sha256 = "1j5pklq36ivg2cim5wfysns229a544lqkimp3mlzkwjl513ra0ma";
-  };
-
-  buildInputs = [m4];
-
-  preConfigure = "ln -sf configfsf.guess config.guess";
-
-  configureFlags = if cxx then "--enable-cxx" else "--disable-cxx";
-
-  doCheck = true;
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "A free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating point numbers";
-    homepage = http://gmplib.org/;
-    license = "LGPL";
-    platforms = stdenv.lib.platforms.all;
-  };
-}
diff --git a/pkgs/development/libraries/gnutls/default.nix b/pkgs/development/libraries/gnutls/default.nix
index ee566d46b65..3e5ba3079f0 100644
--- a/pkgs/development/libraries/gnutls/default.nix
+++ b/pkgs/development/libraries/gnutls/default.nix
@@ -26,7 +26,10 @@ stdenv.mkDerivation (rec {
         else ""}
   '';
 
-  enableParallelBuilding = true;
+  # Build of the Guile bindings is not parallel-safe.  See
+  # <http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=330995a920037b6030ec0282b51dde3f8b493cad>
+  # for the actual fix.
+  enableParallelBuilding = false;
 
   buildInputs = [ zlib lzo ]
     ++ stdenv.lib.optional guileBindings guile;
diff --git a/pkgs/development/libraries/gtk-sharp-2/dllmap-glue.patch b/pkgs/development/libraries/gtk-sharp-2/dllmap-glue.patch
deleted file mode 100644
index 51f4524811d..00000000000
--- a/pkgs/development/libraries/gtk-sharp-2/dllmap-glue.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-diff -rc gtk-sharp-1.0.6-orig/gdk/gdk-sharp.dll.config.in gtk-sharp-1.0.6/gdk/gdk-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/gdk/gdk-sharp.dll.config.in	2004-12-16 18:15:44.000000000 +0100
---- gtk-sharp-1.0.6/gdk/gdk-sharp.dll.config.in	2005-03-08 12:40:58.000000000 +0100
-***************
-*** 3,6 ****
---- 3,7 ----
-    <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libgdk-win32-2.0-0.dll" target="libgdk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libgdk_pixbuf-2.0-0.dll" target="libgdk_pixbuf-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="gdksharpglue" target="libgdksharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
-diff -rc gtk-sharp-1.0.6-orig/glade/glade-sharp.dll.config.in gtk-sharp-1.0.6/glade/glade-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/glade/glade-sharp.dll.config.in	2004-12-16 18:15:46.000000000 +0100
---- gtk-sharp-1.0.6/glade/glade-sharp.dll.config.in	2005-03-08 12:41:19.000000000 +0100
-***************
-*** 1,3 ****
---- 1,4 ----
-  <configuration>
-    <dllmap dll="libglade-2.0-0.dll" target="libglade-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="gladesharpglue" target="libgladesharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
-diff -rc gtk-sharp-1.0.6-orig/glib/glib-sharp.dll.config.in gtk-sharp-1.0.6/glib/glib-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/glib/glib-sharp.dll.config.in	2004-12-16 18:15:38.000000000 +0100
---- gtk-sharp-1.0.6/glib/glib-sharp.dll.config.in	2005-03-08 12:37:57.000000000 +0100
-***************
-*** 2,5 ****
---- 2,6 ----
-    <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="glibsharpglue" target="libglibsharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
-diff -rc gtk-sharp-1.0.6-orig/gnome/gnome-sharp.dll.config.in gtk-sharp-1.0.6/gnome/gnome-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/gnome/gnome-sharp.dll.config.in	2004-12-16 18:15:43.000000000 +0100
---- gtk-sharp-1.0.6/gnome/gnome-sharp.dll.config.in	2005-03-08 12:41:50.000000000 +0100
-***************
-*** 8,11 ****
---- 8,12 ----
-    <dllmap dll="gnomeprint-2-2" target="libgnomeprint-2-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="gnomeprintui-2-2" target="libgnomeprintui-2-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="gnomeui-2" target="libgnomeui-2@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="gnomesharpglue" target="libgnomesharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
-diff -rc gtk-sharp-1.0.6-orig/gtk/gtk-sharp.dll.config.in gtk-sharp-1.0.6/gtk/gtk-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/gtk/gtk-sharp.dll.config.in	2004-12-16 18:14:51.000000000 +0100
---- gtk-sharp-1.0.6/gtk/gtk-sharp.dll.config.in	2005-03-08 12:38:19.000000000 +0100
-***************
-*** 3,6 ****
---- 3,7 ----
-    <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="gtksharpglue" target="libgtksharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
-diff -rc gtk-sharp-1.0.6-orig/pango/pango-sharp.dll.config.in gtk-sharp-1.0.6/pango/pango-sharp.dll.config.in
-*** gtk-sharp-1.0.6-orig/pango/pango-sharp.dll.config.in	2004-12-16 18:14:55.000000000 +0100
---- gtk-sharp-1.0.6/pango/pango-sharp.dll.config.in	2005-03-08 12:42:11.000000000 +0100
-***************
-*** 1,4 ****
---- 1,5 ----
-  <configuration>
-    <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-    <dllmap dll="libpango-1.0-0.dll" target="libpango-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
-+   <dllmap dll="pangosharpglue" target="libpangosharpglue@LIB_PREFIX@@LIB_SUFFIX@"/>
-  </configuration>
diff --git a/pkgs/development/libraries/haskell/Crypto/default.nix b/pkgs/development/libraries/haskell/Crypto/default.nix
index f93fbdcb679..c7d10d0160d 100644
--- a/pkgs/development/libraries/haskell/Crypto/default.nix
+++ b/pkgs/development/libraries/haskell/Crypto/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "Crypto";
-  version = "4.2.5";
-  sha256 = "0wv48is2jqia8hda6q65y3mhabxlw9hjzmpk3dx70rzh4w44yxb8";
+  version = "4.2.5.1";
+  sha256 = "0rmgl0a4k6ys2lc6d607g28c2p443a46dla903rz5aha7m9y1mba";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ HUnit QuickCheck random ];
diff --git a/pkgs/development/libraries/haskell/DAV/default.nix b/pkgs/development/libraries/haskell/DAV/default.nix
index 2ab6e29e226..c10e56d1146 100644
--- a/pkgs/development/libraries/haskell/DAV/default.nix
+++ b/pkgs/development/libraries/haskell/DAV/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "DAV";
-  version = "0.2";
-  sha256 = "0g9b72ia4h85ykbng6103wc8f218fj9fdvm1896yx999vr95kxw4";
+  version = "0.3";
+  sha256 = "16qbq59g79a0a1n6vblndj1fknj9fvd0anhrsz9czwl3k3lk5cx8";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/DSH/default.nix b/pkgs/development/libraries/haskell/DSH/default.nix
index 32cf21242de..409afcd45b0 100644
--- a/pkgs/development/libraries/haskell/DSH/default.nix
+++ b/pkgs/development/libraries/haskell/DSH/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "DSH";
-  version = "0.8.2.2";
-  sha256 = "0hjy8c97avi4wwv3p9gyml66n34mbrfrhb19j5y6vcy0y8ysgf0c";
+  version = "0.8.2.3";
+  sha256 = "0d5jh1vxjx3874rgwvxjm00lj3vvp8ggz2c54x6ymhmgav3pd8vy";
   buildDepends = [ csv FerryCore HaXml HDBC mtl Pathfinder text ];
   meta = {
     description = "Database Supported Haskell";
diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC-odbc.nix b/pkgs/development/libraries/haskell/HDBC/HDBC-odbc.nix
index d5dca127ca1..50994384c96 100644
--- a/pkgs/development/libraries/haskell/HDBC/HDBC-odbc.nix
+++ b/pkgs/development/libraries/haskell/HDBC/HDBC-odbc.nix
@@ -2,14 +2,14 @@
 
 cabal.mkDerivation (self: {
   pname = "HDBC-odbc";
-  version = "2.3.1.0";
-  sha256 = "0vza38ggs863wjh25xnwslwlin68166ywws72bs766rl0rq7fkf4";
+  version = "2.3.1.1";
+  sha256 = "0zypgwy8yxzp69c2775gkzi8591b0l3wncn7vmq11l16ign95fc7";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ HDBC mtl time utf8String ];
   extraLibraries = [ odbc ];
   meta = {
-    homepage = "http://software.complete.org/hdbc-odbc";
+    homepage = "https://github.com/hdbc/hdbc-odbc";
     description = "ODBC driver for HDBC";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/libraries/haskell/HDBC/HDBC.nix b/pkgs/development/libraries/haskell/HDBC/HDBC.nix
index 03000b68811..a8275c31b85 100644
--- a/pkgs/development/libraries/haskell/HDBC/HDBC.nix
+++ b/pkgs/development/libraries/haskell/HDBC/HDBC.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "HDBC";
-  version = "2.3.1.1";
-  sha256 = "1gqihvsf5w7j8xbn1xy93mdrsh77qwxbhfmyjivbm6i95w1i0kb7";
+  version = "2.3.1.2";
+  sha256 = "1rjamh8xscb9jhxgxcrs2qnvs2ipv9dqgnn0bpv5vwclmzmn5j87";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ convertible mtl text time utf8String ];
diff --git a/pkgs/development/libraries/haskell/MemoTrie/default.nix b/pkgs/development/libraries/haskell/MemoTrie/default.nix
index 115ad935ae1..f3bd183d137 100644
--- a/pkgs/development/libraries/haskell/MemoTrie/default.nix
+++ b/pkgs/development/libraries/haskell/MemoTrie/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "MemoTrie";
-  version = "0.5";
-  sha256 = "07knq5ccsyicznvr25vlbzadrgdw2aic71hhbv6v16wra1f17gbf";
+  version = "0.6.1";
+  sha256 = "1bx0xd28irxjrq181wirx0vdrdj4qg4n4wj7ya27lkh408mwsxm6";
   buildDepends = [ void ];
   meta = {
     homepage = "http://haskell.org/haskellwiki/MemoTrie";
diff --git a/pkgs/development/libraries/haskell/aeson/default.nix b/pkgs/development/libraries/haskell/aeson/default.nix
index c1cacb9eaa3..b0f89619b1c 100644
--- a/pkgs/development/libraries/haskell/aeson/default.nix
+++ b/pkgs/development/libraries/haskell/aeson/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "aeson";
-  version = "0.6.0.2";
-  sha256 = "04vyjpp3zi2g65rrkq4x4bddw0nfclniq5hhfq7l3jhybd8jxy51";
+  version = "0.6.1.0";
+  sha256 = "16hjwcybmgmk1sg8x02r9bxisx4gl61rlq8w2zsxfgkxwjpfhkbx";
   buildDepends = [
     attoparsec blazeBuilder deepseq dlist hashable mtl syb text time
     unorderedContainers vector
diff --git a/pkgs/development/libraries/haskell/ansi-terminal/default.nix b/pkgs/development/libraries/haskell/ansi-terminal/default.nix
index 90a0a9b2b00..27d9a61cf41 100644
--- a/pkgs/development/libraries/haskell/ansi-terminal/default.nix
+++ b/pkgs/development/libraries/haskell/ansi-terminal/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "ansi-terminal";
-  version = "0.5.5";
-  sha256 = "09r4nlpmkis6cp30jkymfas13hz6ph4zqxhvigrxn6s76v7nb5a8";
+  version = "0.5.5.1";
+  sha256 = "146kqp49dvsskws7pn54yynpac1sb1s51pbm4nkqj86wwp04f0lc";
   isLibrary = true;
   isExecutable = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/attoparsec-binary/attoparsec-binary-ghc7.6.1.patch b/pkgs/development/libraries/haskell/attoparsec-binary/attoparsec-binary-ghc7.6.1.patch
deleted file mode 100644
index dae949b2570..00000000000
--- a/pkgs/development/libraries/haskell/attoparsec-binary/attoparsec-binary-ghc7.6.1.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/Data/Attoparsec/Binary.hs b/Data/Attoparsec/Binary.hs
-index fab76c6..01d6c8b 100644
---- a/Data/Attoparsec/Binary.hs
-+++ b/Data/Attoparsec/Binary.hs
-@@ -23,7 +23,7 @@ import Data.Word
- byteSize :: (Bits a) => a -> Int
- byteSize = (`div` 8) . bitSize
- 
--pack :: (Bits a) => B.ByteString -> a
-+pack :: (Bits a, Num a) => B.ByteString -> a
- pack = B.foldl' (\n h -> (n `shiftL` 8) .|. fromIntegral h) 0
- 
- anyWordN :: (Bits a) => (B.ByteString -> a) -> Parser a
-@@ -84,4 +84,4 @@ word64be = wordN unpack
- 
- -- |Match a specific 64-bit little-endian word.
- word64le :: Word64 -> Parser Word64
--word64le = wordN $ B.reverse . unpack
-\ No newline at end of file
-+word64le = wordN $ B.reverse . unpack
diff --git a/pkgs/development/libraries/haskell/attoparsec/default.nix b/pkgs/development/libraries/haskell/attoparsec/default.nix
index 6f923605b67..e7bb666e677 100644
--- a/pkgs/development/libraries/haskell/attoparsec/default.nix
+++ b/pkgs/development/libraries/haskell/attoparsec/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "attoparsec";
-  version = "0.10.2.0";
-  sha256 = "0hvkx63knhxdc06lkv2avz2dblbvn0hhvckfqyr22ls1qrpgz71c";
+  version = "0.10.3.0";
+  sha256 = "1l4cnfgnynrprfvx0p3n6kca8arsmvb1yxb9ir782rrk537jci50";
   buildDepends = [ deepseq text ];
   meta = {
     homepage = "https://github.com/bos/attoparsec";
diff --git a/pkgs/development/libraries/haskell/base64-conduit/default.nix b/pkgs/development/libraries/haskell/base64-conduit/default.nix
new file mode 100644
index 00000000000..851dda488dc
--- /dev/null
+++ b/pkgs/development/libraries/haskell/base64-conduit/default.nix
@@ -0,0 +1,14 @@
+{ cabal, base64Bytestring, conduit }:
+
+cabal.mkDerivation (self: {
+  pname = "base64-conduit";
+  version = "0.5.1";
+  sha256 = "1zmp6iv55rac7x7w59az7zaarq79fr7zvgg2wcb5b627axlw909l";
+  buildDepends = [ base64Bytestring conduit ];
+  meta = {
+    homepage = "http://github.com/snoyberg/conduit";
+    description = "Base64-encode and decode streams of bytes";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/blaze-html/default.nix b/pkgs/development/libraries/haskell/blaze-html/default.nix
index 47abbfd7e7f..63859d5e91f 100644
--- a/pkgs/development/libraries/haskell/blaze-html/default.nix
+++ b/pkgs/development/libraries/haskell/blaze-html/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "blaze-html";
-  version = "0.5.1.1";
-  sha256 = "1z1lnfph4spy9vx2nfhbykkfcdnw14fars5aydrgi70spaq5ial2";
+  version = "0.5.1.3";
+  sha256 = "0ia7pk346lc7664w859q09p163cxgxjjpkk7cbmbl1wj2shshh1w";
   buildDepends = [ blazeBuilder blazeMarkup text ];
   meta = {
     homepage = "http://jaspervdj.be/blaze";
diff --git a/pkgs/development/libraries/haskell/blaze-markup/default.nix b/pkgs/development/libraries/haskell/blaze-markup/default.nix
index 17717486b42..becd1a24ec6 100644
--- a/pkgs/development/libraries/haskell/blaze-markup/default.nix
+++ b/pkgs/development/libraries/haskell/blaze-markup/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "blaze-markup";
-  version = "0.5.1.2";
-  sha256 = "1iqwcmb35793drkvnxx8z3zkyyzd6b84x9b8cp2aza2n0qw7sihm";
+  version = "0.5.1.4";
+  sha256 = "0g316qhk7yv6y680w93613apfhm458a01g3jmq42yv4ndydkv4rr";
   buildDepends = [ blazeBuilder text ];
   meta = {
     homepage = "http://jaspervdj.be/blaze";
diff --git a/pkgs/development/libraries/haskell/blaze-svg/default.nix b/pkgs/development/libraries/haskell/blaze-svg/default.nix
new file mode 100644
index 00000000000..7b3ec55dc57
--- /dev/null
+++ b/pkgs/development/libraries/haskell/blaze-svg/default.nix
@@ -0,0 +1,14 @@
+{ cabal, blazeMarkup, mtl }:
+
+cabal.mkDerivation (self: {
+  pname = "blaze-svg";
+  version = "0.3.3.0";
+  sha256 = "1wi4nc73ic3qmbx6v9fniacwcz2nlvmp5snn144fdiwb22klfn5f";
+  buildDepends = [ blazeMarkup mtl ];
+  meta = {
+    homepage = "https://github.com/deepakjois/blaze-svg";
+    description = "SVG combinator library";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/bmp/default.nix b/pkgs/development/libraries/haskell/bmp/1.2.2.1.nix
index e018ac7a8d2..e018ac7a8d2 100644
--- a/pkgs/development/libraries/haskell/bmp/default.nix
+++ b/pkgs/development/libraries/haskell/bmp/1.2.2.1.nix
diff --git a/pkgs/development/libraries/haskell/bmp/1.2.3.2.nix b/pkgs/development/libraries/haskell/bmp/1.2.3.2.nix
new file mode 100644
index 00000000000..64c13f15ee1
--- /dev/null
+++ b/pkgs/development/libraries/haskell/bmp/1.2.3.2.nix
@@ -0,0 +1,15 @@
+{ cabal, binary }:
+
+cabal.mkDerivation (self: {
+  pname = "bmp";
+  version = "1.2.3.2";
+  sha256 = "0lr6ys15ap3myzv48xmcy0bv17s4x2drskqz3kmbp06knrx9y1bh";
+  buildDepends = [ binary ];
+  meta = {
+    homepage = "http://code.ouroborus.net/bmp";
+    description = "Read and write uncompressed BMP image files";
+    license = self.stdenv.lib.licenses.mit;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [ self.stdenv.lib.maintainers.andres ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/case-insensitive/default.nix b/pkgs/development/libraries/haskell/case-insensitive/default.nix
index 7f53773f1ab..7f972dfd655 100644
--- a/pkgs/development/libraries/haskell/case-insensitive/default.nix
+++ b/pkgs/development/libraries/haskell/case-insensitive/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "case-insensitive";
-  version = "0.4.0.3";
-  sha256 = "1lpfxfwfxiimvh5nxqrnjqj2687dp7rmv9wkrpmw2zm5wkxwcmzf";
+  version = "0.4.0.4";
+  sha256 = "1xzpri688vbd6fvvxczqx8bv53009ygzws7vbjmj2q97wcm8nmwd";
   buildDepends = [ hashable text ];
   meta = {
     homepage = "https://github.com/basvandijk/case-insensitive";
diff --git a/pkgs/development/libraries/haskell/cipher-aes/default.nix b/pkgs/development/libraries/haskell/cipher-aes/default.nix
index 42152bfb0d7..e61fcfd95b5 100644
--- a/pkgs/development/libraries/haskell/cipher-aes/default.nix
+++ b/pkgs/development/libraries/haskell/cipher-aes/default.nix
@@ -2,10 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cipher-aes";
-  version = "0.1.2";
-  sha256 = "1c8drabfmx5wc519kxsr64bdvakfvxwzhfh7ym01kk1dpja0nlnq";
-  isLibrary = true;
-  isExecutable = true;
+  version = "0.1.5";
+  sha256 = "0n0qbq2hwyksdbr6fn7yj5vwicmdrn58mfz0dprl8fj456r4j3kn";
   meta = {
     homepage = "http://github.com/vincenthz/hs-cipher-aes";
     description = "Fast AES cipher implementation with advanced mode of operations";
diff --git a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix
index 31c7eecaa6e..ee9c93fa7f9 100644
--- a/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/classy-prelude-conduit/default.nix
@@ -1,10 +1,15 @@
-{ cabal, classyPrelude, conduit, xmlConduit }:
+{ cabal, classyPrelude, conduit, monadControl, resourcet
+, transformers, void, xmlConduit
+}:
 
 cabal.mkDerivation (self: {
   pname = "classy-prelude-conduit";
-  version = "0.4.1";
-  sha256 = "0llir0xnnyhgxifay019x64jw7mnn9p1sqs1xwm14gjcqr2nqqg8";
-  buildDepends = [ classyPrelude conduit xmlConduit ];
+  version = "0.4.2";
+  sha256 = "1p5j519s95cgiy5ig0agbfs4vyay8srzwsimnblij68zz5jjfrzp";
+  buildDepends = [
+    classyPrelude conduit monadControl resourcet transformers void
+    xmlConduit
+  ];
   meta = {
     homepage = "https://github.com/snoyberg/classy-prelude";
     description = "conduit instances for classy-prelude";
diff --git a/pkgs/development/libraries/haskell/classy-prelude/default.nix b/pkgs/development/libraries/haskell/classy-prelude/default.nix
index 8c5a94d4d12..dbc53987861 100644
--- a/pkgs/development/libraries/haskell/classy-prelude/default.nix
+++ b/pkgs/development/libraries/haskell/classy-prelude/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "classy-prelude";
-  version = "0.4.1";
-  sha256 = "14s1qirss8qbicdw4bc7smdnk1xrpp1xsii8kgmrb1z4ji0h9bf1";
+  version = "0.4.2";
+  sha256 = "082zqhyswzlnl250g8pf88nmh7pkwxwjwnkp0pm9960qsl6kbn7s";
   buildDepends = [
     basicPrelude hashable systemFilepath text transformers
     unorderedContainers vector
diff --git a/pkgs/development/libraries/haskell/conduit/default.nix b/pkgs/development/libraries/haskell/conduit/default.nix
index 9263bb0c893..07e24ab996e 100644
--- a/pkgs/development/libraries/haskell/conduit/default.nix
+++ b/pkgs/development/libraries/haskell/conduit/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "conduit";
-  version = "0.5.4.1";
-  sha256 = "00fx4v9phclyg8ybz22w8053pfvy92nibx5g3c6h37hhn7hnsxh4";
+  version = "0.5.5";
+  sha256 = "0av12gaxsrfmsbs70y532wfwnpz9v6ymn182dr8phpqn8d9lx2iq";
   buildDepends = [
     liftedBase monadControl resourcet text transformers
     transformersBase void
diff --git a/pkgs/development/libraries/haskell/cprng-aes/default.nix b/pkgs/development/libraries/haskell/cprng-aes/default.nix
index 1feb21a8b63..f2ad59dc88a 100644
--- a/pkgs/development/libraries/haskell/cprng-aes/default.nix
+++ b/pkgs/development/libraries/haskell/cprng-aes/default.nix
@@ -1,13 +1,11 @@
-{ cabal, cereal, cipherAes, cryptoApi, cryptocipher, entropy
-, random
-}:
+{ cabal, cipherAes, cryptoApi, cryptoRandomApi, entropy, random }:
 
 cabal.mkDerivation (self: {
   pname = "cprng-aes";
-  version = "0.2.4";
-  sha256 = "0rk14yj76p5a1h6jlz4q2fgijjid430lwcr57zkkda8mdibqqs5j";
+  version = "0.3.1";
+  sha256 = "0z1kpgy9d4yp1vmcparsv3r5g1khv2yqqkr99ac3mgvr6pyh24dk";
   buildDepends = [
-    cereal cipherAes cryptoApi cryptocipher entropy random
+    cipherAes cryptoApi cryptoRandomApi entropy random
   ];
   meta = {
     homepage = "http://github.com/vincenthz/hs-cprng-aes";
diff --git a/pkgs/development/libraries/haskell/crypto-conduit/default.nix b/pkgs/development/libraries/haskell/crypto-conduit/default.nix
index d279af5d798..9d7ad082530 100644
--- a/pkgs/development/libraries/haskell/crypto-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/crypto-conduit/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "crypto-conduit";
-  version = "0.4.1";
-  sha256 = "1gdznwcq3fb9ls68lgpwna6k1k612j241c8441z7r2kx3a64dqwv";
+  version = "0.4.2";
+  sha256 = "0kg99kvpm5h8v28sylrp9z868ksz5737377akqy09y90xzb8pak3";
   buildDepends = [ cereal conduit cryptoApi transformers ];
   meta = {
     homepage = "https://github.com/meteficha/crypto-conduit";
diff --git a/pkgs/development/libraries/haskell/crypto-random-api/default.nix b/pkgs/development/libraries/haskell/crypto-random-api/default.nix
new file mode 100644
index 00000000000..0530a4bb245
--- /dev/null
+++ b/pkgs/development/libraries/haskell/crypto-random-api/default.nix
@@ -0,0 +1,14 @@
+{ cabal, entropy }:
+
+cabal.mkDerivation (self: {
+  pname = "crypto-random-api";
+  version = "0.1.0";
+  sha256 = "1zx05hskzdxm0kfj6x9qsx8f659zv77pa189s3xg56i7h18d25md";
+  buildDepends = [ entropy ];
+  meta = {
+    homepage = "http://github.com/vincenthz/hs-crypto-random-api";
+    description = "Simple random generators API for cryptography related code";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/cryptocipher/default.nix b/pkgs/development/libraries/haskell/cryptocipher/default.nix
index b464180ca55..89b098173ec 100644
--- a/pkgs/development/libraries/haskell/cryptocipher/default.nix
+++ b/pkgs/development/libraries/haskell/cryptocipher/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cryptocipher";
-  version = "0.3.6";
-  sha256 = "0r2alw0in0ndaz7y9bzqigla74wbn8h1z43s2zx5rc3sq5p3rp6s";
+  version = "0.3.7";
+  sha256 = "14qhi3969q1h9n85flb7wwsr50gdn63q7pmcpm2npy5vkp34lkp5";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/cryptohash/default.nix b/pkgs/development/libraries/haskell/cryptohash/default.nix
index 516bf3692d3..e0724e49ccb 100644
--- a/pkgs/development/libraries/haskell/cryptohash/default.nix
+++ b/pkgs/development/libraries/haskell/cryptohash/default.nix
@@ -2,10 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cryptohash";
-  version = "0.7.9";
-  sha256 = "1prbc65klr93mvqj4hass5yyxv353fral70mj379jrf4m93429hz";
-  isLibrary = true;
-  isExecutable = true;
+  version = "0.8.1";
+  sha256 = "1xxnmxfpd77ahyjhy2fq3fxhiivhj6k12v1z72ndyhrd3369zqky";
   buildDepends = [ cereal cryptoApi tagged ];
   meta = {
     homepage = "http://github.com/vincenthz/hs-cryptohash";
diff --git a/pkgs/development/libraries/haskell/diagrams/cairo.nix b/pkgs/development/libraries/haskell/diagrams/cairo.nix
index f23be1ebfb1..bc2abf5c16d 100644
--- a/pkgs/development/libraries/haskell/diagrams/cairo.nix
+++ b/pkgs/development/libraries/haskell/diagrams/cairo.nix
@@ -1,15 +1,15 @@
-{ cabal, cairo, cmdargs, diagramsCore, diagramsLib, filepath, gtk
-, mtl, split
+{ cabal, cairo, cmdargs, colour, diagramsCore, diagramsLib
+, filepath, mtl, split, time
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-cairo";
-  version = "0.5.0.2";
-  sha256 = "1wwk65c2cx7rkhmai5spms791fjhl3snwhj0w9399q8pgj6g4lj8";
+  version = "0.6";
+  sha256 = "0fxqwkv2cpgpkr80q828rm91ybn7j0dwj1p5ysc3648w28jvhkil";
   buildDepends = [
-    cairo cmdargs diagramsCore diagramsLib filepath gtk mtl split
+    cairo cmdargs colour diagramsCore diagramsLib filepath mtl split
+    time
   ];
-  jailbreak = true;
   meta = {
     homepage = "http://projects.haskell.org/diagrams";
     description = "Cairo backend for diagrams drawing EDSL";
diff --git a/pkgs/development/libraries/haskell/diagrams/contrib.nix b/pkgs/development/libraries/haskell/diagrams/contrib.nix
new file mode 100644
index 00000000000..b31af6bd383
--- /dev/null
+++ b/pkgs/development/libraries/haskell/diagrams/contrib.nix
@@ -0,0 +1,18 @@
+{ cabal, colour, dataDefault, diagramsLib, forceLayout, lens, mtl
+, vectorSpace
+}:
+
+cabal.mkDerivation (self: {
+  pname = "diagrams-contrib";
+  version = "0.6";
+  sha256 = "059ljwsbrkzj2wvx9q4viinz46nw5lf4yjmx2c1dmwaqfz3i7j7i";
+  buildDepends = [
+    colour dataDefault diagramsLib forceLayout lens mtl vectorSpace
+  ];
+  meta = {
+    homepage = "http://projects.haskell.org/diagrams/";
+    description = "Collection of user contributions to diagrams EDSL";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/diagrams/core.nix b/pkgs/development/libraries/haskell/diagrams/core.nix
index 365e2737131..3f494208662 100644
--- a/pkgs/development/libraries/haskell/diagrams/core.nix
+++ b/pkgs/development/libraries/haskell/diagrams/core.nix
@@ -1,13 +1,14 @@
-{ cabal, MemoTrie, newtype, semigroups, vectorSpace
-, vectorSpacePoints
+{ cabal, dualTree, MemoTrie, monoidExtras, newtype, semigroups
+, vectorSpace, vectorSpacePoints
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-core";
-  version = "0.5.0.1";
-  sha256 = "073fk9cxm1kh92alr51dgwps9wxc5w3470axc6q7w91sk5cskpxy";
+  version = "0.6";
+  sha256 = "15frd5jdzkgpdcvyyhd0mbi5d4a69ajcnxawa1gafl4c3byz1778";
   buildDepends = [
-    MemoTrie newtype semigroups vectorSpace vectorSpacePoints
+    dualTree MemoTrie monoidExtras newtype semigroups vectorSpace
+    vectorSpacePoints
   ];
   meta = {
     homepage = "http://projects.haskell.org/diagrams";
diff --git a/pkgs/development/libraries/haskell/diagrams/diagrams.nix b/pkgs/development/libraries/haskell/diagrams/diagrams.nix
index 21c3a7a28f6..293cdab1f9e 100644
--- a/pkgs/development/libraries/haskell/diagrams/diagrams.nix
+++ b/pkgs/development/libraries/haskell/diagrams/diagrams.nix
@@ -1,10 +1,12 @@
-{ cabal, diagramsCairo, diagramsCore, diagramsLib }:
+{ cabal, diagramsContrib, diagramsCore, diagramsLib, diagramsSvg }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams";
-  version = "0.5";
-  sha256 = "163h2fg3gpmsfm57gjyja2rxh9pl6s3xnzlidfdy201zbk1mzdg5";
-  buildDepends = [ diagramsCairo diagramsCore diagramsLib ];
+  version = "0.6";
+  sha256 = "1i62jbixjzw82y622ymp6lrp4kzgn7iv55arivvh0y46bbmybqvh";
+  buildDepends = [
+    diagramsContrib diagramsCore diagramsLib diagramsSvg
+  ];
   noHaddock = true;
   meta = {
     homepage = "http://projects.haskell.org/diagrams";
diff --git a/pkgs/development/libraries/haskell/diagrams/lib.nix b/pkgs/development/libraries/haskell/diagrams/lib.nix
index d5c386c1e1f..472657b2df7 100644
--- a/pkgs/development/libraries/haskell/diagrams/lib.nix
+++ b/pkgs/development/libraries/haskell/diagrams/lib.nix
@@ -1,14 +1,14 @@
-{ cabal, active, colour, dataDefault, diagramsCore, newtype
-, NumInstances, semigroups, vectorSpace
+{ cabal, active, colour, dataDefault, diagramsCore, monoidExtras
+, newtype, NumInstances, semigroups, vectorSpace
 }:
 
 cabal.mkDerivation (self: {
   pname = "diagrams-lib";
-  version = "0.5.0.1";
-  sha256 = "0spfsllr2z064cxkdqcij02f0ikxxmll2dqj7rfikp4738wj21dy";
+  version = "0.6";
+  sha256 = "05nfp5ggjk4fviwvwiblmzzw5dbzbi1w8dx5dimvah7wxb0km3lf";
   buildDepends = [
-    active colour dataDefault diagramsCore newtype NumInstances
-    semigroups vectorSpace
+    active colour dataDefault diagramsCore monoidExtras newtype
+    NumInstances semigroups vectorSpace
   ];
   meta = {
     homepage = "http://projects.haskell.org/diagrams";
diff --git a/pkgs/development/libraries/haskell/diagrams/svg.nix b/pkgs/development/libraries/haskell/diagrams/svg.nix
new file mode 100644
index 00000000000..561f32118c2
--- /dev/null
+++ b/pkgs/development/libraries/haskell/diagrams/svg.nix
@@ -0,0 +1,19 @@
+{ cabal, blazeSvg, cmdargs, colour, diagramsCore, diagramsLib
+, filepath, monoidExtras, mtl, split, time, vectorSpace
+}:
+
+cabal.mkDerivation (self: {
+  pname = "diagrams-svg";
+  version = "0.6.0.1";
+  sha256 = "0x4yjm1wdhicknls1y3fhdg89m8wcvfk2svabww9075w6ras79qk";
+  buildDepends = [
+    blazeSvg cmdargs colour diagramsCore diagramsLib filepath
+    monoidExtras mtl split time vectorSpace
+  ];
+  meta = {
+    homepage = "http://projects.haskell.org/diagrams/";
+    description = "SVG backend for diagrams drawing EDSL";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix b/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix
index acc75a3552a..92eadc44fcf 100644
--- a/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix
+++ b/pkgs/development/libraries/haskell/digestive-functors-heist/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "digestive-functors-heist";
-  version = "0.5.0.0";
-  sha256 = "1cqzpnr53mailnmjgkbqk4f4hrjd84h6682mr8x7qg5v27zvcdbn";
+  version = "0.5.1.0";
+  sha256 = "1rycf6y1c0car2m71iia929si5iqpc2rdyyxzp326q0rgj94whpk";
   buildDepends = [ digestiveFunctors heist text xmlhtml ];
   meta = {
     homepage = "http://github.com/jaspervdj/digestive-functors";
diff --git a/pkgs/development/libraries/haskell/dual-tree/default.nix b/pkgs/development/libraries/haskell/dual-tree/default.nix
new file mode 100644
index 00000000000..f1206fd822e
--- /dev/null
+++ b/pkgs/development/libraries/haskell/dual-tree/default.nix
@@ -0,0 +1,13 @@
+{ cabal, monoidExtras, newtype, semigroups }:
+
+cabal.mkDerivation (self: {
+  pname = "dual-tree";
+  version = "0.1.0.0";
+  sha256 = "0av525gjxzd2hhrg5da647chwbv4j30gccaff2b3n5qijzy8l167";
+  buildDepends = [ monoidExtras newtype semigroups ];
+  meta = {
+    description = "Rose trees with cached and accumulating monoidal annotations";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/either/default.nix b/pkgs/development/libraries/haskell/either/default.nix
new file mode 100644
index 00000000000..3d293d3b86e
--- /dev/null
+++ b/pkgs/development/libraries/haskell/either/default.nix
@@ -0,0 +1,14 @@
+{ cabal, semigroupoids, semigroups, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "either";
+  version = "3.0.2";
+  sha256 = "1s3rpxxqc9052hrmiznwqwxhl4826qzbgpivpv5acxfhm0w06lhg";
+  buildDepends = [ semigroupoids semigroups transformers ];
+  meta = {
+    homepage = "http://github.com/ekmett/either/";
+    description = "Haskell 98 either monad transformer";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/errors/default.nix b/pkgs/development/libraries/haskell/errors/default.nix
new file mode 100644
index 00000000000..d2e68670eb0
--- /dev/null
+++ b/pkgs/development/libraries/haskell/errors/default.nix
@@ -0,0 +1,13 @@
+{ cabal, either, safe, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "errors";
+  version = "1.3.1";
+  sha256 = "0vfpnpkiz362bvjyaf35spfk3h6vw7xi1x3f8agzs7kmxrdvrfik";
+  buildDepends = [ either safe transformers ];
+  meta = {
+    description = "Simplified error-handling";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/force-layout/default.nix b/pkgs/development/libraries/haskell/force-layout/default.nix
new file mode 100644
index 00000000000..025ed14869f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/force-layout/default.nix
@@ -0,0 +1,13 @@
+{ cabal, lens, newtype, vectorSpace, vectorSpacePoints }:
+
+cabal.mkDerivation (self: {
+  pname = "force-layout";
+  version = "0.2";
+  sha256 = "0aif7a28qs8ya7q9sklp02gb5228jyj8k4jabbp2sia7j4khrkpv";
+  buildDepends = [ lens newtype vectorSpace vectorSpacePoints ];
+  meta = {
+    description = "Simple force-directed layout";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/generic-deriving/default.nix b/pkgs/development/libraries/haskell/generic-deriving/default.nix
index 27eecd552a6..c071aba7dec 100644
--- a/pkgs/development/libraries/haskell/generic-deriving/default.nix
+++ b/pkgs/development/libraries/haskell/generic-deriving/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "generic-deriving";
-  version = "1.3.1";
-  sha256 = "1z02j86lgn57ws0rfq2m0zb0m866k9afh9346k8bbwb5c4914wm3";
+  version = "1.4.0";
+  sha256 = "15av3l4m4qn5by41rkpdvp1kyp3fi9ixvy76wmyj20c46kjbmra7";
   meta = {
     description = "Generic programming library for generalised deriving";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix
index 6ef59a4451b..266740cbaac 100644
--- a/pkgs/development/libraries/haskell/ghc-mod/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "ghc-mod";
-  version = "1.11.2";
-  sha256 = "0df1g57mwgd9avd2smnc7j97n14553p3zdmnbjanhnzin2fqj0dc";
+  version = "1.11.3";
+  sha256 = "13r3cz25lf0ndsyfc5adqx5mdv7hcl3qp7n2syg2msrn133xpwb2";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/ghc-paths/default.nix b/pkgs/development/libraries/haskell/ghc-paths/default.nix
index 8f01db02f99..b930e993dcc 100644
--- a/pkgs/development/libraries/haskell/ghc-paths/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-paths/default.nix
@@ -2,8 +2,9 @@
 
 cabal.mkDerivation (self: {
   pname = "ghc-paths";
-  version = "0.1.0.8";
-  sha256 = "0mhc5zhbybp1vmkjsqbca51993vkpx5g8hql160m8m95apkc2wl6";
+  version = "0.1.0.9";
+  sha256 = "0ibrr1dxa35xx20cpp8jzgfak1rdmy344dfwq4vlq013c6w8z9mg";
+  patches = [ ./ghc-paths-nix.patch ];
   meta = {
     description = "Knowledge of GHC's installation directories";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/ghc-paths/ghc-paths-nix.patch b/pkgs/development/libraries/haskell/ghc-paths/ghc-paths-nix.patch
new file mode 100644
index 00000000000..b3c75a26a03
--- /dev/null
+++ b/pkgs/development/libraries/haskell/ghc-paths/ghc-paths-nix.patch
@@ -0,0 +1,43 @@
+diff -Naur ghc-paths-0.1.0.9/GHC/Paths.hs ghc-paths-0.1.0.9-new/GHC/Paths.hs
+--- ghc-paths-0.1.0.9/GHC/Paths.hs	2012-12-16 13:53:45.720148396 +0100
++++ ghc-paths-0.1.0.9-new/GHC/Paths.hs	2012-12-16 17:22:12.765576568 +0100
+@@ -1,13 +1,35 @@
+ {-# LANGUAGE CPP #-}
++{-# LANGUAGE ScopedTypeVariables #-}
+ 
+ module GHC.Paths (
+         ghc, ghc_pkg, libdir, docdir
+   ) where
+ 
++import Control.Exception as E
++import Data.Maybe
++import System.Environment
++import System.IO.Unsafe
++
++-- Yes, there's lookupEnv now, but we want to be compatible
++-- with older GHCs.
++checkEnv :: String -> IO (Maybe String)
++checkEnv var = E.catch (fmap Just (getEnv var))
++                       (\ (e :: IOException) -> return Nothing)
++
++nixLibdir, nixDocdir, nixGhc, nixGhcPkg :: Maybe FilePath
++nixLibdir = unsafePerformIO (checkEnv "NIX_GHC_LIBDIR")
++nixDocdir = unsafePerformIO (checkEnv "NIX_GHC_DOCDIR")
++nixGhc    = unsafePerformIO (checkEnv "NIX_GHC")
++nixGhcPkg = unsafePerformIO (checkEnv "NIX_GHCPKG")
++{-# NOINLINE nixLibdir #-}
++{-# NOINLINE nixDocdir #-}
++{-# NOINLINE nixGhc    #-}
++{-# NOINLINE nixGhcPkg #-}
++
+ libdir, docdir, ghc, ghc_pkg :: FilePath
+ 
+-libdir  = GHC_PATHS_LIBDIR
+-docdir  = GHC_PATHS_DOCDIR
++libdir  = fromMaybe GHC_PATHS_LIBDIR  nixLibdir
++docdir  = fromMaybe GHC_PATHS_DOCDIR  nixDocdir
+ 
+-ghc     = GHC_PATHS_GHC
+-ghc_pkg = GHC_PATHS_GHC_PKG
++ghc     = fromMaybe GHC_PATHS_GHC     nixGhc
++ghc_pkg = fromMaybe GHC_PATHS_GHC_PKG nixGhcPkg
diff --git a/pkgs/development/libraries/haskell/gloss/default.nix b/pkgs/development/libraries/haskell/gloss/default.nix
index 7d2319df08a..a0fb693acbb 100644
--- a/pkgs/development/libraries/haskell/gloss/default.nix
+++ b/pkgs/development/libraries/haskell/gloss/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "gloss";
-  version = "1.7.6.6";
-  sha256 = "1by8zr1194mjnnia0ackhd48yqxh79k752c5jwxx6nsk1diwrvl9";
+  version = "1.7.8.1";
+  sha256 = "0bi60zprgq1dd6prshvgqyyp13l6n5f171aryxg254kjagvrm3lf";
   buildDepends = [ bmp GLUT OpenGL ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/glpk-hs/default.nix b/pkgs/development/libraries/haskell/glpk-hs/default.nix
index 006f227a8c2..fbbe7d31c2a 100644
--- a/pkgs/development/libraries/haskell/glpk-hs/default.nix
+++ b/pkgs/development/libraries/haskell/glpk-hs/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "glpk-hs";
-  version = "0.3.3";
-  sha256 = "1pnq0v5va7f40ky9xb8c4z9wcmmnny2vk4afasz5pwivbxh42mfl";
+  version = "0.3.4";
+  sha256 = "0wyasd0dqi5nnh52lx980vnyhm0rwib0sd7qnpj4s9hq8rn994cm";
   buildDepends = [ deepseq mtl ];
   extraLibraries = [ glpk ];
   meta = {
diff --git a/pkgs/development/libraries/haskell/hakyll/default.nix b/pkgs/development/libraries/haskell/hakyll/default.nix
index ef2cc128e04..093a92dd16e 100644
--- a/pkgs/development/libraries/haskell/hakyll/default.nix
+++ b/pkgs/development/libraries/haskell/hakyll/default.nix
@@ -5,13 +5,14 @@
 
 cabal.mkDerivation (self: {
   pname = "hakyll";
-  version = "3.5.1.0";
-  sha256 = "16aaxnknxbpzdlm6dlmsq8pfssp63ywqim0zm3kvf7zic3hvq2xr";
+  version = "3.5.2.0";
+  sha256 = "088qhzycpz003qa4b7hnn6frgmidk6219icii04ap964fkw0mqn0";
   buildDepends = [
     binary blazeHtml blazeMarkup citeprocHs cryptohash filepath hamlet
     lrucache mtl pandoc parsec regexBase regexTdfa snapCore snapServer
     tagsoup text time
   ];
+  jailbreak = true;
   meta = {
     homepage = "http://jaspervdj.be/hakyll";
     description = "A static website compiler library";
diff --git a/pkgs/development/libraries/haskell/hamlet/default.nix b/pkgs/development/libraries/haskell/hamlet/default.nix
index 0fc9d7b59f3..609b1ad4fb8 100644
--- a/pkgs/development/libraries/haskell/hamlet/default.nix
+++ b/pkgs/development/libraries/haskell/hamlet/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hamlet";
-  version = "1.1.1.1";
-  sha256 = "0vxnvh9npsf1jxh471fnr2d13bdi7p8sxn5b2w86bla3q273jxp8";
+  version = "1.1.2";
+  sha256 = "0k6wnjqmap4wv0p1hvzpd8br4wr4vda9aw87agzf7pix6hwmiybq";
   buildDepends = [
     blazeBuilder blazeHtml blazeMarkup failure parsec shakespeare text
   ];
diff --git a/pkgs/development/libraries/haskell/happstack/happstack-server.nix b/pkgs/development/libraries/haskell/happstack/happstack-server.nix
index e864075b42a..b2311bde6ca 100644
--- a/pkgs/development/libraries/haskell/happstack/happstack-server.nix
+++ b/pkgs/development/libraries/haskell/happstack/happstack-server.nix
@@ -1,18 +1,18 @@
 { cabal, base64Bytestring, blazeHtml, extensibleExceptions
 , filepath, hslogger, html, monadControl, mtl, network, parsec
-, sendfile, syb, systemFilepath, text, threads, time, transformers
-, transformersBase, utf8String, xhtml, zlib
+, sendfile, syb, systemFilepath, text, threads, time, timeCompat
+, transformers, transformersBase, utf8String, xhtml, zlib
 }:
 
 cabal.mkDerivation (self: {
   pname = "happstack-server";
-  version = "7.0.7";
-  sha256 = "0r9bk82zjzlsi6j6dnz5b73qacpfdyhsn5ds98cn7gkqyf4yg7cj";
+  version = "7.1.1";
+  sha256 = "0q12l93kq5ixvam682ys3a6i3q59amz9cyr1bb06f2zf8qr57b7a";
   buildDepends = [
     base64Bytestring blazeHtml extensibleExceptions filepath hslogger
     html monadControl mtl network parsec sendfile syb systemFilepath
-    text threads time transformers transformersBase utf8String xhtml
-    zlib
+    text threads time timeCompat transformers transformersBase
+    utf8String xhtml zlib
   ];
   meta = {
     homepage = "http://happstack.com";
diff --git a/pkgs/development/libraries/haskell/heist/default.nix b/pkgs/development/libraries/haskell/heist/default.nix
index d87f4fe239e..6a6d0d7ddf3 100644
--- a/pkgs/development/libraries/haskell/heist/default.nix
+++ b/pkgs/development/libraries/haskell/heist/default.nix
@@ -1,20 +1,20 @@
 { cabal, aeson, attoparsec, blazeBuilder, blazeHtml, directoryTree
-, filepath, MonadCatchIOTransformers, mtl, random, text, time
-, unorderedContainers, vector, xmlhtml
+, dlist, errors, filepath, hashable, MonadCatchIOTransformers, mtl
+, random, text, time, unorderedContainers, vector, xmlhtml
 }:
 
 cabal.mkDerivation (self: {
   pname = "heist";
-  version = "0.8.2";
-  sha256 = "0zamggvfq9054vxznbnfq1fihk110ih8q0dza1rmsjb1h2s88rkj";
+  version = "0.10.1";
+  sha256 = "1rwik8x2bfb0474vc1wzbqlhjgas3089g1rvphs7irfbmyki1646";
   buildDepends = [
-    aeson attoparsec blazeBuilder blazeHtml directoryTree filepath
-    MonadCatchIOTransformers mtl random text time unorderedContainers
-    vector xmlhtml
+    aeson attoparsec blazeBuilder blazeHtml directoryTree dlist errors
+    filepath hashable MonadCatchIOTransformers mtl random text time
+    unorderedContainers vector xmlhtml
   ];
   meta = {
     homepage = "http://snapframework.com/";
-    description = "An (x)html templating system";
+    description = "An Haskell template system supporting both HTML5 and XML";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
   };
diff --git a/pkgs/development/libraries/haskell/hjsmin/default.nix b/pkgs/development/libraries/haskell/hjsmin/default.nix
index 35eed1de3f0..58720e33f7b 100644
--- a/pkgs/development/libraries/haskell/hjsmin/default.nix
+++ b/pkgs/development/libraries/haskell/hjsmin/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hjsmin";
-  version = "0.1.3";
-  sha256 = "0lz7qsm74hbs8qa5d3khw43ipiimjbvxsrqqmxvp44605ib22y4d";
+  version = "0.1.4";
+  sha256 = "1w4w560p7xy3lci36xy01dpwl0hhf9iv8gy4ldqvh33931pkxhxn";
   buildDepends = [ blazeBuilder languageJavascript text ];
   meta = {
     homepage = "http://github.com/alanz/hjsmin";
diff --git a/pkgs/development/libraries/haskell/hledger-web/default.nix b/pkgs/development/libraries/haskell/hledger-web/default.nix
index 75419bae47b..2e50b19f011 100644
--- a/pkgs/development/libraries/haskell/hledger-web/default.nix
+++ b/pkgs/development/libraries/haskell/hledger-web/default.nix
@@ -19,6 +19,7 @@ cabal.mkDerivation (self: {
     shakespeareJs shakespeareText text time transformers wai waiExtra
     warp yaml yesod yesodCore yesodDefault yesodForm yesodStatic
   ];
+  jailbreak = true;
   meta = {
     homepage = "http://hledger.org";
     description = "A web interface for the hledger accounting tool";
diff --git a/pkgs/development/libraries/haskell/hspec/default.nix b/pkgs/development/libraries/haskell/hspec/default.nix
index 4c43513e229..79f4696362b 100644
--- a/pkgs/development/libraries/haskell/hspec/default.nix
+++ b/pkgs/development/libraries/haskell/hspec/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hspec";
-  version = "1.4.2";
-  sha256 = "0qlm6p5i1fkgyca704bsjc1nm1ks19pfq6l3vmzsszjzbdl8p5cq";
+  version = "1.4.3";
+  sha256 = "0i963fxamyyi3afac67rkw4340i3xqs1q3lvcy69mq0czbdvgjmc";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/http-conduit/default.nix b/pkgs/development/libraries/haskell/http-conduit/default.nix
index abdaeea81e5..b0755946eef 100644
--- a/pkgs/development/libraries/haskell/http-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/http-conduit/default.nix
@@ -8,8 +8,8 @@
 
 cabal.mkDerivation (self: {
   pname = "http-conduit";
-  version = "1.8.4.3";
-  sha256 = "1g8cpi2mmsrdfh54ik4xlxnf1sf1r1bhnvp5b0rvhbwphcr4z93r";
+  version = "1.8.5.1";
+  sha256 = "1v70rslnga063mlpfs1w03y1s4x7kfisjqwbcbczynhz15s9hymx";
   buildDepends = [
     asn1Data attoparsec attoparsecConduit base64Bytestring blazeBuilder
     blazeBuilderConduit caseInsensitive certificate conduit cookie
diff --git a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
index c66179bc103..7e50b68286c 100644
--- a/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
+++ b/pkgs/development/libraries/haskell/http-reverse-proxy/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "http-reverse-proxy";
-  version = "0.1.0.6";
-  sha256 = "0ybhzyim8b2k1kv5bz0qbignj5lwf8pbpqmrp1vrvyz8a2iy71c8";
+  version = "0.1.0.7";
+  sha256 = "1fshng7bcpzjq5iqnvl2qsyia9yi80b8sbif18a3w86gsw5xcakk";
   buildDepends = [
     blazeBuilder caseInsensitive classyPreludeConduit conduit
     httpConduit httpTypes liftedBase monadControl network
diff --git a/pkgs/development/libraries/haskell/iproute/default.nix b/pkgs/development/libraries/haskell/iproute/default.nix
index d323bece64c..c342f80a6c2 100644
--- a/pkgs/development/libraries/haskell/iproute/default.nix
+++ b/pkgs/development/libraries/haskell/iproute/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "iproute";
-  version = "1.2.7";
-  sha256 = "07ixxq45w5wzvfrvsv2b206kygiqn1v3bcclkd98afjpc6mv3ld3";
+  version = "1.2.10";
+  sha256 = "1ni91llvq1mfdsjmw1laqhk964y4vlpyk5s25j8klsfn27mq6c68";
   buildDepends = [ appar byteorder network ];
   meta = {
     homepage = "http://www.mew.org/~kazu/proj/iproute/";
diff --git a/pkgs/development/libraries/haskell/kansas-lava/default.nix b/pkgs/development/libraries/haskell/kansas-lava/default.nix
new file mode 100644
index 00000000000..6ae0447b1fe
--- /dev/null
+++ b/pkgs/development/libraries/haskell/kansas-lava/default.nix
@@ -0,0 +1,22 @@
+{ cabal, cmdargs, dataDefault, dataReify, dotgen, filepath, netlist
+, netlistToVhdl, random, sizedTypes, strict
+}:
+
+cabal.mkDerivation (self: {
+  pname = "kansas-lava";
+  version = "0.2.4";
+  sha256 = "0rsjlj558k57r1sfm12n9r9wn8r615bbrwgjhal07qhvy4qip4pg";
+  isLibrary = true;
+  isExecutable = true;
+  buildDepends = [
+    cmdargs dataDefault dataReify dotgen filepath netlist netlistToVhdl
+    random sizedTypes strict
+  ];
+  jailbreak = true;
+  meta = {
+    homepage = "http://ittc.ku.edu/csdl/fpg/Tools/KansasLava";
+    description = "Kansas Lava is a hardware simulator and VHDL generator";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/language-c-quote/default.nix b/pkgs/development/libraries/haskell/language-c-quote/default.nix
index 77396e3cf55..136c2f30191 100644
--- a/pkgs/development/libraries/haskell/language-c-quote/default.nix
+++ b/pkgs/development/libraries/haskell/language-c-quote/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "language-c-quote";
-  version = "0.4.3";
-  sha256 = "13xpmj3jrqkcgilkh4p8ycxhlk5yvfsisx4c1ax7n7aafg1n7phf";
+  version = "0.4.4";
+  sha256 = "1g233ja3qy64xcimy9irfb3n8zys00vg1d0s4g3hr48ilc95dl8l";
   buildDepends = [
     exceptionMtl exceptionTransformers filepath haskellSrcMeta
     mainlandPretty mtl srcloc syb symbol
diff --git a/pkgs/development/libraries/haskell/largeword/default.nix b/pkgs/development/libraries/haskell/largeword/default.nix
index 67159c2bcbf..991213067f6 100644
--- a/pkgs/development/libraries/haskell/largeword/default.nix
+++ b/pkgs/development/libraries/haskell/largeword/default.nix
@@ -2,10 +2,10 @@
 
 cabal.mkDerivation (self: {
   pname = "largeword";
-  version = "1.0.3";
-  sha256 = "18b6nhq1cww4wdbrfq0cb828kncxzcsibgs5dbgxa66y6iw93vkg";
+  version = "1.0.4";
+  sha256 = "19nrzbbbmsvxdhfhh6wc53lbk0xyjvbcwvjw0snym666j1w2b2l5";
   meta = {
-    homepage = "http://trac.haskell.org/largeword/wiki";
+    homepage = "https://github.com/idontgetoutmuch/largeword";
     description = "Provides Word128, Word192 and Word256 and a way of producing other large words if required";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/development/libraries/haskell/lens/default.nix b/pkgs/development/libraries/haskell/lens/default.nix
index a2105cf9f77..6a2ca0866b7 100644
--- a/pkgs/development/libraries/haskell/lens/default.nix
+++ b/pkgs/development/libraries/haskell/lens/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "lens";
-  version = "3.6";
-  sha256 = "1zl52hj0ccx21qwlqrscfjmc7i0g2prikmd3lgbfbgjqlh7wnqdq";
+  version = "3.7.1";
+  sha256 = "16rgfv21f7sl7n6gqn4750i3yv7w972ybn883yr474y4xwhhyh6w";
   buildDepends = [
     comonad comonadsFd comonadTransformers filepath hashable mtl
     parallel semigroups split text transformers unorderedContainers
diff --git a/pkgs/development/libraries/haskell/lifted-base/default.nix b/pkgs/development/libraries/haskell/lifted-base/default.nix
index e5c334e1b22..fbb09db9bb8 100644
--- a/pkgs/development/libraries/haskell/lifted-base/default.nix
+++ b/pkgs/development/libraries/haskell/lifted-base/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "lifted-base";
-  version = "0.2";
-  sha256 = "12ai34wb1sd6fza50arlpvsdc6l2nwrrcik0xakf2q0ddzjmhjfb";
+  version = "0.2.0.2";
+  sha256 = "19xzparj0k5h4wx71gvbd7l653fak1p57za236sncmar8cps5pdx";
   buildDepends = [
     baseUnicodeSymbols monadControl transformersBase
   ];
diff --git a/pkgs/development/libraries/haskell/minimorph/default.nix b/pkgs/development/libraries/haskell/minimorph/default.nix
new file mode 100644
index 00000000000..54fc100b7dd
--- /dev/null
+++ b/pkgs/development/libraries/haskell/minimorph/default.nix
@@ -0,0 +1,14 @@
+{ cabal, text }:
+
+cabal.mkDerivation (self: {
+  pname = "minimorph";
+  version = "0.1.4.0";
+  sha256 = "16ri9hfriszrgqcm111b1pp5x65s034hrc35kjz5qax32mnc9rn6";
+  buildDepends = [ text ];
+  meta = {
+    homepage = "http://darcsden.com/kowey/minimorph";
+    description = "English spelling functions with an emphasis on simplicity";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/miniutter/default.nix b/pkgs/development/libraries/haskell/miniutter/default.nix
new file mode 100644
index 00000000000..b06ee1363c8
--- /dev/null
+++ b/pkgs/development/libraries/haskell/miniutter/default.nix
@@ -0,0 +1,14 @@
+{ cabal, minimorph, text }:
+
+cabal.mkDerivation (self: {
+  pname = "miniutter";
+  version = "0.4.0";
+  sha256 = "1l275aad8svrqp22jv9s0mmlam7wbdlf6m4m97658rm8ks4j2mbx";
+  buildDepends = [ minimorph text ];
+  meta = {
+    homepage = "https://github.com/Mikolaj/miniutter";
+    description = "Simple English clause creation from arbitrary words";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/monad-logger/default.nix b/pkgs/development/libraries/haskell/monad-logger/default.nix
index 0a5f52512c6..40f82c69a37 100644
--- a/pkgs/development/libraries/haskell/monad-logger/default.nix
+++ b/pkgs/development/libraries/haskell/monad-logger/default.nix
@@ -1,10 +1,15 @@
-{ cabal, fastLogger, resourcet, text, transformers }:
+{ cabal, conduit, fastLogger, monadControl, mtl, resourcet, text
+, transformers, transformersBase
+}:
 
 cabal.mkDerivation (self: {
   pname = "monad-logger";
-  version = "0.2.1";
-  sha256 = "00ssh60rxw7dg1dcfh8kr4mg9p7pvvvmjf9xd8kvxbrb9s3nkc4s";
-  buildDepends = [ fastLogger resourcet text transformers ];
+  version = "0.2.3.1";
+  sha256 = "15f85cf1nsy3xbjgikrn8cr09r70h8n2c67bpbxnfjna3ak94gkn";
+  buildDepends = [
+    conduit fastLogger monadControl mtl resourcet text transformers
+    transformersBase
+  ];
   meta = {
     homepage = "https://github.com/kazu-yamamoto/logger";
     description = "A class of monads which can log messages";
diff --git a/pkgs/development/libraries/haskell/monoid-extras/default.nix b/pkgs/development/libraries/haskell/monoid-extras/default.nix
new file mode 100644
index 00000000000..a86bdce3839
--- /dev/null
+++ b/pkgs/development/libraries/haskell/monoid-extras/default.nix
@@ -0,0 +1,13 @@
+{ cabal, semigroups }:
+
+cabal.mkDerivation (self: {
+  pname = "monoid-extras";
+  version = "0.2.2.1";
+  sha256 = "0n2zwkwwq8kg9m6qr79mrhlxsfsrjzbyg96gfhcgk21zgc09zary";
+  buildDepends = [ semigroups ];
+  meta = {
+    description = "Various extra monoid-related definitions and utilities";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/mpppc/default.nix b/pkgs/development/libraries/haskell/mpppc/default.nix
index fa19197871d..334d337ddd6 100644
--- a/pkgs/development/libraries/haskell/mpppc/default.nix
+++ b/pkgs/development/libraries/haskell/mpppc/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "mpppc";
-  version = "0.1.2";
-  sha256 = "1zms71wx5a6rd60xy1pv6g1kxlx0hzh36pbr5a5lkfflc583z1k5";
+  version = "0.1.3";
+  sha256 = "1zcilskpslpqyrbwpabwbry4p3kpcfca94wchh9dkq9g8pg8laxi";
   buildDepends = [ ansiTerminal split text ];
   meta = {
     description = "Multi-dimensional parametric pretty-printer with color";
diff --git a/pkgs/development/libraries/haskell/mtl/2.1.nix b/pkgs/development/libraries/haskell/mtl/2.1.nix
deleted file mode 100644
index e231a3a1f3a..00000000000
--- a/pkgs/development/libraries/haskell/mtl/2.1.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ cabal, transformers }:
-
-cabal.mkDerivation (self: {
-  pname = "mtl";
-  version = "2.1";
-  sha256 = "041fhi6vgddj43y26ljhxqjryjbsj0rb6m6gfpvrjynzp6c7c5n6";
-  buildDepends = [ transformers ];
-  meta = {
-    description = "Monad classes, using functional dependencies";
-    license = self.stdenv.lib.licenses.bsd3;
-    platforms = self.ghc.meta.platforms;
-    maintainers = [ self.stdenv.lib.maintainers.andres ];
-  };
-})
diff --git a/pkgs/development/libraries/haskell/multiset/default.nix b/pkgs/development/libraries/haskell/multiset/0.2.1.nix
index 9f85317505c..9f85317505c 100644
--- a/pkgs/development/libraries/haskell/multiset/default.nix
+++ b/pkgs/development/libraries/haskell/multiset/0.2.1.nix
diff --git a/pkgs/development/libraries/haskell/syb/default.nix b/pkgs/development/libraries/haskell/multiset/0.2.2.nix
index 65dd5e0e018..16fcf155747 100644
--- a/pkgs/development/libraries/haskell/syb/default.nix
+++ b/pkgs/development/libraries/haskell/multiset/0.2.2.nix
@@ -1,11 +1,11 @@
 { cabal }:
 
 cabal.mkDerivation (self: {
-  pname = "syb";
-  version = "0.1.0.1";
-  sha256 = "08nf4id26s5iasxzdy5jds6h87fy3a55zgw0zrig4dg6difmwjp3";
+  pname = "multiset";
+  version = "0.2.2";
+  sha256 = "1g14c1zm4rdc8nxvb69k98h542wi24q2lpba1gpqjqspk4d0sjmn";
   meta = {
-    description = "Scrap Your Boilerplate";
+    description = "The Data.MultiSet container type";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
     maintainers = [ self.stdenv.lib.maintainers.andres ];
diff --git a/pkgs/development/libraries/haskell/netlist-to-vhdl/default.nix b/pkgs/development/libraries/haskell/netlist-to-vhdl/default.nix
new file mode 100644
index 00000000000..ff9ed1ac0bf
--- /dev/null
+++ b/pkgs/development/libraries/haskell/netlist-to-vhdl/default.nix
@@ -0,0 +1,13 @@
+{ cabal, netlist }:
+
+cabal.mkDerivation (self: {
+  pname = "netlist-to-vhdl";
+  version = "0.3.1";
+  sha256 = "15daik7l0pjqilya01l5rl84g2fyjwkap1md0nx82gxcp8m1v76k";
+  buildDepends = [ netlist ];
+  meta = {
+    description = "Convert a Netlist AST to VHDL";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/netlist/default.nix b/pkgs/development/libraries/haskell/netlist/default.nix
new file mode 100644
index 00000000000..57550dcb3d8
--- /dev/null
+++ b/pkgs/development/libraries/haskell/netlist/default.nix
@@ -0,0 +1,13 @@
+{ cabal, binary, syb }:
+
+cabal.mkDerivation (self: {
+  pname = "netlist";
+  version = "0.3.1";
+  sha256 = "0f3fwgpg0p3ajgxfzbqr4z04ly5cdbhjxms5xbd0k2ixdwgyxm67";
+  buildDepends = [ binary syb ];
+  meta = {
+    description = "Netlist AST";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/network-conduit/default.nix b/pkgs/development/libraries/haskell/network-conduit/default.nix
index 3b86b0699ca..8eff213c463 100644
--- a/pkgs/development/libraries/haskell/network-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/network-conduit/default.nix
@@ -3,8 +3,8 @@
 
 cabal.mkDerivation (self: {
   pname = "network-conduit";
-  version = "0.6.1.1";
-  sha256 = "00x5ks1qcq5smmd2g4bm23lb3ngdxmdlz822qkkj9l9c27lkn67n";
+  version = "0.6.2";
+  sha256 = "1v9f2x4ryqiwird60n4rkj0jlyn3lqkfs40956xi11r7p656l6q6";
   buildDepends = [
     conduit liftedBase monadControl network transformers
   ];
diff --git a/pkgs/development/libraries/haskell/optparse-applicative/default.nix b/pkgs/development/libraries/haskell/optparse-applicative/default.nix
index f3f5bb0edfd..3af9dd248cb 100644
--- a/pkgs/development/libraries/haskell/optparse-applicative/default.nix
+++ b/pkgs/development/libraries/haskell/optparse-applicative/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "optparse-applicative";
-  version = "0.4.2";
-  sha256 = "0hxl4hhh24hz1fc23mbsx83ccnv2fkxbar37d9c5cmiaalsrfb19";
+  version = "0.4.3";
+  sha256 = "1zsydxgq3lcgzrf9iwas3gkjy0vxn4z2cj6h3m63h0qqa26sfcwz";
   buildDepends = [ transformers ];
   meta = {
     homepage = "https://github.com/pcapriotti/optparse-applicative";
diff --git a/pkgs/development/libraries/haskell/pandoc/default.nix b/pkgs/development/libraries/haskell/pandoc/default.nix
index de6b29ff9cc..b3bfbc50b5f 100644
--- a/pkgs/development/libraries/haskell/pandoc/default.nix
+++ b/pkgs/development/libraries/haskell/pandoc/default.nix
@@ -22,6 +22,9 @@ cabal.mkDerivation (self: {
     description = "Conversion between markup formats";
     license = "GPL";
     platforms = self.ghc.meta.platforms;
-    maintainers = [ self.stdenv.lib.maintainers.andres ];
+    maintainers = [
+      self.stdenv.lib.maintainers.andres
+      self.stdenv.lib.maintainers.simons
+    ];
   };
 })
diff --git a/pkgs/development/libraries/haskell/parallel-io/default.nix b/pkgs/development/libraries/haskell/parallel-io/default.nix
index d16f42f52ff..0672a01f361 100644
--- a/pkgs/development/libraries/haskell/parallel-io/default.nix
+++ b/pkgs/development/libraries/haskell/parallel-io/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "parallel-io";
-  version = "0.3.2.1";
-  sha256 = "0wrmz0i5s8p87840pacdnpf2fi12nips4yc72vymifrc1wvlc42q";
+  version = "0.3.2.2";
+  sha256 = "04swl1mp704ijrpmvw800x0fpzmrbd382p45kvqzynmkgqzx33a3";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ extensibleExceptions random ];
diff --git a/pkgs/development/libraries/haskell/parseargs/default.nix b/pkgs/development/libraries/haskell/parseargs/default.nix
index d51533a0653..4287015115c 100644
--- a/pkgs/development/libraries/haskell/parseargs/default.nix
+++ b/pkgs/development/libraries/haskell/parseargs/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "parseargs";
-  version = "0.1.3.2";
-  sha256 = "1ncdbjzfkhb1f3aznsci26kss9nrv3iilc65q5xdl9nly8p837mv";
+  version = "0.1.3.4";
+  sha256 = "1n55ay42qiwm72fa63xbz5m5fi0ld5dr3vypmyz5mc0zzhqwxz2j";
   isLibrary = true;
   isExecutable = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/pem/default.nix b/pkgs/development/libraries/haskell/pem/default.nix
index ff9b91fe0da..b82dc4ed83d 100644
--- a/pkgs/development/libraries/haskell/pem/default.nix
+++ b/pkgs/development/libraries/haskell/pem/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "pem";
-  version = "0.1.1";
-  sha256 = "0klb39w6mihx35xgdw5wvi1q6r61xgrsqvcqi4c5r6psv5z94cil";
+  version = "0.1.2";
+  sha256 = "1p2sw36b9w6lf53jzj86ibyy9a48fjd786mx3x8mvc5lczx8v78m";
   buildDepends = [ attoparsec base64Bytestring cereal mtl ];
   meta = {
     homepage = "http://github.com/vincenthz/hs-pem";
diff --git a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
index 50db8f951a2..8731a83ac89 100644
--- a/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-postgresql/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-postgresql";
-  version = "1.0.2";
-  sha256 = "1ry9g382ihd4b3y1sqng06k5pmj0vh00dzf4abdaph26xnncp7s6";
+  version = "1.1.1";
+  sha256 = "19ywyf0d7n6z8ws7s7jc958g30aiy6il43qwvqh92q1cz8bd1mj9";
   buildDepends = [
     aeson conduit monadControl persistent postgresqlLibpq
     postgresqlSimple text time transformers
diff --git a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
index 6869d53cf22..1e03cfdb036 100644
--- a/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-sqlite/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-sqlite";
-  version = "1.0.1";
-  sha256 = "1qvyxvmy37iy3q0frmy3zcklhms2rpjplw0fhk37cmgmw0bj2b7m";
+  version = "1.1.0";
+  sha256 = "0ycs8qb8vksnypzpxi0ypxk7akl68hdwyxzkbchyy6zh3zv2pa4z";
   buildDepends = [
     aeson conduit monadControl persistent text transformers
   ];
diff --git a/pkgs/development/libraries/haskell/persistent-template/default.nix b/pkgs/development/libraries/haskell/persistent-template/default.nix
index 8d09c593170..8bdf010215b 100644
--- a/pkgs/development/libraries/haskell/persistent-template/default.nix
+++ b/pkgs/development/libraries/haskell/persistent-template/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "persistent-template";
-  version = "1.0.0.2";
-  sha256 = "0skd1gfrxq8mpa2g56b2wn83zw4zca5q2dxyjf6d7k6sh9sc9iz8";
+  version = "1.1.1";
+  sha256 = "18rxjqgmjzx0j0sbg9ms779pkq264vf8w0qz679xsyn98wc95i36";
   buildDepends = [ aeson monadControl persistent text transformers ];
   meta = {
     homepage = "http://www.yesodweb.com/book/persistent";
diff --git a/pkgs/development/libraries/haskell/persistent/default.nix b/pkgs/development/libraries/haskell/persistent/default.nix
index f76d08c6e55..45b1da1ca79 100644
--- a/pkgs/development/libraries/haskell/persistent/default.nix
+++ b/pkgs/development/libraries/haskell/persistent/default.nix
@@ -1,17 +1,17 @@
 { cabal, aeson, attoparsec, base64Bytestring, blazeHtml
 , blazeMarkup, conduit, liftedBase, monadControl, monadLogger
-, pathPieces, poolConduit, resourcet, sqlite, text, time
+, pathPieces, poolConduit, resourcet, silently, sqlite, text, time
 , transformers, transformersBase, unorderedContainers, vector
 }:
 
 cabal.mkDerivation (self: {
   pname = "persistent";
-  version = "1.0.2.2";
-  sha256 = "0sas9jv00c01sx593applajcfjdjz24yrncx001kj6mfm7pmm86n";
+  version = "1.1.0.1";
+  sha256 = "07b9d9fcah3k03r2pm6mfl3qsdp4s9gbb376by3122nvc26w6sjc";
   buildDepends = [
     aeson attoparsec base64Bytestring blazeHtml blazeMarkup conduit
     liftedBase monadControl monadLogger pathPieces poolConduit
-    resourcet text time transformers transformersBase
+    resourcet silently text time transformers transformersBase
     unorderedContainers vector
   ];
   extraLibraries = [ sqlite ];
diff --git a/pkgs/development/libraries/haskell/pool-conduit/default.nix b/pkgs/development/libraries/haskell/pool-conduit/default.nix
index b951b0d435f..08c035f1826 100644
--- a/pkgs/development/libraries/haskell/pool-conduit/default.nix
+++ b/pkgs/development/libraries/haskell/pool-conduit/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "pool-conduit";
-  version = "0.1.0.3";
-  sha256 = "0q95b4770xfd9ancbzbisslqax3pcvg1yf3kkplnvp335ffxbax9";
+  version = "0.1.1";
+  sha256 = "1gaj0gwwbr950jkxhpl326py758j2mvh557xz737js9qcs9g3cg1";
   buildDepends = [ resourcePool resourcet transformers ];
   meta = {
     homepage = "http://www.yesodweb.com/book/persistent";
diff --git a/pkgs/development/libraries/haskell/project-template/default.nix b/pkgs/development/libraries/haskell/project-template/default.nix
index 62058e8737b..04b0de35465 100644
--- a/pkgs/development/libraries/haskell/project-template/default.nix
+++ b/pkgs/development/libraries/haskell/project-template/default.nix
@@ -1,14 +1,15 @@
-{ cabal, base64Bytestring, classyPreludeConduit, conduit, mtl
-, systemFileio, systemFilepath, text, transformers
+{ cabal, base64Bytestring, base64Conduit, classyPreludeConduit
+, conduit, mtl, resourcet, systemFileio, systemFilepath, text
+, transformers
 }:
 
 cabal.mkDerivation (self: {
   pname = "project-template";
-  version = "0.1.0.1";
-  sha256 = "0ahmdlfn48yz8fj7199w0qsa1dbbxr21bs9hq1lnm3s2p4qiki23";
+  version = "0.1.1";
+  sha256 = "186hqfhhl77yq9gqiw59jbnkk7xmpljqfwwilzjkjknf3ifhs5na";
   buildDepends = [
-    base64Bytestring classyPreludeConduit conduit mtl systemFileio
-    systemFilepath text transformers
+    base64Bytestring base64Conduit classyPreludeConduit conduit mtl
+    resourcet systemFileio systemFilepath text transformers
   ];
   meta = {
     homepage = "https://github.com/fpco/haskell-ide";
diff --git a/pkgs/development/libraries/haskell/repa-algorithms/default.nix b/pkgs/development/libraries/haskell/repa-algorithms/default.nix
index 39f0682e4ba..acf9dc712f3 100644
--- a/pkgs/development/libraries/haskell/repa-algorithms/default.nix
+++ b/pkgs/development/libraries/haskell/repa-algorithms/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "repa-algorithms";
-  version = "3.2.2.3";
-  sha256 = "1maxkl7plxzdkmbak4c7qj68chbpkbarjmw454kjx544pbkn9xhb";
+  version = "3.2.3.1";
+  sha256 = "12w76npa52g7zxa0j9w8q9njacm2dn0hcd8a8386p9r6iy6lpjwc";
   buildDepends = [ repa vector ];
   extraLibraries = [ llvm ];
   jailbreak = true;
diff --git a/pkgs/development/libraries/haskell/repa-examples/default.nix b/pkgs/development/libraries/haskell/repa-examples/default.nix
index 0320eea7c62..bea9d9f7f04 100644
--- a/pkgs/development/libraries/haskell/repa-examples/default.nix
+++ b/pkgs/development/libraries/haskell/repa-examples/default.nix
@@ -1,12 +1,16 @@
-{ cabal, llvm, random, repa, repaAlgorithms, repaIo, vector }:
+{ cabal, llvm, QuickCheck, random, repa, repaAlgorithms, repaIo
+, vector
+}:
 
 cabal.mkDerivation (self: {
   pname = "repa-examples";
-  version = "3.2.2.3";
-  sha256 = "0v21f8zzn05j3pjwvnb7x08q0sd375kbf450zjgsv8fzsypclr51";
+  version = "3.2.3.1";
+  sha256 = "1lflgpnig2ks2mwp7bywyjqr2v426gbk1675mkkvjncgr5ahf11g";
   isLibrary = false;
   isExecutable = true;
-  buildDepends = [ random repa repaAlgorithms repaIo vector ];
+  buildDepends = [
+    QuickCheck random repa repaAlgorithms repaIo vector
+  ];
   extraLibraries = [ llvm ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/repa-io/default.nix b/pkgs/development/libraries/haskell/repa-io/default.nix
index f410595d895..7b15b2bbb92 100644
--- a/pkgs/development/libraries/haskell/repa-io/default.nix
+++ b/pkgs/development/libraries/haskell/repa-io/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "repa-io";
-  version = "3.2.2.3";
-  sha256 = "1rzis7gp9dq06czqmnj9p7hpyfkdbirx2bldhg5mz3glmqf4xvw5";
+  version = "3.2.3.1";
+  sha256 = "19dnz8xa18yydprnwzgdcbrndi6akwc53rs1104z0awffh83iynm";
   buildDepends = [ binary bmp repa vector ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/repa/default.nix b/pkgs/development/libraries/haskell/repa/default.nix
index de8f9cd4f95..4eb21c5661a 100644
--- a/pkgs/development/libraries/haskell/repa/default.nix
+++ b/pkgs/development/libraries/haskell/repa/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "repa";
-  version = "3.2.2.3";
-  sha256 = "04y8yrfh0khk7w9wv61fh2rfygw8r6g9c3spzki6kw63byr01m5c";
+  version = "3.2.3.1";
+  sha256 = "0r5z781h9v6ri2m3ih7jbymvc3i2m26qaf29pxwmaks0sdlp4qmr";
   buildDepends = [ QuickCheck vector ];
   jailbreak = true;
   meta = {
diff --git a/pkgs/development/libraries/haskell/shelly/default.nix b/pkgs/development/libraries/haskell/shelly/default.nix
index 9ac5b355583..41953629e0b 100644
--- a/pkgs/development/libraries/haskell/shelly/default.nix
+++ b/pkgs/development/libraries/haskell/shelly/default.nix
@@ -3,8 +3,8 @@
 
 cabal.mkDerivation (self: {
   pname = "shelly";
-  version = "0.14.3";
-  sha256 = "0nlspgk5svc9zr2gry96sykhd8i7vdmqxpsvfsz22khw8climqzj";
+  version = "0.15.0";
+  sha256 = "138x2c76ynv0kl0kg86pawnnlk6973dqkaapycb30rf44p1m53j2";
   buildDepends = [
     mtl systemFileio systemFilepath text time unixCompat
   ];
diff --git a/pkgs/development/libraries/haskell/silently/default.nix b/pkgs/development/libraries/haskell/silently/default.nix
index 658fe4fc693..c8223cecac4 100644
--- a/pkgs/development/libraries/haskell/silently/default.nix
+++ b/pkgs/development/libraries/haskell/silently/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "silently";
-  version = "1.2.4";
-  sha256 = "0ac75b4n9566vpvv6jfcqafnyplv8dd7bgak89b16wy032z1xl5j";
+  version = "1.2.4.1";
+  sha256 = "035dw3zg680ykyz5rqkkrjn51wkznbc4jb45a8l2gh3vgqzgbf52";
   buildDepends = [ deepseq ];
   meta = {
     homepage = "https://github.com/trystan/silently";
diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix
index 2a55427a6aa..6f858398bc9 100644
--- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix
+++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "simple-sendfile";
-  version = "0.2.8";
-  sha256 = "11lw8m21cy40hd9nzp80d9jawgv9hd3sfvizjcfbvdc2lpq6m17j";
+  version = "0.2.10";
+  sha256 = "07js189yyya2vs3wsc49b7c2zbh63f48kywmz88g7s394bp3n9am";
   buildDepends = [ network ];
   meta = {
     description = "Cross platform library for the sendfile system call";
diff --git a/pkgs/development/libraries/haskell/sized-types/default.nix b/pkgs/development/libraries/haskell/sized-types/default.nix
new file mode 100644
index 00000000000..672b2c090ef
--- /dev/null
+++ b/pkgs/development/libraries/haskell/sized-types/default.nix
@@ -0,0 +1,15 @@
+{ cabal }:
+
+cabal.mkDerivation (self: {
+  pname = "sized-types";
+  version = "0.3.4.0";
+  sha256 = "0fpk7xpqzzylxbnxhz56lxzfnrhfibn0x7ahxl91x6biysnh714c";
+  isLibrary = true;
+  isExecutable = true;
+  meta = {
+    homepage = "http://www.ittc.ku.edu/csdl/fpg/Tools";
+    description = "Sized types in Haskell";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/snap/loader-dynamic.nix b/pkgs/development/libraries/haskell/snap/loader-dynamic.nix
index 3f6c5db004b..abe4d4cc074 100644
--- a/pkgs/development/libraries/haskell/snap/loader-dynamic.nix
+++ b/pkgs/development/libraries/haskell/snap/loader-dynamic.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "snap-loader-dynamic";
-  version = "0.9.0.1";
-  sha256 = "1pzn8lfqngn8cqm1dpxn5wsx70xcd7r90rd2948n4p5309qgh9mq";
+  version = "0.10";
+  sha256 = "0wnrsbnf3crfxhhraz4my08m6yhmqj632rv6cdy9ili3wxjkqd57";
   buildDepends = [ directoryTree hint mtl snapCore time ];
   meta = {
     homepage = "http://snapframework.com/";
diff --git a/pkgs/development/libraries/haskell/snap/loader-static.nix b/pkgs/development/libraries/haskell/snap/loader-static.nix
index a9dcbf10810..e75ae50d6c8 100644
--- a/pkgs/development/libraries/haskell/snap/loader-static.nix
+++ b/pkgs/development/libraries/haskell/snap/loader-static.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "snap-loader-static";
-  version = "0.9.0";
-  sha256 = "1blchmg0qfng7bw235z1gqkwyi764j78bc29vd5p6xxhmq111ys7";
+  version = "0.9.0.1";
+  sha256 = "0xlb8611r9l9ld97rs27nji7k1qvjg5i62b4al38xj6i0f2skyyi";
   meta = {
     homepage = "http://snapframework.com/";
     description = "Snap: A Haskell Web Framework: static loader";
diff --git a/pkgs/development/libraries/haskell/snap/snap.nix b/pkgs/development/libraries/haskell/snap/snap.nix
index 1676de1e840..f2a90a5802c 100644
--- a/pkgs/development/libraries/haskell/snap/snap.nix
+++ b/pkgs/development/libraries/haskell/snap/snap.nix
@@ -1,23 +1,23 @@
-{ cabal, aeson, attoparsec, cereal, clientsession, configurator
-, dataLens, dataLensTemplate, directoryTree, filepath, hashable
-, heist, logict, MonadCatchIOTransformers, mtl, mwcRandom
-, pwstoreFast, snapCore, snapServer, stm, syb, text, time
-, transformers, unorderedContainers, vector, vectorAlgorithms
+{ cabal, aeson, attoparsec, cereal, clientsession, comonad
+, configurator, directoryTree, dlist, errors, filepath, hashable
+, heist, lens, logict, MonadCatchIOTransformers, mtl, mwcRandom
+, pwstoreFast, regexPosix, snapCore, snapServer, stm, syb, text
+, time, transformers, unorderedContainers, vector, vectorAlgorithms
 , xmlhtml
 }:
 
 cabal.mkDerivation (self: {
   pname = "snap";
-  version = "0.9.2.2";
-  sha256 = "1ql9c8b9arcd8zwlwsiipl4diah87sp339ljc5bc7yls1g4d9zsw";
+  version = "0.10.0.1";
+  sha256 = "14j9lgcdyxh7n4yidfvn1r94nziljiqz6nsqgq114v34bnn6l2yn";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    aeson attoparsec cereal clientsession configurator dataLens
-    dataLensTemplate directoryTree filepath hashable heist logict
-    MonadCatchIOTransformers mtl mwcRandom pwstoreFast snapCore
-    snapServer stm syb text time transformers unorderedContainers
-    vector vectorAlgorithms xmlhtml
+    aeson attoparsec cereal clientsession comonad configurator
+    directoryTree dlist errors filepath hashable heist lens logict
+    MonadCatchIOTransformers mtl mwcRandom pwstoreFast regexPosix
+    snapCore snapServer stm syb text time transformers
+    unorderedContainers vector vectorAlgorithms xmlhtml
   ];
   meta = {
     homepage = "http://snapframework.com/";
diff --git a/pkgs/development/libraries/haskell/stylish-haskell/default.nix b/pkgs/development/libraries/haskell/stylish-haskell/default.nix
index fc875d75bd0..03ab9a2b84d 100644
--- a/pkgs/development/libraries/haskell/stylish-haskell/default.nix
+++ b/pkgs/development/libraries/haskell/stylish-haskell/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "stylish-haskell";
-  version = "0.5.4.0";
-  sha256 = "1bnsjs5s760xnk3s1l7kjqr2svxp4a881p9z2slaywi5kn0v5mwf";
+  version = "0.5.5.2";
+  sha256 = "1whl8qdqyw2saic70kav8srg4f6bcn77mc86m0vk8i8n5mb3q4ny";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/syb/0.3.5.nix b/pkgs/development/libraries/haskell/syb/0.3.5.nix
deleted file mode 100644
index b1264ecb437..00000000000
--- a/pkgs/development/libraries/haskell/syb/0.3.5.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ cabal }:
-
-cabal.mkDerivation (self: {
-  pname = "syb";
-  version = "0.3.5";
-  sha256 = "17gwhn0rqjf9zkx1dsmsaj41qdjlk4mq5lzpqkgy3slq30nwwwbr";
-  meta = {
-    homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB";
-    description = "Scrap Your Boilerplate";
-    license = self.stdenv.lib.licenses.bsd3;
-    platforms = self.ghc.meta.platforms;
-    maintainers = [ self.stdenv.lib.maintainers.andres ];
-  };
-})
diff --git a/pkgs/development/libraries/haskell/tabular/default.nix b/pkgs/development/libraries/haskell/tabular/default.nix
index ddfc4aac7d6..65e12aa9295 100644
--- a/pkgs/development/libraries/haskell/tabular/default.nix
+++ b/pkgs/development/libraries/haskell/tabular/default.nix
@@ -5,6 +5,7 @@ cabal.mkDerivation (self: {
   version = "0.2.2.3";
   sha256 = "cf6d9f1928ec6981edcbb06c4dcbaea7a96deef5272192ad4290caa18711ea76";
   buildDepends = [ csv html mtl ];
+  jailbreak = true;
   meta = {
     homepage = "http://patch-tag.com/r/kowey/tabular";
     description = "Two-dimensional data tables with rendering functions";
diff --git a/pkgs/development/libraries/haskell/test-framework-hunit/default.nix b/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
index 42e2e448529..011d791643c 100644
--- a/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-hunit/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-hunit";
-  version = "0.2.7";
-  sha256 = "1c7424i5vnggzncwiwqqwq7ir7kaijif2waqmss5pn6db3gj33fc";
+  version = "0.3.0";
+  sha256 = "1jwbpbf9q3g936gk71632h830l2wsiic8h6ms1jlmw209mpm7c84";
   buildDepends = [ extensibleExceptions HUnit testFramework ];
   meta = {
     homepage = "http://batterseapower.github.com/test-framework/";
diff --git a/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix b/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
index d71e2a034d0..cabc0fe1d0a 100644
--- a/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-quickcheck/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-quickcheck";
-  version = "0.2.8.1";
-  sha256 = "042vdq18mqw4rhsj3x51mz1iv9zbxvlz7jg6r9cni2xpw5m7v6dk";
+  version = "0.3.0";
+  sha256 = "0g8sh3x3mhns03svccgbdbw8crzpzmahp1hr1fs6ag66fqr8p9mv";
   buildDepends = [
     deepseq extensibleExceptions QuickCheck random testFramework
   ];
diff --git a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
index e0615469ab7..77e201ca63d 100644
--- a/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-quickcheck2/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-quickcheck2";
-  version = "0.2.12.3";
-  sha256 = "17pj6b1cclihy203zpb75rkx2djldc9kcj10wqkf5fjmf9vvi0ks";
+  version = "0.3.0.1";
+  sha256 = "1177cvlb4qsa5x2k12dd60y7b14dyd3jr1ygb49aackhjx52c41s";
   buildDepends = [
     extensibleExceptions QuickCheck random testFramework
   ];
diff --git a/pkgs/development/libraries/haskell/test-framework-th/default.nix b/pkgs/development/libraries/haskell/test-framework-th/default.nix
index 57b4302938b..f70e522a2ce 100644
--- a/pkgs/development/libraries/haskell/test-framework-th/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework-th/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework-th";
-  version = "0.2.3";
-  sha256 = "1xls8034zkfnvkv2p6jd6kc1x3xrr0sm5c6hl0mp7ym2w2ww9f1w";
+  version = "0.2.4";
+  sha256 = "12lw7yj02jb9s0i7rb98jjam43j2h0gzmnbj9zi933fx7sg0sy4b";
   buildDepends = [
     haskellSrcExts languageHaskellExtract regexPosix testFramework
   ];
diff --git a/pkgs/development/libraries/haskell/test-framework/default.nix b/pkgs/development/libraries/haskell/test-framework/default.nix
index 14fb53a5a09..b9f335e1a5a 100644
--- a/pkgs/development/libraries/haskell/test-framework/default.nix
+++ b/pkgs/development/libraries/haskell/test-framework/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "test-framework";
-  version = "0.6.1";
-  sha256 = "1rx2c3yckw50vrydswb61ngvp27yxcimm5q6jcyqpn16fpkvxijw";
+  version = "0.8";
+  sha256 = "1w895nq357zpc4v6vr5nbszyrw7cpsjq5bj38vdd10bfpjjmijcl";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/text/0.11.1.12.nix b/pkgs/development/libraries/haskell/text/0.11.1.12.nix
deleted file mode 100644
index e860e1c61a1..00000000000
--- a/pkgs/development/libraries/haskell/text/0.11.1.12.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ cabal, deepseq }:
-
-cabal.mkDerivation (self: {
-  pname = "text";
-  version = "0.11.1.12";
-  sha256 = "0j2044whj3xckmxqmgdjbc2mpwdan481qzjslwplqbqwml2jvkml";
-  buildDepends = [ deepseq ];
-  meta = {
-    homepage = "https://github.com/bos/text";
-    description = "An efficient packed Unicode text type";
-    license = self.stdenv.lib.licenses.bsd3;
-    platforms = self.ghc.meta.platforms;
-    maintainers = [ self.stdenv.lib.maintainers.andres ];
-  };
-})
diff --git a/pkgs/development/libraries/haskell/time-compat/default.nix b/pkgs/development/libraries/haskell/time-compat/default.nix
new file mode 100644
index 00000000000..e42224ace0d
--- /dev/null
+++ b/pkgs/development/libraries/haskell/time-compat/default.nix
@@ -0,0 +1,14 @@
+{ cabal, time }:
+
+cabal.mkDerivation (self: {
+  pname = "time-compat";
+  version = "0.1.0.2";
+  sha256 = "0687bxkvqs22p7skqb8n289k9nv7cafg8jyx32sswn2h11m7dihb";
+  buildDepends = [ time ];
+  meta = {
+    homepage = "http://hub.darcs.net/dag/time-compat";
+    description = "Compatibility with old-time for the time package";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/tls-extra/default.nix b/pkgs/development/libraries/haskell/tls-extra/default.nix
index 6a7b24f1fe2..f2017af8f80 100644
--- a/pkgs/development/libraries/haskell/tls-extra/default.nix
+++ b/pkgs/development/libraries/haskell/tls-extra/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "tls-extra";
-  version = "0.5.0";
-  sha256 = "1r645qljn3ql7jcphsqf4cm259cl8fsva64q4p2x37mafi01bkr8";
+  version = "0.5.1";
+  sha256 = "0a977qy6ig4bhgsl6y5iw0xv52yswmcc2x37ypm1601wikjv38x3";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/tls/default.nix b/pkgs/development/libraries/haskell/tls/default.nix
index 082a4b75cc6..72466f5d8e8 100644
--- a/pkgs/development/libraries/haskell/tls/default.nix
+++ b/pkgs/development/libraries/haskell/tls/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "tls";
-  version = "1.0.2";
-  sha256 = "0fkbh89j4gpwq45hv88axcdy7hxhvj1wj14nf7ma8wzaga2p4m75";
+  version = "1.0.3";
+  sha256 = "14wgwz032skkgkxg2lyh8kwg1fkapmlg2jh74czbacvnssc2iidb";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/libraries/haskell/uniplate/default.nix b/pkgs/development/libraries/haskell/uniplate/default.nix
index 909b7f7659e..8519ff451b2 100644
--- a/pkgs/development/libraries/haskell/uniplate/default.nix
+++ b/pkgs/development/libraries/haskell/uniplate/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "uniplate";
-  version = "1.6.7";
-  sha256 = "1f71dinmp3vmx9j0a1sxm0f8gzxknsvhnyb8sxfjrvpvixzyg0dx";
+  version = "1.6.10";
+  sha256 = "0j0hsvlkml8v9f8iijcgq58qnxnmk7gzxcnl9rxx4fdr9fnaffj3";
   buildDepends = [ hashable syb unorderedContainers ];
   meta = {
     homepage = "http://community.haskell.org/~ndm/uniplate/";
diff --git a/pkgs/development/libraries/haskell/unix-time/default.nix b/pkgs/development/libraries/haskell/unix-time/default.nix
index 61d8f86189d..a17ed203941 100644
--- a/pkgs/development/libraries/haskell/unix-time/default.nix
+++ b/pkgs/development/libraries/haskell/unix-time/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "unix-time";
-  version = "0.1.2";
-  sha256 = "146m4b93bla0pbf76bmff6f3aq9zx60cwy58mkqa0a4dyndd3pid";
+  version = "0.1.4";
+  sha256 = "1a8z9r75jk4z4diyigk0qzljkjqirxm30vf3jp75plnc9irysnw5";
   meta = {
     description = "Unix time parser/formatter and utilities";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/unordered-containers/default.nix b/pkgs/development/libraries/haskell/unordered-containers/default.nix
index 8ac2372d1c0..786eb59ec10 100644
--- a/pkgs/development/libraries/haskell/unordered-containers/default.nix
+++ b/pkgs/development/libraries/haskell/unordered-containers/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "unordered-containers";
-  version = "0.2.2.1";
-  sha256 = "0ny8w7xw0ch3yp0fnskzygz61b72ln5s5ccsdlcqpp29cvfar6zy";
+  version = "0.2.3.0";
+  sha256 = "1vzgjr9jxdkmgq970ng9zi2j60awvx8iv1v6kzjlrkwzxx1a9dpd";
   buildDepends = [ deepseq hashable ];
   meta = {
     homepage = "https://github.com/tibbe/unordered-containers";
diff --git a/pkgs/development/libraries/haskell/vault/default.nix b/pkgs/development/libraries/haskell/vault/default.nix
index 4d74884a1a7..39802793103 100644
--- a/pkgs/development/libraries/haskell/vault/default.nix
+++ b/pkgs/development/libraries/haskell/vault/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "vault";
-  version = "0.2.0.1";
-  sha256 = "027wgbnmdnp98f0wvc9xsfh175n7rq8m2j9i7j1c5vxwgi61dqxq";
+  version = "0.2.0.3";
+  sha256 = "1ky7c5hg7spa545xhgs4ahf07w60k3x149087mla1dxl8lpcz70i";
   buildDepends = [ hashable unorderedContainers ];
   meta = {
     homepage = "https://github.com/HeinrichApfelmus/vault";
diff --git a/pkgs/development/libraries/haskell/vector-space/default.nix b/pkgs/development/libraries/haskell/vector-space/default.nix
index 60762ce3f9b..c6d440a5d47 100644
--- a/pkgs/development/libraries/haskell/vector-space/default.nix
+++ b/pkgs/development/libraries/haskell/vector-space/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "vector-space";
-  version = "0.8.4";
-  sha256 = "1hrilbv44lrqm9p3z97xw8nlgxam98abll4iqik8a4d6ky225bwq";
+  version = "0.8.6";
+  sha256 = "03kz2qhnynbgs4vk7348zjkkakzzwvxhbasl0lcazj1cx1ay7c4l";
   buildDepends = [ Boolean MemoTrie NumInstances ];
   meta = {
     description = "Vector & affine spaces, linear maps, and derivatives";
diff --git a/pkgs/development/libraries/haskell/void/default.nix b/pkgs/development/libraries/haskell/void/default.nix
index e19a0450c02..5cd54a3e0e7 100644
--- a/pkgs/development/libraries/haskell/void/default.nix
+++ b/pkgs/development/libraries/haskell/void/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "void";
-  version = "0.5.8";
-  sha256 = "1iqwndpc77i4i1977z7lxj20viplr2f5pwxwa2kibyhy556bs27z";
+  version = "0.5.10";
+  sha256 = "0adykqns7vvzgrjg7waaklfj3dl1h7vk5rwlfx0f18js6di9zrh4";
   buildDepends = [ semigroups ];
   meta = {
     homepage = "http://github.com/ekmett/void";
diff --git a/pkgs/development/libraries/haskell/wai-app-static/default.nix b/pkgs/development/libraries/haskell/wai-app-static/default.nix
index 427efd4d9bf..5ccf7531d4c 100644
--- a/pkgs/development/libraries/haskell/wai-app-static/default.nix
+++ b/pkgs/development/libraries/haskell/wai-app-static/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-app-static";
-  version = "1.3.0.4";
-  sha256 = "1dcgw6b10j5y2xa1jpqfsgcq8w6c7cdbp4pfc8nb6n54bys4linn";
+  version = "1.3.0.5";
+  sha256 = "1fz2a30f3imn0m5q6hjkm2xan0ddalhfbzx78pklz4g7k79s1ncn";
   buildDepends = [
     base64Bytestring blazeBuilder blazeHtml blazeMarkup cereal
     cryptoConduit cryptohash fileEmbed httpDate httpTypes mimeTypes
diff --git a/pkgs/development/libraries/haskell/wai-extra/default.nix b/pkgs/development/libraries/haskell/wai-extra/default.nix
index 1c681a39ef5..b0837b0246c 100644
--- a/pkgs/development/libraries/haskell/wai-extra/default.nix
+++ b/pkgs/development/libraries/haskell/wai-extra/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "wai-extra";
-  version = "1.3.0.4";
-  sha256 = "1i909qipmnwx161c0xlqzrwcpbv6si2rrbhfs524dicgr1jdijcc";
+  version = "1.3.0.5";
+  sha256 = "0xzsnsf4sdbzkw92xyzmyi6qp2qpbh5dj3579sppcihdq9djj8l8";
   buildDepends = [
     ansiTerminal blazeBuilder blazeBuilderConduit caseInsensitive
     conduit dataDefault dateCache fastLogger httpTypes network
diff --git a/pkgs/development/libraries/haskell/warp/default.nix b/pkgs/development/libraries/haskell/warp/default.nix
index 6823e49185f..0620fc7f88b 100644
--- a/pkgs/development/libraries/haskell/warp/default.nix
+++ b/pkgs/development/libraries/haskell/warp/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "warp";
-  version = "1.3.5";
-  sha256 = "0hxipvdp0nwziijzmcnf0kdb3cz1m2w6xwszq2zqpjb7fvcy2acl";
+  version = "1.3.6";
+  sha256 = "0aw5m7apj7l6fjb0w59bmgiy4j0rmdwjil4ppgp5qz2q2njqbbnj";
   buildDepends = [
     blazeBuilder blazeBuilderConduit caseInsensitive conduit hashable
     httpTypes liftedBase network networkConduit simpleSendfile
diff --git a/pkgs/development/libraries/haskell/word8/default.nix b/pkgs/development/libraries/haskell/word8/default.nix
index d86ef72d2cb..4b05c0b70d0 100644
--- a/pkgs/development/libraries/haskell/word8/default.nix
+++ b/pkgs/development/libraries/haskell/word8/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "word8";
-  version = "0.0.2";
-  sha256 = "0ij8l5h9kj93srsizwxiss4jcgj0hy2gsskw88l58lgd2v4c9dnb";
+  version = "0.0.3";
+  sha256 = "1k5sq91pidgw7w8fc62k9gl8iynb65pcza6mjx8pa3n2lslp7125";
   meta = {
     description = "Word8 library";
     license = self.stdenv.lib.licenses.bsd3;
diff --git a/pkgs/development/libraries/haskell/yesod-auth/default.nix b/pkgs/development/libraries/haskell/yesod-auth/default.nix
index 9cb03784285..7d4d208a9f5 100644
--- a/pkgs/development/libraries/haskell/yesod-auth/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-auth/default.nix
@@ -8,8 +8,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-auth";
-  version = "1.1.1.7";
-  sha256 = "09d999sqsm6v59l9q2gh09ar2vl601csr6w8mkcmgax5bdb26waz";
+  version = "1.1.2.2";
+  sha256 = "16g2lnnwp5219i77fb4pv2y8ljz4msflj38mvh0zw3x93747baf7";
   buildDepends = [
     aeson authenticate blazeHtml blazeMarkup hamlet httpConduit
     liftedBase mimeMail network persistent persistentTemplate pureMD5
diff --git a/pkgs/development/libraries/haskell/yesod-core/default.nix b/pkgs/development/libraries/haskell/yesod-core/default.nix
index 20c3c7f5b7e..75b36eb0aeb 100644
--- a/pkgs/development/libraries/haskell/yesod-core/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-core/default.nix
@@ -9,8 +9,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-core";
-  version = "1.1.6";
-  sha256 = "1y7bw0wzi52mnvs0zf93q8aiq87mnn2j4f2ry4y2f859xfdzbvsi";
+  version = "1.1.6.1";
+  sha256 = "0pk7pxqp9g5pkbba2na503az9pghgqvs538pcz2k3r3cpb6nhgpa";
   buildDepends = [
     aeson blazeBuilder blazeHtml blazeMarkup caseInsensitive cereal
     clientsession conduit cookie failure fastLogger hamlet httpTypes
diff --git a/pkgs/development/libraries/haskell/yesod-default/default.nix b/pkgs/development/libraries/haskell/yesod-default/default.nix
index 0ff1c202826..d2bbf413c83 100644
--- a/pkgs/development/libraries/haskell/yesod-default/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-default/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-default";
-  version = "1.1.2";
-  sha256 = "0asz9daf7by0d8sx8zqjsbxbzbyy59bvrdkq4f533fbn0nm1bn38";
+  version = "1.1.3";
+  sha256 = "1g0hb6jl0bp2q50pw2cy3hkbww1l230al08s7vfpqir68n9infiy";
   buildDepends = [
     dataDefault hamlet networkConduit safe shakespeareCss shakespeareJs
     text transformers unorderedContainers wai waiExtra warp yaml
diff --git a/pkgs/development/libraries/haskell/yesod-form/default.nix b/pkgs/development/libraries/haskell/yesod-form/default.nix
index 4f9e1737165..69ef6b1f492 100644
--- a/pkgs/development/libraries/haskell/yesod-form/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-form/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-form";
-  version = "1.2.0.1";
-  sha256 = "13zfai1r8wvs2gxh6adp5pcnrk0480fx7kp8gwarv68x4hmf0jph";
+  version = "1.2.0.2";
+  sha256 = "0a3172rgvma420l98hkgvl17ks2a2jkys3rh4qd2bbm9p7qknv3y";
   buildDepends = [
     aeson attoparsec blazeBuilder blazeHtml blazeMarkup cryptoApi
     dataDefault emailValidate hamlet network persistent shakespeareCss
diff --git a/pkgs/development/libraries/haskell/yesod-persistent/default.nix b/pkgs/development/libraries/haskell/yesod-persistent/default.nix
index a094f472233..e69bc2a5127 100644
--- a/pkgs/development/libraries/haskell/yesod-persistent/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-persistent/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-persistent";
-  version = "1.1.0";
-  sha256 = "0c8cvc2gy9ixa0h79ycnyi86indny2i86g5xcg30a2rvc4mjbaaj";
+  version = "1.1.0.1";
+  sha256 = "0kgd1b7kaif644hjbvkc53yxr7qk310zdndypd9h0j31paw52k1p";
   buildDepends = [
     persistent persistentTemplate transformers yesodCore
   ];
diff --git a/pkgs/development/libraries/haskell/yesod-test/default.nix b/pkgs/development/libraries/haskell/yesod-test/default.nix
index bd0e3c17c86..ebbbc3f939f 100644
--- a/pkgs/development/libraries/haskell/yesod-test/default.nix
+++ b/pkgs/development/libraries/haskell/yesod-test/default.nix
@@ -6,8 +6,8 @@
 
 cabal.mkDerivation (self: {
   pname = "yesod-test";
-  version = "0.3.1.1";
-  sha256 = "0p3490yw0xcc62vzjk2vq32vv2ij7mcs6h28szp7y04gn6xc5nbg";
+  version = "0.3.2";
+  sha256 = "1wd5iwar6jxbv0p7p47js4spivwhph98h403bnmf3dl7069nyjcs";
   buildDepends = [
     attoparsec blazeHtml blazeMarkup caseInsensitive hspec htmlConduit
     httpTypes HUnit monadControl network persistent poolConduit text
diff --git a/pkgs/development/libraries/haskell/yesod/default.nix b/pkgs/development/libraries/haskell/yesod/default.nix
index 7c592cb7efe..72f19e5a5c2 100644
--- a/pkgs/development/libraries/haskell/yesod/default.nix
+++ b/pkgs/development/libraries/haskell/yesod/default.nix
@@ -1,30 +1,31 @@
-{ cabal, attoparsec, base64Bytestring, blazeBuilder, blazeHtml
-, blazeMarkup, Cabal, conduit, fileEmbed, filepath, fsnotify
-, ghcPaths, hamlet, httpConduit, httpReverseProxy, httpTypes
-, liftedBase, monadControl, network, optparseApplicative, parsec
-, projectTemplate, resourcet, shakespeare, shakespeareCss
-, shakespeareJs, shakespeareText, split, systemFileio
-, systemFilepath, tar, text, time, transformers, unixCompat
-, unorderedContainers, wai, waiExtra, warp, yaml, yesodAuth
-, yesodCore, yesodDefault, yesodForm, yesodJson, yesodPersistent
-, zlib
+{ cabal, aeson, attoparsec, base64Bytestring, blazeBuilder
+, blazeHtml, blazeMarkup, Cabal, conduit, fileEmbed, filepath
+, fsnotify, ghcPaths, hamlet, httpConduit, httpReverseProxy
+, httpTypes, liftedBase, monadControl, network, networkConduit
+, optparseApplicative, parsec, projectTemplate, resourcet
+, shakespeare, shakespeareCss, shakespeareJs, shakespeareText
+, split, systemFileio, systemFilepath, tar, text, time
+, transformers, unixCompat, unorderedContainers, wai, waiExtra
+, warp, yaml, yesodAuth, yesodCore, yesodDefault, yesodForm
+, yesodJson, yesodPersistent, zlib
 }:
 
 cabal.mkDerivation (self: {
   pname = "yesod";
-  version = "1.1.4";
-  sha256 = "1na50j7cd89mxk7ss67xlj703spvkpzcwgp7qs1pn2x3xsm7vrm2";
+  version = "1.1.7";
+  sha256 = "1qcvmy8ichri9ivfkanj4gp687lwymgi170sbdzwf5phy34bhkc5";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
-    attoparsec base64Bytestring blazeBuilder blazeHtml blazeMarkup
-    Cabal conduit fileEmbed filepath fsnotify ghcPaths hamlet
-    httpConduit httpReverseProxy httpTypes liftedBase monadControl
-    network optparseApplicative parsec projectTemplate resourcet
-    shakespeare shakespeareCss shakespeareJs shakespeareText split
-    systemFileio systemFilepath tar text time transformers unixCompat
-    unorderedContainers wai waiExtra warp yaml yesodAuth yesodCore
-    yesodDefault yesodForm yesodJson yesodPersistent zlib
+    aeson attoparsec base64Bytestring blazeBuilder blazeHtml
+    blazeMarkup Cabal conduit fileEmbed filepath fsnotify ghcPaths
+    hamlet httpConduit httpReverseProxy httpTypes liftedBase
+    monadControl network networkConduit optparseApplicative parsec
+    projectTemplate resourcet shakespeare shakespeareCss shakespeareJs
+    shakespeareText split systemFileio systemFilepath tar text time
+    transformers unixCompat unorderedContainers wai waiExtra warp yaml
+    yesodAuth yesodCore yesodDefault yesodForm yesodJson
+    yesodPersistent zlib
   ];
   meta = {
     homepage = "http://www.yesodweb.com/";
diff --git a/pkgs/development/libraries/hwloc/default.nix b/pkgs/development/libraries/hwloc/default.nix
index 4f2bd4f679a..de4270008f3 100644
--- a/pkgs/development/libraries/hwloc/default.nix
+++ b/pkgs/development/libraries/hwloc/default.nix
@@ -2,11 +2,11 @@
 , pciutils, numactl }:
 
 stdenv.mkDerivation rec {
-  name = "hwloc-1.4.2";
+  name = "hwloc-1.6";
 
   src = fetchurl {
-    url = "http://www.open-mpi.org/software/hwloc/v1.4/downloads/${name}.tar.bz2";
-    sha256 = "0xamcnbkrf18v1rj4h6ddx6cn4gffx6zgzjaym8c3k5mlpgigfdw";
+    url = "http://www.open-mpi.org/software/hwloc/v1.6/downloads/${name}.tar.bz2";
+    sha256 = "0y561bryiqp1f5af5lm432dcw93xwp1jw55si7wa6skxnd6ch25w";
   };
 
   # XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
@@ -23,6 +23,8 @@ stdenv.mkDerivation rec {
     # Since `libpci' appears in `hwloc.pc', it must be propagated.
     stdenv.lib.optional stdenv.isLinux pciutils;
 
+  enableParallelBuilding = true;
+
   postInstall =
     stdenv.lib.optionalString (stdenv.isLinux && numactl != null)
       '' if [ -d "${numactl}/lib64" ]
diff --git a/pkgs/development/libraries/intel-tbb/default.nix b/pkgs/development/libraries/intel-tbb/default.nix
new file mode 100644
index 00000000000..ad2c317a9ef
--- /dev/null
+++ b/pkgs/development/libraries/intel-tbb/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl }:
+
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+
+stdenv.mkDerivation rec {
+  name = "intel-tbb-4.1";
+  
+  src = fetchurl {
+    url = http://threadingbuildingblocks.org/sites/default/files/software_releases/linux/tbb41_20121003oss_lin.tgz;
+    sha256 = "12vxljcgkrcyw9mm8v5vfk03nkf3bmwz60r2qbljs0hl2yrx8jml";
+  };
+
+  buildPhase = ''
+    mkdir -p $out
+    cp -R * $out
+
+    for f in $out/lib/${if stdenv.system == "x86_64-linux" then "linux64" else "ia32"}/*.so.2; do
+      patchelf --set-rpath ${stdenv.gcc.gcc}/lib:${stdenv.gcc.gcc}/lib64 $f
+    done
+
+    rm $out/CHANGES $out/README $out/COPYING
+  '';
+
+  dontInstall = true;
+
+  meta = {
+    homepage = http://threadingbuildingblocks.org/;
+  };
+}
diff --git a/pkgs/development/libraries/levmar/use-atlas.patch b/pkgs/development/libraries/levmar/use-atlas.patch
deleted file mode 100644
index 2be9999b40f..00000000000
--- a/pkgs/development/libraries/levmar/use-atlas.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/Makefile b/Makefile
-index af70b4c..53c6fab 100644
---- a/Makefile
-+++ b/Makefile
-@@ -15,11 +15,11 @@ DEMOBJS=lmdemo.o
- DEMOSRCS=lmdemo.c
- AR=ar
- RANLIB=ranlib
--LAPACKLIBS=-llapack -lblas -lf2c # comment this line if you are not using LAPACK.
-+#LAPACKLIBS=-llapack -lblas -lf2c # comment this line if you are not using LAPACK.
-                                  # On systems with a FORTRAN (not f2c'ed) version of LAPACK, -lf2c is
-                                  # not necessary; on others, -lf2c is equivalent to -lF77 -lI77
- 
--#LAPACKLIBS=-L/usr/local/atlas/lib -llapack -lcblas -lf77blas -latlas -lf2c # This works with the ATLAS updated lapack and Linux_P4SSE2
-+LAPACKLIBS=-llapack -lcblas -lf77blas -latlas -lgfortran # This works with the ATLAS updated lapack and Linux_P4SSE2
-                                                                             # from http://www.netlib.org/atlas/archives/linux/
- 
- #LAPACKLIBS=-llapack -lgoto2 -lpthread -lf2c # This works with GotoBLAS
-diff --git a/misc.h b/misc.h
-index e32f18d..827507e 100644
---- a/misc.h
-+++ b/misc.h
-@@ -30,11 +30,11 @@
- /* f2c'd BLAS */
- //#define LM_BLAS_PREFIX f2c_
- /* C BLAS */
--//#define LM_BLAS_PREFIX cblas_
-+#define LM_BLAS_PREFIX cblas_
- 
- /* common suffix for BLAS subroutines */
--//#define LM_BLAS_SUFFIX  // define empty if a f2c_ or cblas_ prefix was defined for LM_BLAS_PREFIX above
--#define LM_BLAS_SUFFIX _ // use this in case of no BLAS prefix
-+#define LM_BLAS_SUFFIX  // define empty if a f2c_ or cblas_ prefix was defined for LM_BLAS_PREFIX above
-+//#define LM_BLAS_SUFFIX _ // use this in case of no BLAS prefix
- 
- 
- #define LCAT_(a, b)    #a b
diff --git a/pkgs/development/libraries/libdwarf/default.nix b/pkgs/development/libraries/libdwarf/default.nix
new file mode 100644
index 00000000000..44eec24cb41
--- /dev/null
+++ b/pkgs/development/libraries/libdwarf/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, libelf }:
+
+stdenv.mkDerivation rec {
+  name = "libdwarf-20121130";
+  
+  src = fetchurl {
+    url = http://reality.sgiweb.org/davea/libdwarf-20121130.tar.gz;
+    sha256 = "1nfdfn5xf3n485pvpb853awyxxnvrg207i0wmrr7bhk8fcxdxbn0";
+  };
+
+  configureFlags = " --enable-shared --disable-nonshared";
+
+  preConfigure = ''
+    cd libdwarf
+  '';
+  buildInputs = [ libelf ];
+
+  installPhase = ''
+    mkdir -p $out/lib $out/include
+    cp libdwarf.so $out/lib
+    cp libdwarf.h dwarf.h $out/include
+  '';
+
+  meta = {
+    homepage = http://reality.sgiweb.org/davea/dwarf.html;
+  };
+}
diff --git a/pkgs/development/libraries/libev/src-for-default.nix b/pkgs/development/libraries/libev/src-for-default.nix
index 52c8e65bc4f..49624fc6bd2 100644
--- a/pkgs/development/libraries/libev/src-for-default.nix
+++ b/pkgs/development/libraries/libev/src-for-default.nix
@@ -1,8 +1,9 @@
 rec {
-  advertisedUrl="http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz";
-  version = "4.04";
-  url="http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz";
-  hash = "ab3a09e967e3b868055cd9363fd236aa093f8643d19cc7042e90e0dfe905b012";
-  name = "libev-4.04";
+   version="4.11";
+   name="libev-4.11";
+   hash="1pwcjch21xc7cfmjldkw1n7lcs4pyqm9dx573wdhmmp4yrpz2mcz";
+   url="http://dist.schmorp.de/libev/Attic/libev-${version}.tar.gz";
+   advertisedUrl="http://dist.schmorp.de/libev/Attic/libev-4.11.tar.gz";
+  
   
 }
diff --git a/pkgs/development/libraries/libevent/1.4.nix b/pkgs/development/libraries/libevent/1.4.nix
new file mode 100644
index 00000000000..ed190bf6061
--- /dev/null
+++ b/pkgs/development/libraries/libevent/1.4.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl}:
+
+let version = "1.4.14b"; in
+stdenv.mkDerivation {
+  name = "libevent-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/downloads/libevent/libevent/libevent-${version}-stable.tar.gz";
+    sha256 = "00b3wih3qpcik6v0qh1406abs2xb954d58ncqwzs8ar2d93ip9mg";
+  };
+
+  meta = {
+    description = "libevent, an event notification library";
+
+    longDescription =
+      '' The libevent API provides a mechanism to execute a callback function
+         when a specific event occurs on a file descriptor or after a timeout
+         has been reached.  Furthermore, libevent also support callbacks due
+         to signals or regular timeouts.
+
+         libevent is meant to replace the event loop found in event driven
+         network servers.  An application just needs to call event_dispatch()
+         and then add or remove events dynamically without having to change
+         the event loop.
+      '';
+
+    license = "mBSD";
+  };
+}
diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix
index f2958e4668d..bffc72e005c 100644
--- a/pkgs/development/libraries/libiconv/default.nix
+++ b/pkgs/development/libraries/libiconv/default.nix
@@ -1,6 +1,6 @@
 { fetchurl, stdenv }:
 
-stdenv.mkDerivation (rec {
+stdenv.mkDerivation rec {
   name = "libiconv-1.13.1";
 
   src = fetchurl {
@@ -8,6 +8,12 @@ stdenv.mkDerivation (rec {
     sha256 = "0jcsjk2g28bq20yh7rvbn8xgq6q42g8dkkac0nfh12b061l638sm";
   };
 
+  # On Cygwin, Libtool produces a `.dll.a', which is not a "real" DLL
+  # (Windows' linker would need to be used somehow to produce an actual
+  # DLL.)  Thus, build the static library too, and this is what Gettext
+  # will actually use.
+  configureFlags = stdenv.lib.optional stdenv.isCygwin [ "--enable-static" ];
+
   meta = {
     description = "GNU libiconv, an iconv(3) implementation";
 
@@ -27,16 +33,6 @@ stdenv.mkDerivation (rec {
     maintainers = [ stdenv.lib.maintainers.ludo ];
 
     # This library is not needed on GNU platforms.
-    platforms = [ "i686-cygwin" "i686-darwin" ];
+    platforms = [ "i686-cygwin" ];
   };
 }
-
-//
-
-stdenv.lib.optionalAttrs stdenv.isCygwin {
-  # On Cygwin, Libtool produces a `.dll.a', which is not a "real" DLL
-  # (Windows' linker would need to be used somehow to produce an actual
-  # DLL.)  Thus, build the static library too, and this is what Gettext
-  # will actually use.
-  configureFlags = [ "--enable-static" ];
-})
diff --git a/pkgs/development/libraries/libixp/builder.sh b/pkgs/development/libraries/libixp/builder.sh
deleted file mode 100644
index 58513600fa0..00000000000
--- a/pkgs/development/libraries/libixp/builder.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-source $stdenv/setup
- 
-## oh, this is ugly. It would be way better to fix the Makefile instead
-postUnpack() {
-cd $sourceRoot
-
-cat > config.mk <<END
-VERSION = 0.3
-PREFIX=
-MANPREFIX=/share/man
-
-INCS = -I.
-LIBS = -L. -lc
-
-LDFLAGS = \${LIBS}
-
-CFLAGS = -g \${INCS} -DVERSION=\"\${VERSION}\"
-SOFLAGS = -fPIC -shared
-
-AR = ar cr
-RANLIB = ranlib
-
-END
-
-echo -e "PREFIX=\nDESTDIR=${out}" >> config.mk
-
-cd ..
-}
- 
-postUnpack=postUnpack
-
-genericBuild
diff --git a/pkgs/development/libraries/liblrdf/default.nix b/pkgs/development/libraries/liblrdf/default.nix
deleted file mode 100644
index 515c81483b0..00000000000
--- a/pkgs/development/libraries/liblrdf/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-x@{builderDefsPackage
-  , libtool, autoconf, automake, ladspaH, librdf_raptor, pkgconfig, zlib
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
-
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="liblrdf";
-    version="0.4.0";
-    project="lrdf";
-    name="${baseName}-${version}";
-    url="mirror://sourceforge/project/${project}/${baseName}/${version}/${name}.tar.gz";
-    hash="015jv7pp0a0qxgljgdvf7d01nj4fx0zgzg0wayjp7v86pa38xscm";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
-  };
-
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
-  meta = {
-    description = "Lightweight RDF library with special support for LADSPA";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.gpl2;
-  };
-  passthru = {
-  };
-}) x
-
diff --git a/pkgs/development/libraries/libmcrypt/default.nix b/pkgs/development/libraries/libmcrypt/default.nix
new file mode 100644
index 00000000000..eac577869e2
--- /dev/null
+++ b/pkgs/development/libraries/libmcrypt/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "libmcrypt-2.5.8";
+  
+  src = fetchurl {
+    url = mirror://sourceforge/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz;
+    sha256 = "0gipgb939vy9m66d3k8il98rvvwczyaw2ixr8yn6icds9c3nrsz4";
+  };
+
+  buildInputs = [];
+
+  meta = {
+    homepage = http://mcrypt.sourceforge.net;
+  };
+}
diff --git a/pkgs/development/libraries/libmemcached/default.nix b/pkgs/development/libraries/libmemcached/default.nix
new file mode 100644
index 00000000000..487b4de6cb7
--- /dev/null
+++ b/pkgs/development/libraries/libmemcached/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, cyrus_sasl, libevent }:
+
+stdenv.mkDerivation rec {
+  name = "libmemcached-1.0.7";
+  
+  src = fetchurl {
+    url = https://launchpad.net/libmemcached/1.0/1.0.7/+download/libmemcached-1.0.7.tar.gz;
+    sha256 = "10cdczkgqiirjy7jwfdk49namqi4jiv1djqrf5fxbaiyfg4qdyiy";
+  };
+  
+  buildInputs = [ cyrus_sasl libevent ];
+
+  meta = {
+    homepage = http://libmemcached.org;
+    description = "libMemcached is an open source C/C++ client library and tools for the memcached server.";
+    license = "BSD";
+  };
+}
diff --git a/pkgs/development/libraries/libmsn/libmsn-4.1-openssl-1.patch b/pkgs/development/libraries/libmsn/libmsn-4.1-openssl-1.patch
deleted file mode 100644
index cdaecf7dc54..00000000000
--- a/pkgs/development/libraries/libmsn/libmsn-4.1-openssl-1.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-http://bugs.gentoo.org/328031
-
---- msntest/msntest.cpp
-+++ msntest/msntest.cpp
-@@ -259,7 +259,11 @@
-                     if(mySocketsSsl[i].isSSL && !mySocketsSsl[i].isConnected)
-                     {
-                         BIO *bio_socket_new;
--                        SSL_METHOD *meth=NULL;
-+                        #if OPENSSL_VERSION_NUMBER >= 0x10000000L
-+                        const SSL_METHOD *meth=NULL;
-+                        #else
-+                        SSL_METHOD *meth=NULL;
-+                        #endif
-                         meth=SSLv23_client_method();
-                         SSLeay_add_ssl_algorithms();
-                         mySocketsSsl[i].ctx = SSL_CTX_new(meth);
diff --git a/pkgs/development/libraries/libssh/default.nix b/pkgs/development/libraries/libssh/default.nix
index 1ac93db0f4d..f8621f3b78b 100644
--- a/pkgs/development/libraries/libssh/default.nix
+++ b/pkgs/development/libraries/libssh/default.nix
@@ -1,14 +1,19 @@
-{stdenv, fetchurl, cmake, zlib, libgcrypt}:
+{ stdenv, fetchurl, cmake, zlib, libgcrypt }:
 
 stdenv.mkDerivation rec {
-  name = "libssh-0.5.2";
+  name = "libssh-0.5.3";
+
   src = fetchurl {
-    url = "http://www.libssh.org/files/0.5/${name}.tar.gz";
-    sha256 = "09xjb8ja8k3j3a0y3zjphhxwrnh1y618afcbbri48x87mz0vks21";
+    url = "https://red.libssh.org/attachments/download/38/${name}.tar.gz";
+    sha256 = "1w6s217vjq0w3v5i0c5ql6m0ki1yz05g9snah3azxfkl9k4schpd";
   };
+
   buildInputs = [ zlib libgcrypt ];
+
   buildNativeInputs = [ cmake ];
+
   cmakeFlags = "-DWITH_GCRYPT=ON";
+
   meta = {
     description = "SSH client library";
     license = "LGPL";
diff --git a/pkgs/development/libraries/mesa/swrast-settexbuffer.patch b/pkgs/development/libraries/mesa/swrast-settexbuffer.patch
deleted file mode 100644
index c74daa3aef1..00000000000
--- a/pkgs/development/libraries/mesa/swrast-settexbuffer.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-https://build.opensuse.org/package/view_file?file=0001-Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch&package=Mesa&project=openSUSE%3AFactory&srcmd5=be25d34ad69853c2bb21ed376061d573
-
-diff -ru Mesa-7.10.1-orig//src/mesa/drivers/dri/swrast/swrast.c Mesa-7.10.1//src/mesa/drivers/dri/swrast/swrast.c
---- Mesa-7.10.1-orig//src/mesa/drivers/dri/swrast/swrast.c	2010-12-14 22:43:15.000000000 +0100
-+++ Mesa-7.10.1//src/mesa/drivers/dri/swrast/swrast.c	2011-03-07 18:08:17.062816112 +0100
-@@ -61,6 +61,7 @@
- static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
- 				GLint texture_format, __DRIdrawable *dPriv)
- {
-+    GET_CURRENT_CONTEXT(ctx);
-     struct dri_context *dri_ctx;
-     int x, y, w, h;
-     __DRIscreen *sPriv = dPriv->driScreenPriv;
-@@ -90,6 +91,10 @@
-     _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage,
- 			       w, h, 1, 0, internalFormat, texFormat);
- 
-+    ctx->Driver.TexImage2D(ctx, target, 0, internalFormat,
-+              w, h, 0, texture_format, GL_UNSIGNED_INT_8_8_8_8,
-+              NULL, &ctx->Unpack, texObj, texImage);
-+
-     sPriv->swrast_loader->getImage(dPriv, x, y, w, h, (char *)texImage->Data,
- 				   dPriv->loaderPrivate);
- 
diff --git a/pkgs/development/libraries/muparser/default.nix b/pkgs/development/libraries/muparser/default.nix
index 009b6c9ddfe..3cc1c6ce43c 100644
--- a/pkgs/development/libraries/muparser/default.nix
+++ b/pkgs/development/libraries/muparser/default.nix
@@ -1,12 +1,14 @@
-{stdenv, fetchurl}:
+{stdenv, fetchurl, unzip}:
 
 stdenv.mkDerivation {
-	name = "muparser-1.34";
+	name = "muparser-2.2.2";
 	src = fetchurl {
-		url = mirror://sourceforge/muparser/muparser_v134.tar.gz;
-		sha256 = "0xi27xjj7bwwf5nw3n2lynpr76al3vp204zwh71wkfnhwbzksg8f";
+		url = mirror://sourceforge/muparser/muparser_v2_2_2.zip;
+		sha256 = "0pncvjzzbwcadgpwnq5r7sl9v5r2y9gjgfnlw0mrs9wj206dbhx9";
 	};
 
+  buildInputs = [ unzip ];
+
   meta = {
     homepage = http://muparser.sourceforge.net;
     description = "An extensible high performance math expression parser library written in C++";
diff --git a/pkgs/development/libraries/oniguruma/default.nix b/pkgs/development/libraries/oniguruma/default.nix
new file mode 100644
index 00000000000..984b84085fe
--- /dev/null
+++ b/pkgs/development/libraries/oniguruma/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "onig-5.9.3";
+  
+  src = fetchurl {
+    url = http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.3.tar.gz;
+    sha256 = "0ahz0l64v2xv4jbh0w3q697xjff8jzdq2264h9jhwxl459msdfy3";
+  };
+  
+  meta = {
+    homepage = http://www.geocities.jp/kosako3/oniguruma/;
+    description = "Oniguruma is a regular expressions library.";
+    license = "BSD";
+  };
+}
diff --git a/pkgs/development/libraries/opencascade/default.nix b/pkgs/development/libraries/opencascade/default.nix
index 375aa4f2d58..7cc47a30eb7 100644
--- a/pkgs/development/libraries/opencascade/default.nix
+++ b/pkgs/development/libraries/opencascade/default.nix
@@ -2,10 +2,10 @@
 ftgl, freetype}:
 
 stdenv.mkDerivation rec {
-  name = "opencascade-6.5.2";
+  name = "opencascade-6.5.4";
   src = fetchurl {
-    url = http://files.opencascade.com/OCCT/OCC_6.5.2_release/OpenCASCADE652.tar.gz;
-    sha256 = "0nsfjhd6rv1fmq8jbyzcs0f13h4xfld487vqs9bwd4lbwcfqxwcy";
+    url = http://files.opencascade.com/OCCT/OCC_6.5.4_release/OpenCASCADE654.tar.gz;
+    sha256 = "1di08mc0wly4cdi3rh9kj52bk0bfpyk6dy03c9yfnv04i7z03kmy";
   };
 
   buildInputs = [ mesa tcl tk file libXmu automake autoconf libtool qt4 ftgl freetype ];
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
 
   # -fpermissive helps building opencascade, although gcc detects a flaw in the code
   # and reports an error otherwise. Further versions may fix that.
-  NIX_CFLAGS_COMPILE = "-I${ftgl}/include/FTGL -I${freetype}/include/freetype2 -fpermissive";
+  NIX_CFLAGS_COMPILE = "-fpermissive";
 
-  configureFlags = [ "--with-tcl=${tcl}/lib" "--with-tk=${tk}/lib" ];
+  configureFlags = [ "--with-tcl=${tcl}/lib" "--with-tk=${tk}/lib" "--with-qt=${qt4}" "--with-ftgl=${ftgl}" "--with-freetype=${freetype}" ];
 
   postInstall = ''
     mv $out/inc $out/include
diff --git a/pkgs/development/libraries/opencv/changeset_r3190.diff b/pkgs/development/libraries/opencv/changeset_r3190.diff
deleted file mode 100644
index 4a614659e72..00000000000
--- a/pkgs/development/libraries/opencv/changeset_r3190.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- opencv/src/highgui/cvcap_ffmpeg.cpp

-+++ opencv/src/highgui/cvcap_ffmpeg.cpp

-@@ -49,6 +49,15 @@

- #if !defined(WIN32) || defined(__MINGW32__)

- // some versions of FFMPEG assume a C99 compiler, and don't define INT64_C

--#ifndef INT64_C

--#define INT64_C

-+#if !defined INT64_C || !defined UINT64_C

-+# if __WORDSIZE == 64

-+#  define INT64_C(c)	c ## UL

-+# else

-+#  define INT64_C(c)	c ## ULL

-+# endif

-+# if __WORDSIZE == 64

-+#  define UINT64_C(c)	c ## UL

-+# else

-+#  define UINT64_C(c)	c ## ULL

-+# endif

- #define __STDC_CONSTANT_MACROS

- // force re-inclusion of stdint.h to get INT64_C macro

diff --git a/pkgs/development/libraries/opencv/default.nix b/pkgs/development/libraries/opencv/default.nix
index d40b253df2f..207c14bdce0 100644
--- a/pkgs/development/libraries/opencv/default.nix
+++ b/pkgs/development/libraries/opencv/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg
 , pkgconfig, gstreamer, xineLib, glib }:
 
-let v = "2.4.2"; in
+let v = "2.4.3"; in
 
 stdenv.mkDerivation rec {
   name = "opencv-${v}";
 
   src = fetchurl {
     url = "mirror://sourceforge/opencvlibrary/OpenCV-${v}.tar.bz2";
-    sha256 = "0a1c4ys78k670dsk1fapylpf8hwfyzy944r9jvwivqh33s0j6039";
+    sha256 = "16zmyr383x9ka81mp6h2s9hlfzd383njddf3x1rswkldjy2ykyzq";
   };
 
   buildInputs = [ gtk glib libjpeg libpng libtiff jasper ffmpeg xineLib gstreamer ];
diff --git a/pkgs/development/libraries/opencv/default.nix.edited b/pkgs/development/libraries/opencv/default.nix.edited
deleted file mode 100644
index 05db48095c3..00000000000
--- a/pkgs/development/libraries/opencv/default.nix.edited
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, fetchurl, cmake, gtk, libjpeg, libpng, libtiff, jasper, ffmpeg
-, pkgconfig, gstreamer }:
-
-let v = "2.3.1a"; in
-
-stdenv.mkDerivation rec {
-  name = "opencv-${v}";
-
-  src = fetchurl {
-    url = "mirror://sourceforge/opencvlibrary/OpenCV-${v}.tar.bz2";
-    sha256 = "0325s7pa2npcw2gc06pr6q5ik4xdyf08rvkfc0myn10w20lzb8m9";
-  };
-
-  buildInputs = [ gtk libjpeg libpng libtiff jasper ffmpeg gstreamer ];
-
-  buildNativeInputs = [ cmake pkgconfig ];
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "Open Computer Vision Library with more than 500 algorithms";
-    homepage = http://opencv.willowgarage.com/;
-    license = "BSD";
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; linux;
-  };
-}
diff --git a/pkgs/development/libraries/openmotif/default.nix b/pkgs/development/libraries/openmotif/default.nix
deleted file mode 100644
index cf9b059bd16..00000000000
--- a/pkgs/development/libraries/openmotif/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-args: with args;
-
-# this is the stable edition of OpenMotif - sources fetched from Debian, without
-# patches applied
-
-stdenv.mkDerivation {
-  name = "openmotif-2.2.3";
-  src = fetchurl {
-    url = http://ftp.de.debian.org/debian/pool/non-free/o/openmotif/openmotif_2.2.3.orig.tar.gz; 
-    sha256 = "0amd9834p1ajnin7c8f1gad2jl2csf69msxcpc10rzm2x27jigxi";
-  };
-
-  unpackPhase = ''
-    tar xzf $src
-    tar xzf openmotif-2.2.3.orig/dist/openMotif-2.2.3.tar.gz
-    rm -rf openmotif-2.2.3.orig
-    cd openMotif-2.2.3
-  '';
-
-  buildInputs = [flex perl];
-  propagatedBuildInputs = [x11 libXp libXau libXaw libXext xbitmaps];
-
-  CFLAGS="-fno-strict-aliasing";  # without this openmotif may segfault
-
-  meta = {
-    description = "Open source version of motif toolkit including aka libmotif3";
-    homepage = http://www.opengroup.org/openmotif/;
-    # Open motif is free for open source projects
-    license = "non-free";
-  };
-}
-
diff --git a/pkgs/development/libraries/qt-4.x/4.8/default.nix b/pkgs/development/libraries/qt-4.x/4.8/default.nix
index 87cec5bb3d9..0acf5c07bbd 100644
--- a/pkgs/development/libraries/qt-4.x/4.8/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix
@@ -9,6 +9,7 @@
 , buildWebkit ? true
 , flashplayerFix ? false, gdk_pixbuf
 , gtkStyle ? false, libgnomeui, gtk, GConf, gnome_vfs
+, developerBuild ? false
 }:
 
 with stdenv.lib;
@@ -74,6 +75,7 @@ stdenv.mkDerivation rec {
       -nomake demos -nomake examples -nomake docs
 
       -no-phonon ${if buildWebkit then "" else "-no"}-webkit ${if buildMultimedia then "" else "-no"}-multimedia -audio-backend
+      ${if developerBuild then "-developer-build" else ""}
     '';
 
   propagatedBuildInputs =
diff --git a/pkgs/development/libraries/science/biology/bioconductor/bioconductor.nix b/pkgs/development/libraries/science/biology/bioconductor/bioconductor.nix
deleted file mode 100644
index d48511cead3..00000000000
--- a/pkgs/development/libraries/science/biology/bioconductor/bioconductor.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{stdenv, fetchurl, rLang}:
-
-let
-
-  /* Function to compile Bioconductor packages */
-
-  buildBioConductor =
-    { pname, pver, src, postInstall ? ""}:
-
-    stdenv.mkDerivation {
-      name = "${pname}-${pver}";
-
-      inherit src;
-
-      buildInputs = [rLang];
-
-      # dontAddPrefix = true;
-
-      # preBuild = "makeFlagsArray=(dictdir=$out/lib/aspell datadir=$out/lib/aspell)";
-
-      inherit postInstall;
-      installPhase = ''
-        R CMD INSTALL ${affyioSrc}
-      '';
-
-      meta = {
-        description = "Bioconductor package for ${pname}";
-      };
-    };
-
-in {
-
-   affyio = buildBioC {
-     pname = "affyio";
-     pver  = "1.8.1";
-     src = fetchurl {
-       url = http://www.bioconductor.org/packages/release/bioc/src/contrib/affyio_1.8.1.tar.gz;
-       sha256 = "136nkpq870vrwf9z5gq32xjzrp8bjfbk9pn8fki2a5w2lr0qc8nh";
-     };
-  };
-
-    
-}
diff --git a/pkgs/development/libraries/spice-protocol/default.nix b/pkgs/development/libraries/spice-protocol/default.nix
index c1b6d0e67e7..25f42275644 100644
--- a/pkgs/development/libraries/spice-protocol/default.nix
+++ b/pkgs/development/libraries/spice-protocol/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "spice-protocol-0.10.1";
+  name = "spice-protocol-0.12.2";
 
   src = fetchurl {
     url = "http://www.spice-space.org/download/releases/${name}.tar.bz2";
-    sha256 = "0drmy2ws7qwmvjxfynhssbvh1y954rfik99hnl789g7yg6vcpxp5";
+    sha256 = "0v6msf6gbl8g69qamp97dggz148zpc3ncbfgbq3b472wszjdkclb";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/spice/default.nix b/pkgs/development/libraries/spice/default.nix
index 52726f017ab..fc2e5bb72c5 100644
--- a/pkgs/development/libraries/spice/default.nix
+++ b/pkgs/development/libraries/spice/default.nix
@@ -1,27 +1,28 @@
 { stdenv, fetchurl, pkgconfig, pixman, celt, alsaLib, openssl
 , libXrandr, libXfixes, libXext, libXrender, libXinerama, libjpeg, zlib
-, spice_protocol }:
+, spice_protocol, python, pyparsing }:
 
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  name = "spice-0.10.1";
+  name = "spice-0.12.0";
 
   src = fetchurl {
     url = "http://www.spice-space.org/download/releases/${name}.tar.bz2";
-    sha256 = "105p5fh6hhhzvz0fh1x52lzi41rpvajf390xbbw3da4417lf5pqk";
+    sha256 = "15mp6nz467h4l5jg3vk51si6r5w7g329jvsy61f2gl3yabwcxmva";
   };
 
   buildInputs = [ pixman celt alsaLib openssl libjpeg zlib
                   libXrandr libXfixes libXrender libXext libXinerama
-                ];
+                  python pyparsing ];
 
   buildNativeInputs = [ pkgconfig spice_protocol ];
 
-  # NIX_CFLAGS_COMPILE = "-fno-stack-protector";
+  NIX_CFLAGS_COMPILE = "-fno-stack-protector";
 
   configureFlags = [
     "--with-sasl=no"
+    "--disable-smartcard"
   ];
 
   postInstall = ''
diff --git a/pkgs/development/libraries/taglib/live.nix b/pkgs/development/libraries/taglib/live.nix
deleted file mode 100644
index 35af2ff5195..00000000000
--- a/pkgs/development/libraries/taglib/live.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{stdenv, fetchsvn, fetchsvnrevision, zlib, cmake
-, repository ? "svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib"
-, rev ? fetchsvnrevision repository
-, src ? fetchsvn {
-    url = repository;
-    rev = rev;
-  }
-}:
-
-stdenv.mkDerivation {
-  name = "taglib-live";
-
-  inherit src;
-
-  cmakeFlags = [ "-DWITH-ASF=ON" "-DWITH-MP4=ON" ];
-
-  buildInputs = [ zlib cmake ];
-
-  meta = {
-    homepage = http://developer.kde.org/~wheeler/taglib.html;
-    description = "A library for reading and editing the meta-data of several popular audio formats";
-  };
-}
diff --git a/pkgs/development/libraries/tcp-wrappers/default.nix b/pkgs/development/libraries/tcp-wrappers/default.nix
deleted file mode 100644
index 14335e6a3ad..00000000000
--- a/pkgs/development/libraries/tcp-wrappers/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-x@{builderDefsPackage
-  , flex, bison
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
-
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="tcp-wrappers";
-    version="7.6";
-    name="${baseName}-${version}";
-    url="http://ftp.porcupine.org/pub/security/tcp_wrappers_${version}.tar.gz";
-    hash="0p9ilj4v96q32klavx0phw9va21fjp8vpk11nbh6v2ppxnnxfhwm";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
-  };
-
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["setVars" "doUnpack" "fixMakefile" "doPatch" 
-    "doMake" "doDeploy"];
-
-  patches = [./have-strerror.patch ./trivial-fixes.patch];
-
-  makeFlags = [
-    "REAL_DAEMON_DIR=$out/bin"
-    "STYLE='\"-DHAVE_STRERROR -DSYS_ERRLIST_DEFINED\"'"
-    "generic"
-  ];
-
-  setVars = a.noDepEntry ''
-    export NIX_LDFLAGS="$NIX_LDFLAGS -lnsl"
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC"
-  '';
-
-  fixMakefile = a.fullDepEntry ''
-    chmod u+w Makefile
-    echo 'libwrap.so: $(LIB_OBJ)' >> Makefile
-    echo '	ld $(LIB_OBJ) --shared -o libwrap.so' >> Makefile
-  '' ["minInit"];
-
-  doDeploy = a.fullDepEntry ''
-    mkdir -p "$out"/{sbin,lib}
-    make libwrap.so
-    cp libwrap.{a,so} "$out/lib"
-    find . -perm +111 -a ! -name '*.*' -exec cp '{}' "$out/sbin" ';'
-  '' ["defEnsureDir" "minInit"];
-      
-  meta = {
-    description = "Network logging TCP wrappers";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = "free-noncopyleft";
-  };
-  passthru = {
-    updateInfo = {
-      downloadPage = "http://ftp.porcupine.org/pub/security/index.html";
-    };
-  };
-}) x
diff --git a/pkgs/development/libraries/tcp-wrappers/have-strerror.patch b/pkgs/development/libraries/tcp-wrappers/have-strerror.patch
deleted file mode 100644
index 626fce1a88a..00000000000
--- a/pkgs/development/libraries/tcp-wrappers/have-strerror.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Debian patch
-diff -ruN tcp_wrappers_7.6.orig/percent_m.c tcp_wrappers_7.6/percent_m.c
---- tcp_wrappers_7.6.orig/percent_m.c	1994-12-28 17:42:37.000000000 +0100
-+++ tcp_wrappers_7.6/percent_m.c	2003-08-21 02:45:31.000000000 +0200
-@@ -29,11 +29,15 @@
- 
-     while (*bp = *cp)
- 	if (*cp == '%' && cp[1] == 'm') {
-+#ifdef HAVE_STRERROR
-+	    strcpy(bp, strerror(errno));
-+#else
- 	    if (errno < sys_nerr && errno > 0) {
- 		strcpy(bp, sys_errlist[errno]);
- 	    } else {
- 		sprintf(bp, "Unknown error %d", errno);
- 	    }
-+#endif
- 	    bp += strlen(bp);
- 	    cp += 2;
- 	} else {
diff --git a/pkgs/development/libraries/tcp-wrappers/trivial-fixes.patch b/pkgs/development/libraries/tcp-wrappers/trivial-fixes.patch
deleted file mode 100644
index 1e55819f8de..00000000000
--- a/pkgs/development/libraries/tcp-wrappers/trivial-fixes.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Debian patch
-diff -ruNp tcp_wrappers_7.6.orig/options.c tcp_wrappers_7.6/options.c
---- tcp_wrappers_7.6.orig/options.c	2006-03-01 23:45:28.000000000 +0100
-+++ tcp_wrappers_7.6/options.c	2006-03-01 22:55:44.000000000 +0100
-@@ -41,6 +41,7 @@ static char sccsid[] = "@(#) options.c 1
- #include <netinet/in.h>
- #include <netdb.h>
- #include <stdio.h>
-+#include <unistd.h>
- #include <syslog.h>
- #include <pwd.h>
- #include <grp.h>
-diff -ruNp tcp_wrappers_7.6.orig/scaffold.c tcp_wrappers_7.6/scaffold.c
---- tcp_wrappers_7.6.orig/scaffold.c	2006-03-01 23:45:28.000000000 +0100
-+++ tcp_wrappers_7.6/scaffold.c	2006-03-01 22:56:13.000000000 +0100
-@@ -17,6 +17,7 @@ static char sccs_id[] = "@(#) scaffold.c
- #include <arpa/inet.h>
- #include <netdb.h>
- #include <stdio.h>
-+#include <stdlib.h>
- #include <syslog.h>
- #include <setjmp.h>
- #include <string.h>
-@@ -28,3 +28,2 @@
- 
--extern char *malloc();
-
diff --git a/pkgs/development/ocaml-modules/lablgtkmathview/configure.patch b/pkgs/development/ocaml-modules/lablgtkmathview/configure.patch
deleted file mode 100644
index b841e8f4382..00000000000
--- a/pkgs/development/ocaml-modules/lablgtkmathview/configure.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- configure	2010-09-02 10:58:16.128236964 -0400
-+++ configure.old	2010-09-02 10:57:42.368111615 -0400
-@@ -1637,9 +1637,9 @@
- echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_caml_mlvalues_h" >&5
- echo "${ECHO_T}$ac_cv_file__usr_include_caml_mlvalues_h" >&6
- if test $ac_cv_file__usr_include_caml_mlvalues_h = yes; then
--  OCAML_INCLUDE_DIR=/usr/include
-+  OCAML_INCLUDE_DIR=/usr/include/caml
- else
--  OCAML_INCLUDE_DIR=$OCAML_LIB_DIR
-+  OCAML_INCLUDE_DIR=$OCAML_LIB_DIR/caml
- 
- fi
- 
diff --git a/pkgs/development/python-modules/generic/default.nix b/pkgs/development/python-modules/generic/default.nix
index 4e0b6100231..8da833b0dc1 100644
--- a/pkgs/development/python-modules/generic/default.nix
+++ b/pkgs/development/python-modules/generic/default.nix
@@ -3,12 +3,14 @@
    (http://pypi.python.org/pypi/setuptools/), which represents a large
    number of Python packages nowadays.  */
 
-{ python, setuptools, wrapPython, lib }:
+{ python, setuptools, wrapPython, lib, offlineDistutils, setuptoolsSite }:
 
 { name, namePrefix ? "python-"
 
 , buildInputs ? []
 
+, propagatedBuildInputs ? []
+
 , # List of packages that should be added to the PYTHONPATH
   # environment variable in programs built by this function.  Packages
   # in the standard `propagatedBuildInputs' variable are also added.
@@ -19,9 +21,11 @@
 
 , installCommand ?
     ''
-      easy_install --prefix="$out" .
+      easy_install --always-unzip --prefix="$out" .
     ''
     
+, preConfigure ? "true"
+
 , buildPhase ? "true"
 
 , doCheck ? true
@@ -43,12 +47,22 @@ python.stdenv.mkDerivation (attrs // {
 
   name = namePrefix + name;
 
+  phases = "unpackPhase patchPhase configurePhase buildPhase installPhase checkPhase fixupPhase distPhase";
+
   buildInputs = [ python wrapPython setuptools ] ++ buildInputs ++ pythonPath;
 
+  # setuptoolsSite is responsible for loading pth files
+  propagatedBuildInputs = propagatedBuildInputs ++ [ setuptoolsSite ];
+
+  buildInputStrings = map toString buildInputs;
+
   pythonPath = [ setuptools] ++ pythonPath;
 
-  # XXX: Should we run `easy_install --always-unzip'?  It doesn't seem
-  # to have a noticeable impact on small scripts.
+  preConfigure = ''
+    PYTHONPATH="${offlineDistutils}/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+    ${preConfigure}
+  '';
+
   installPhase = ''
     mkdir -p "$out/lib/${python.libPrefix}/site-packages"
 
@@ -56,13 +70,29 @@ python.stdenv.mkDerivation (attrs // {
     export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
     ${installCommand}
 
+    # A pth file might have been generated to load the package from
+    # within its own site-packages, rename this package not to
+    # collide with others.
+    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
+
+    # Remove any site.py files generated by easy_install as these
+    # cause collisions. If pth files are to be processed a
+    # corresponding site.py needs to be included in the PYTHONPATH.
+    #
+    # leave them until we have a better solution: see #209
+    #rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
     ${postInstall}
   '';
 
   postFixup =
     ''
       wrapPythonPrograms
-    
+
       # If a user installs a Python package, she probably also wants its
       # dependencies in the user environment (since Python modules don't
       # have something like an RPATH, so the only way to find the
@@ -70,5 +100,12 @@ python.stdenv.mkDerivation (attrs // {
       if test -e $out/nix-support/propagated-build-inputs; then
           ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
       fi
+
+      createBuildInputsPth build-inputs "$buildInputStrings"
+      for inputsfile in propagated-build-inputs propagated-build-native-inputs; do
+        if test -e $out/nix-support/$inputsfile; then
+            createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)"
+        fi
+      done
     '';
 })
diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh
index 65f3229ca7c..71269945d6f 100644
--- a/pkgs/development/python-modules/generic/wrap.sh
+++ b/pkgs/development/python-modules/generic/wrap.sh
@@ -45,3 +45,16 @@ _addToPythonPath() {
         done
     fi
 }
+
+createBuildInputsPth() {
+    local category="$1"
+    local inputs="$2"
+    if [ foo"$inputs" != foo ]; then
+        for x in $inputs; do
+            if test -d "$x"/lib/@libPrefix@/site-packages; then
+                echo $x/lib/@libPrefix@/site-packages \
+                    >> "$out"/lib/@libPrefix@/site-packages/${name}-nix-python-$category.pth
+            fi
+        done
+    fi
+}
diff --git a/pkgs/development/python-modules/offline-distutils/default.nix b/pkgs/development/python-modules/offline-distutils/default.nix
new file mode 100644
index 00000000000..2ed41b08bb7
--- /dev/null
+++ b/pkgs/development/python-modules/offline-distutils/default.nix
@@ -0,0 +1,21 @@
+# Used during module installation to prevent easy_install and python
+# setup.py install/test from downloading
+
+{ stdenv, python }:
+
+stdenv.mkDerivation {
+  name = "python-offline-distutils-${python.version}";
+
+  buildInputs = [ python ];
+
+  unpackPhase = "true";
+  installPhase = ''
+    dst="$out/lib/${python.libPrefix}"
+    ensureDir $dst/distutils
+    ln -s ${python}/lib/${python.libPrefix}/distutils/* $dst/distutils/
+    cat <<EOF > $dst/distutils/distutils.cfg
+[easy_install]
+allow-hosts = None
+EOF
+  '';
+}
diff --git a/pkgs/development/python-modules/pil/default.nix b/pkgs/development/python-modules/pil/default.nix
index 4cf4576c0ce..1dfdfee08fb 100644
--- a/pkgs/development/python-modules/pil/default.nix
+++ b/pkgs/development/python-modules/pil/default.nix
@@ -1,9 +1,9 @@
-{ fetchurl, stdenv, python, libjpeg, zlib, freetype }:
+{ fetchurl, stdenv, python, buildPythonPackage, libjpeg, zlib, freetype }:
 
 let version = "1.1.7"; in
 
-stdenv.mkDerivation {
-  name = "python-imaging-${version}";
+buildPythonPackage {
+  name = "imaging-${version}";
   
   src = fetchurl {
     url = "http://effbot.org/downloads/Imaging-${version}.tar.gz";
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
 
   buildPhase   = "python setup.py build_ext -i";
   checkPhase   = "python selftest.py";
-  installPhase = "python setup.py install --prefix=$out";
+  #installPhase = "python setup.py install --prefix=$out";
 
   meta = {
     homepage = http://www.pythonware.com/products/pil/;
diff --git a/pkgs/development/python-modules/pycrypto/default.nix b/pkgs/development/python-modules/pycrypto/default.nix
index 9c756c9ed64..0ad1663da65 100644
--- a/pkgs/development/python-modules/pycrypto/default.nix
+++ b/pkgs/development/python-modules/pycrypto/default.nix
@@ -1,7 +1,8 @@
-{ stdenv, fetchurl, python, gmp }:
+{ stdenv, fetchurl, python, buildPythonPackage, gmp }:
 
-stdenv.mkDerivation rec {
+buildPythonPackage rec {
   name = "pycrypto-2.6";
+  namePrefix = "";
 
   src = fetchurl {
     url = "http://pypi.python.org/packages/source/p/pycrypto/${name}.tar.gz";
@@ -10,14 +11,16 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ python gmp ];
 
-  buildPhase = "true";
-
-  installPhase =
+  buildPhase =
     ''
       python ./setup.py build_ext --library-dirs=${gmp}/lib
-      python ./setup.py install --prefix=$out
     '';
 
+#  installPhase =
+#    ''
+#      python ./setup.py install --prefix=$out
+#    '';
+
   meta = {
     homepage = "http://www.pycrypto.org/";
     description = "Python Cryptography Toolkit";
diff --git a/pkgs/development/python-modules/python-gudev/default.nix b/pkgs/development/python-modules/python-gudev/default.nix
deleted file mode 100644
index c9105555f9d..00000000000
--- a/pkgs/development/python-modules/python-gudev/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{stdenv, fetchgit, python, autoconf, automake, libtool, pygobject, pkgconfig, udev}:
-
-stdenv.mkDerivation {
-  name = "python-gudev-147.2";
-  src = fetchgit {
-    url = git://github.com/nzjrs/python-gudev.git;
-    rev = "refs/tags/147.2";
-    sha256 = "5b9766fcb88855a77ac8bb416ca3b51f55ac7d82b0e189f88c59cacb11586c15";
-  };
-
-  buildInputs = [ python autoconf automake libtool pygobject pkgconfig udev ];
-
-  preConfigure = ''
-    sed -e 's@/usr/bin/file@file@g' -i configure.ac
-    sh autogen.sh
-  '';
-
-  meta = {
-    homepage = http://www.freedesktop.org/software/systemd/gudev/;
-    description = "Python binding to the GUDev udev helper library.";
-    license = "GPLv3+";
-    maintainers = with stdenv.lib.maintainers; [qknight];
-    platforms = with stdenv.lib.platforms; all;
-  };
-}
diff --git a/pkgs/development/python-modules/recursive-pth-loader/default.nix b/pkgs/development/python-modules/recursive-pth-loader/default.nix
new file mode 100644
index 00000000000..959882be938
--- /dev/null
+++ b/pkgs/development/python-modules/recursive-pth-loader/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, python }:
+
+stdenv.mkDerivation rec {
+  name = "python-recursive-pth-loader-1.0";
+
+  unpackPhase = "true";
+
+  buildInputs = [ python ];
+
+  installPhase =
+    ''
+      dst=$out/lib/${python.libPrefix}/site-packages
+      mkdir -p $dst
+      cat ${./sitecustomize.py} >> $dst/sitecustomize.py
+    '';
+
+  meta = {
+      description = "Enable recursive processing of pth files anywhere in sys.path";
+  };
+}
diff --git a/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py b/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py
new file mode 100644
index 00000000000..057e779803c
--- /dev/null
+++ b/pkgs/development/python-modules/recursive-pth-loader/sitecustomize.py
@@ -0,0 +1,46 @@
+"""Recursively load pth files in site-packages of sys.path
+
+- iterate over sys.path
+- check for pth in dirs that end in site-packages
+- ignore import statements in pth files
+- add dirs listed in pth files right after current sys.path element,
+  they will be processed in next iteration
+"""
+
+import os
+import site
+import sys
+
+
+for path_idx, sitedir in enumerate(sys.path):
+    # ignore non-site-packages
+    if not sitedir.endswith('site-packages'):
+        continue
+
+    # find pth files
+    try:
+        names = os.listdir(sitedir)
+    except os.error:
+        continue
+    dotpth = os.extsep + "pth"
+    pths = [name for name in names if name.endswith(dotpth)]
+
+    for pth in pths:
+        fullname = os.path.join(sitedir, pth)
+        try:
+            f = open(fullname, "rU")
+        except IOError:
+            continue
+
+        with f:
+            for n, line in enumerate(f):
+                if line.startswith("#"):
+                    continue
+
+                if line.startswith(("import ", "import\t")):
+                    continue
+
+                line = line.rstrip()
+                dir, dircase = site.makepath(sitedir, line)
+                if not dircase in sys.path:
+                    sys.path.insert(path_idx+1, dir)
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index 50b73aaf8f6..879f6aed8de 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -1,7 +1,9 @@
 { stdenv, fetchurl, python, wrapPython }:
 
 stdenv.mkDerivation rec {
-  name = "setuptools-0.6c11";
+  name = "setuptools-" + version;
+
+  version = "0.6c11";
 
   src = fetchurl {
     url = "http://pypi.python.org/packages/source/s/setuptools/${name}.tar.gz";
diff --git a/pkgs/development/python-modules/setuptools/site.nix b/pkgs/development/python-modules/setuptools/site.nix
new file mode 100644
index 00000000000..34e7b478595
--- /dev/null
+++ b/pkgs/development/python-modules/setuptools/site.nix
@@ -0,0 +1,16 @@
+# Propagated by buildPythonPackge to process pth files
+
+{ stdenv, python, setuptools }:
+
+stdenv.mkDerivation {
+  name = "python-setuptools-site-${setuptools.version}";
+
+  buildInputs = [ python setuptools ];
+
+  unpackPhase = "true";
+  installPhase = ''
+    dst="$out/lib/${python.libPrefix}/site-packages"
+    ensureDir $dst
+    ln -s ${setuptools}/lib/${python.libPrefix}/site-packages/site.* $dst/
+  '';
+}
diff --git a/pkgs/development/python-modules/zope/default.nix b/pkgs/development/python-modules/zope/default.nix
deleted file mode 100644
index c01945bf472..00000000000
--- a/pkgs/development/python-modules/zope/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{stdenv, fetchurl, python}:
-
-stdenv.mkDerivation rec {
-  version = "3.4.0";
-  name = "zope-${version}";
-  src = fetchurl {
-    url = "http://www.zope.org/Products/Zope3/${version}/Zope-${version}.tgz";
-    sha256 = "3e834e8749945d8fc0a67bb724f2cf0c671f04f477e24fb8edb74828e331901d";
-  };
-  patches = [
-    ./zope_python-2.4.4.patch
-    ./zope_python-readline.patch
-  ];
-  buildInputs = [python];
-}
diff --git a/pkgs/development/python-modules/zope/zope_python-2.4.4.patch b/pkgs/development/python-modules/zope/zope_python-2.4.4.patch
deleted file mode 100644
index 22360412964..00000000000
--- a/pkgs/development/python-modules/zope/zope_python-2.4.4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -r 8833d4892dfc Zope-3.2.1/configure
---- a/configure	Mon Aug 18 14:55:39 2008 +0200
-+++ b/configure	Mon Aug 18 14:57:39 2008 +0200
-@@ -21,7 +21,7 @@ prefix="$DEFAULT_PREFIX"
- 
- # Place the optimal target version number (as returned by sys.version)
- # below
--TARGET="2.4.2"
-+TARGET="2.4.4"
- 
- # Order a list of "acceptable" python version numbers (as returned by
- # sys.version) below in "best" to "worst" order, not including the
diff --git a/pkgs/development/python-modules/zope/zope_python-readline.patch b/pkgs/development/python-modules/zope/zope_python-readline.patch
deleted file mode 100644
index 4775cfba49b..00000000000
--- a/pkgs/development/python-modules/zope/zope_python-readline.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -r 8833d4892dfc Zope-3.2.1/Dependencies/zope.publisher-Zope-3.2.1/zope.publisher/http.py
---- a/Dependencies/zope.publisher-Zope-3.2.1/zope.publisher/http.py	Mon Aug 18 14:55:39 2008 +0200
-+++ b/Dependencies/zope.publisher-Zope-3.2.1/zope.publisher/http.py	Mon Aug 18 16:37:02 2008 +0200
-@@ -198,7 +198,7 @@ class HTTPInputStream(object):
-         self.cacheStream.write(data)
-         return data
- 
--    def readline(self):
-+    def readline(self, size=None):
-         data = self.stream.readline()
-         self.cacheStream.write(data)
-         return data
diff --git a/pkgs/development/qtcreator/default.nix b/pkgs/development/qtcreator/default.nix
index b57b9884e61..60ff5ede75a 100644
--- a/pkgs/development/qtcreator/default.nix
+++ b/pkgs/development/qtcreator/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, qt4 }:
+{ stdenv, fetchurl, qt4_for_qtcreator }:
 
 let
-  version = "2.5.2";
+  version = "2.6.0";
 in
 
 stdenv.mkDerivation rec {
@@ -9,16 +9,19 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://origin.releases.qt-project.org/qtcreator/${version}/qt-creator-${version}-src.tar.gz";
-    md5 = "4a9c09cdf4609753283c31451c84ceb8";
+    md5 = "9bf01098f84a0fe930b2718d11124204";
   };
 
-  buildInputs = [ qt4 ];
+  buildInputs = [ qt4_for_qtcreator ];
 
   doCheck = false;
 
   enableParallelBuilding = true;
 
-  preConfigure = "qmake";
+  preConfigure = ''
+    qmake -spec linux-g++ "QT_PRIVATE_HEADERS=${qt4_for_qtcreator}/include" qtcreator.pro
+  '';
+
   installFlags = "INSTALL_ROOT=$(out)";
 
   meta = {
diff --git a/pkgs/development/tools/analysis/radare/lua.patch b/pkgs/development/tools/analysis/radare/lua.patch
deleted file mode 100644
index 3a2ca0d505d..00000000000
--- a/pkgs/development/tools/analysis/radare/lua.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/plug/hack/Makefile b/src/plug/hack/Makefile
-index b05d8dd..d6c73f9 100644
---- a/src/plug/hack/Makefile
-+++ b/src/plug/hack/Makefile
-@@ -7,7 +7,6 @@ PERL_LIBS=`perl -MExtUtils::Embed -e ldopts` -lncurses
- PY_CFLAGS=-I${PREFIX}/include/python2.5/ -I/usr/include/python2.5/
- PY_LIBS=-lpython2.5
- LUA_CFLAGS=-I${PREFIX}/include/lua5.1/ -I/usr/include/lua5.1/
--LUA_LIBS=
- RUBY_CFLAGS=-I/usr/lib/ruby/1.8/i386-linux
- RUBY_LIBS=-lruby18
- SO=${SHARED_EXT}
diff --git a/pkgs/development/tools/build-managers/apache-ant/core-apache-ant.nix b/pkgs/development/tools/build-managers/apache-ant/core-apache-ant.nix
deleted file mode 100644
index 668a6c4d6b5..00000000000
--- a/pkgs/development/tools/build-managers/apache-ant/core-apache-ant.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{stdenv, fetchurl}:
-
-stdenv.mkDerivation {
-  name = "core-apache-ant-1.6.5";
-  realname = "apache-ant-1.6.5";
-
-  builder = ./core-builder.sh;
-  src = fetchurl {
-    url = http://apache.surfnet.nl/ant/binaries/apache-ant-1.6.5-bin.tar.bz2;
-    md5 = "26031ee1a2fd248ad0cc2e7f17c44c39";
-  };
-}
diff --git a/pkgs/development/tools/build-managers/apache-ant/core-builder.sh b/pkgs/development/tools/build-managers/apache-ant/core-builder.sh
deleted file mode 100644
index fad5e047f94..00000000000
--- a/pkgs/development/tools/build-managers/apache-ant/core-builder.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-source $stdenv/setup || exit 1
-
-# unpack the binary distribution
-tar jxf $src || exit 1
-mkdir -p $out
-mv apache-ant-*/* $out || exit 1
-
-# remove crap in the root directory
-
-for file in $out/*
-do
-  if test -f $file ; then
-    rm $file
-  fi
-done
-rm -rf $out/docs
-
-# prevent the use of hacky scripts. This will be handled in Nix.
-rm $out/bin/* || exit 1
-
-# add core-ant script. This script is to be invoked with all
-# appropiate variables and will try to be clever or user-friendlt=y.
-
-cat >> $out/bin/core-ant <<EOF
-#! /bin/sh
-
-
-# Variables:
-#   JAVA_HOME
-#   JAVACMD
-#   ANT_OPTS, NIX_ANT_OPTS
-#   ANT_ARGS
-
-ANT_HOME=$out
- 
-if [ -z "\$LOCALCLASSPATH" ] ; then
-    LOCALCLASSPATH=\$ANT_HOME/lib/ant-launcher.jar
-else
-    LOCALCLASSPATH=\$ANT_HOME/lib/ant-launcher.jar:\$LOCALCLASSPATH
-fi
-
-if [ -n "\$JIKESPATH" ]; then
-  exec "\$JAVACMD" \$NIX_ANT_OPTS \$ANT_OPTS -classpath "\$LOCALCLASSPATH" -Dant.home="\${ANT_HOME}" -Djikes.class.path="\$JIKESPATH" org.apache.tools.ant.launch.Launcher \$ANT_ARGS -lib "$CLASSPATH" "\$@"
-else
-  exec "\$JAVACMD" \$NIX_ANT_OPTS \$ANT_OPTS -classpath "\$LOCALCLASSPATH" -Dant.home="\${ANT_HOME}" org.apache.tools.ant.launch.Launcher \$ANT_ARGS -lib "$CLASSPATH" "\$@"
-  fi
-fi
-EOF
-
-chmod a+x $out/bin/core-ant
-
diff --git a/pkgs/development/tools/casperjs/default.nix b/pkgs/development/tools/casperjs/default.nix
new file mode 100644
index 00000000000..f140f0d7862
--- /dev/null
+++ b/pkgs/development/tools/casperjs/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchgit, python, phantomjs }:
+
+stdenv.mkDerivation rec {
+  name = "casperjs-1.0.0-RC5";
+
+  src = fetchgit {
+    url = "git://github.com/n1k0/casperjs.git";
+    rev = "refs/tags/1.0.0-RC5";
+    sha256 = "e7fd6b94b4b304416159196208dea7f6e8841a667df102eb378a698a92f0f2c7";
+  };
+
+  patchPhase = ''
+    substituteInPlace bin/casperjs --replace "/usr/bin/env python" "${python}/bin/python" \
+                                   --replace "'phantomjs'" "'${phantomjs}/bin/phantomjs'"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/casperjs $out/bin
+    cp -a . $out/share/casperjs/.
+    ln -s $out/share/casperjs/bin/casperjs $out/bin
+  '';
+
+  meta = {
+    description = "Navigation scripting & testing utility for PhantomJS.";
+    longDescription = ''
+      CasperJS is a navigation scripting & testing utility for PhantomJS.
+      It eases the process of defining a full navigation scenario and provides useful high-level
+      functions, methods & syntaxic sugar for doing common tasks such as:
+      - defining & ordering navigation steps
+      - filling forms
+      - clicking links
+      - capturing screenshots of a page (or an area)
+      - making assertions on remote DOM
+      - logging & events
+      - downloading base64 encoded resources, even binary ones
+      - catching errors and react accordingly
+      - writing functional test suites, exporting results as JUnit XML (xUnit)
+    '';
+
+    homepage = http://casperjs.org;
+    license = stdenv.lib.licenses.mit;
+
+    maintainers = [ stdenv.lib.maintainers.bluescreen303 ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/documentation/xdoc/builder.sh b/pkgs/development/tools/documentation/xdoc/builder.sh
deleted file mode 100644
index 4bc414ff7bf..00000000000
--- a/pkgs/development/tools/documentation/xdoc/builder.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-source $stdenv/setup
-
-configureFlags="--with-aterm=$aterm --with-sglr=$sglr --with-pgen=$pgen
- --with-pt-support=$ptsupport --with-asf-library=$asflibrary --with-strategoxt=$strategoxt --with-graphviz=$graphviz --with-svn=$subversion"
-genericBuild
diff --git a/pkgs/development/tools/documentation/xdoc/default.nix b/pkgs/development/tools/documentation/xdoc/default.nix
deleted file mode 100644
index cc56d7e133e..00000000000
--- a/pkgs/development/tools/documentation/xdoc/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, strategoxt, aterm, sdf, subversion, graphviz}: 
-
-stdenv.mkDerivation {
-  name = "xdoc-0.1";
-  src = fetchurl {
-    url = http://machina.nl/xdoc/xdoc-0.1.tar.gz;
-    md5 = "6f601254013d5fe3d2fdbd33b827001a";
-  };
-  builder = ./builder.sh;
-  inherit aterm strategoxt subversion graphviz ;
-  inherit (sdf) sglr pgen ptsupport asflibrary;
-  buildInputs = [aterm sdf.pgen strategoxt];
-}
diff --git a/pkgs/development/tools/haskell/hlint/default.nix b/pkgs/development/tools/haskell/hlint/default.nix
index 739e48ba247..bb6d64e54f0 100644
--- a/pkgs/development/tools/haskell/hlint/default.nix
+++ b/pkgs/development/tools/haskell/hlint/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hlint";
-  version = "1.8.35";
-  sha256 = "1w6scnbpy6vl46r0srpkxr0qjr0lpld046d9gb4s9c7if3ajibjv";
+  version = "1.8.39";
+  sha256 = "009qf441nri8pxzz22xvpz44dhspr9bkh5diaz29abimj10fm375";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/development/tools/haskell/uuagc/cabal.nix b/pkgs/development/tools/haskell/uuagc/cabal.nix
index 3c2f0351672..ea981ad423b 100644
--- a/pkgs/development/tools/haskell/uuagc/cabal.nix
+++ b/pkgs/development/tools/haskell/uuagc/cabal.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "uuagc-cabal";
-  version = "1.0.3.0";
-  sha256 = "0kr0k8pgz52n4g7x998djwncfr9byyxg5slqq80qijh06v01bm79";
+  version = "1.0.4.0";
+  sha256 = "0m6q8lfbrzcdxd923s175x0z1rnniv7gk08ninzpq16fisscr4lf";
   buildDepends = [ Cabal filepath mtl uulib ];
   meta = {
     homepage = "http://www.cs.uu.nl/wiki/HUT/WebHome";
diff --git a/pkgs/development/tools/haskell/uuagc/default.nix b/pkgs/development/tools/haskell/uuagc/default.nix
index 6289abd7120..4e3214ee1df 100644
--- a/pkgs/development/tools/haskell/uuagc/default.nix
+++ b/pkgs/development/tools/haskell/uuagc/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "uuagc";
-  version = "0.9.42.1";
-  sha256 = "1xyzvv9rqzqdc7kd2rncafnglfg699sn3f4987kbsxzhilvmhw78";
+  version = "0.9.42.2";
+  sha256 = "1l7w3gimcx079giw5ri4qfr1xfi1wfj93v29r8hvs8q8a6ffjifn";
   isLibrary = true;
   isExecutable = true;
   buildDepends = [ filepath haskellSrcExts mtl uuagcCabal uulib ];
diff --git a/pkgs/development/tools/misc/automake/default.nix b/pkgs/development/tools/misc/automake/default.nix
deleted file mode 100644
index c37a829e3bc..00000000000
--- a/pkgs/development/tools/misc/automake/default.nix
+++ /dev/null
@@ -1 +0,0 @@
-import ./automake-1.10.x.nix
diff --git a/pkgs/development/tools/misc/cflow/default.nix b/pkgs/development/tools/misc/cflow/default.nix
index 041191640bd..d9be5802fa9 100644
--- a/pkgs/development/tools/misc/cflow/default.nix
+++ b/pkgs/development/tools/misc/cflow/default.nix
@@ -15,11 +15,10 @@ stdenv.mkDerivation rec {
   '';
 
   buildInputs = [ gettext ] ++
-
     # We don't have Emacs/GTK/etc. on {Dar,Cyg}win.
     stdenv.lib.optional
       (! (stdenv.lib.lists.any (x: stdenv.system == x)
-              [ "i686-darwin" "i686-cygwin" ]))
+              [ "i686-cygwin" ]))
       emacs;
 
   doCheck = true;
diff --git a/pkgs/development/tools/misc/cpphs/default.nix b/pkgs/development/tools/misc/cpphs/default.nix
index 4fbce76474c..c7700ad3a23 100644
--- a/pkgs/development/tools/misc/cpphs/default.nix
+++ b/pkgs/development/tools/misc/cpphs/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cpphs";
-  version = "1.14";
-  sha256 = "1lscgylcbbny60lx36xwm8y22jmbv23159pfn8n87kbskq6cpk0z";
+  version = "1.15";
+  sha256 = "1p2lf9zqiyydpq1vrqf8sw7mij5kw4pyggm41qgxn0a6lp6ni346";
   isLibrary = true;
   isExecutable = true;
   meta = {
diff --git a/pkgs/development/tools/misc/distcc/default.nix b/pkgs/development/tools/misc/distcc/default.nix
index a46c7a695f2..8af8e0ca800 100644
--- a/pkgs/development/tools/misc/distcc/default.nix
+++ b/pkgs/development/tools/misc/distcc/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation {
                           --with${if gtk != null then "" else "out"}-gtk
                           --without-gnome
                           --enable-rfc2553
+                          --disable-Werror   # a must on gcc 4.6
                          )
     installFlags="sysconfdir=$out/etc";
   '';
diff --git a/pkgs/development/tools/misc/intltool/default.upstream b/pkgs/development/tools/misc/intltool/default.upstream
index dc40b90e6cc..4a2965b036a 100644
--- a/pkgs/development/tools/misc/intltool/default.upstream
+++ b/pkgs/development/tools/misc/intltool/default.upstream
@@ -1 +1,2 @@
+attribute_name intltool_standalone
 url https://launchpad.net/intltool/+download
diff --git a/pkgs/development/tools/neoload/default.nix b/pkgs/development/tools/neoload/default.nix
index 1c026550387..d7a203ad3f4 100644
--- a/pkgs/development/tools/neoload/default.nix
+++ b/pkgs/development/tools/neoload/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, writeTextFile, oraclejre, makeWrapper, licenseAccepted ? false }:
+{ stdenv, fetchurl, writeTextFile, jre, makeWrapper, licenseAccepted ? false }:
 
 # If you happen to use this software on the XMonad window manager, you will have issues with
 # grey windows, no resizing, menus not showing and other glitches.
@@ -12,10 +12,10 @@ if !licenseAccepted then throw ''
   ''
 else assert licenseAccepted;
 
-# the installer is very picky and demands 1.6.0.29
+# the installer is very picky and demands 1.7.0.07
 let dotInstall4j = writeTextFile { name = "dot-install4j"; text = ''
-      JRE_VERSION	${oraclejre}	1	6	0	29
-      JRE_INFO	${oraclejre}	0
+      JRE_VERSION	${jre}	1	7	0	7
+      JRE_INFO	${jre}	94
     ''; };
 
     responseVarfile = writeTextFile { name = "response.varfile"; text = ''
@@ -31,15 +31,15 @@ let dotInstall4j = writeTextFile { name = "dot-install4j"; text = ''
     ''; };
 
 in stdenv.mkDerivation rec {
-  name = "neoload-4.0.4";
+  name = "neoload-4.1.1";
 
   src = fetchurl (
     if stdenv.system == "x86_64-linux" then
-      { url = http://www.neotys.com/documents/download/neoload/v4.0/neoload_4_0_4_linux_x64.sh;
-        sha256 = "1w5pqik1998irpamx6y4rf2v5v34nm8xm6cwa1a8j0agawv992w2"; }
+      { url = http://www.neotys.com/documents/download/neoload/v4.1/neoload_4_1_1_linux_x64.sh;
+        sha256 = "1gik80pvrj95jcpvqk16alvldf2zc604zn3xz3nszgmpv9dgmjk6"; }
     else
-      { url = http://www.neotys.com/documents/download/neoload/v4.0/neoload_4_0_4_linux_x86.sh;
-        sha256 = "0k49kcwnimax9q7d2kychcbhh4zlixlx4ak9jgrm901zpkhw2f3b"; } );
+      { url = http://www.neotys.com/documents/download/neoload/v4.1/neoload_4_1_1_linux_x86.sh;
+        sha256 = "1m42xqy2gsk4khcaps287b4bsamn14grcy8wdz07hk8wvcfncd3d"; } );
 
   buildInputs = [ makeWrapper ];
   phases = [ "installPhase" ];
@@ -47,6 +47,9 @@ in stdenv.mkDerivation rec {
   # TODO: load generator / monitoring agent only builds
 
   installPhase = ''
+    mkdir -p $out/lib/neoload
+    ln -s ${jre} $out/lib/neoload/jre
+
     # the installer wants to use its internal JRE
     # disable this. The extra spaces are needed because the installer carries
     # a binary payload, so should not change in size
@@ -59,8 +62,8 @@ in stdenv.mkDerivation rec {
     sed -e "s|INSTALLDIR|$out|" ${responseVarfile} > response.varfile
 
     export HOME=`pwd`
-    export INSTALL4J_JAVA_HOME=${oraclejre}
-    ./installer -q -varfile response.varfile
+    export INSTALL4J_JAVA_HOME=${jre}
+    bash -ic './installer -q -varfile response.varfile'
 
     for i in $out/bin/*; do
       wrapProgram $i --run 'cp ${dotInstall4j} ~/.install4j' \
@@ -74,7 +77,6 @@ in stdenv.mkDerivation rec {
     done
     rm $out/lib/neoload/*.desktop $out/lib/neoload/uninstall
 
-    ln -s ${oraclejre}/bin $out/lib/neoload/jre
   '';
 
   meta = {
diff --git a/pkgs/development/tools/parsing/re2c/default.nix b/pkgs/development/tools/parsing/re2c/default.nix
new file mode 100644
index 00000000000..b7ed4fb8934
--- /dev/null
+++ b/pkgs/development/tools/parsing/re2c/default.nix
@@ -0,0 +1,13 @@
+{stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "re2c-0.13.5";
+  src = fetchurl {
+    url = mirror://sourceforge/re2c/re2c/0.13.5/re2c-0.13.5.tar.gz;
+    sha256 = "1336c54b3cacjxg3grxdraq6a00yidr04z90605fhxglk89rbagk";
+  };
+
+  meta = {
+    description = "Re2c is a tool for writing very fast and very flexible scanners.";
+  };
+}
diff --git a/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.5.1.nix b/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.5.1.nix
deleted file mode 100644
index 4b93aa24baf..00000000000
--- a/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.5.1.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{stdenv, fetchurl, aterm}:
-
-stdenv.mkDerivation {
-  name = "toolbuslib-0.5.1";
-  src = fetchurl {
-    url = http://www.cwi.nl/projects/MetaEnv/toolbuslib/toolbuslib-0.5.1.tar.gz;
-    md5 = "1c7c7cce870f813bef60bbffdf061c90";
-  };
-  buildInputs = [aterm];
-}
-
diff --git a/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.6.nix b/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.6.nix
deleted file mode 100644
index c49ac9f0663..00000000000
--- a/pkgs/development/tools/parsing/toolbuslib/toolbuslib-0.6.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{stdenv, fetchurl, aterm}:
-
-stdenv.mkDerivation {
-  name = "toolbuslib-0.6";
-  src = fetchurl {
-    url = http://www.cwi.nl/projects/MetaEnv/toolbuslib/toolbuslib-0.6.tar.gz;
-    md5 = "e117c574b428408ad172b1ad904ff430";
-  };
-  buildInputs = [aterm];
-}
-
diff --git a/pkgs/development/tools/phantomjs/default.nix b/pkgs/development/tools/phantomjs/default.nix
new file mode 100644
index 00000000000..33b99e12de5
--- /dev/null
+++ b/pkgs/development/tools/phantomjs/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchurl, upx, freetype, fontconfig }:
+
+assert stdenv.lib.elem stdenv.system [ "i686-linux" "x86_64-linux" ];
+
+stdenv.mkDerivation rec {
+  name = "phantomjs-1.7.0";
+
+  # I chose to use the binary build for now.
+  # The source version is quite nasty to compile
+  # because it has bundled a lot of external libraries (like QT and Webkit)
+  # and no easy/nice way to use the system versions of these
+
+  src = if stdenv.system == "i686-linux" then
+          fetchurl {
+            url = "http://phantomjs.googlecode.com/files/${name}-linux-i686.tar.bz2";
+            sha256 = "045d80lymjxnsssa0sgp5pgkahm651jk69ibk3mjczk3ykc1k91f";
+          }
+        else # x86_64-linux
+          fetchurl {
+            url = "http://phantomjs.googlecode.com/files/${name}-linux-x86_64.tar.bz2";
+            sha256 = "1m14czhi3b388didn0a881glsx8bnsg9gnxgj5lghr4l5mgqyrd7";
+          };
+
+  buildNativeInputs = stdenv.lib.optional (stdenv.system == "x86_64-linux") upx;
+
+  buildPhase = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") ''
+    upx -d bin/phantomjs
+  '' + ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+      --set-rpath ${freetype}/lib:${fontconfig}/lib:${stdenv.gcc.gcc}/lib64:${stdenv.gcc.gcc}/lib \
+      bin/phantomjs
+  '';
+
+  dontStrip = true;
+
+  installPhase = ''
+    mkdir -p $out/share/doc/phantomjs
+    cp -a bin $out
+    cp -a ChangeLog examples LICENSE.BSD README.md third-party.txt $out/share/doc/phantomjs
+  '';
+
+  meta = {
+    description = "Headless WebKit with JavaScript API";
+    longDescription = ''
+      PhantomJS is a headless WebKit with JavaScript API.
+      It has fast and native support for various web standards:
+      DOM handling, CSS selector, JSON, Canvas, and SVG.
+
+      PhantomJS is an optimal solution for:
+      - Headless Website Testing
+      - Screen Capture
+      - Page Automation
+      - Network Monitoring
+    '';
+
+    homepage = http://phantomjs.org/;
+    license = stdenv.lib.licenses.bsd3;
+
+    maintainers = [ stdenv.lib.maintainers.bluescreen303 ];
+    platforms = ["i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix
index 6a654b3b78d..48d1c306993 100644
--- a/pkgs/development/web/nodejs/default.nix
+++ b/pkgs/development/web/nodejs/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, openssl, python, zlib, v8, utillinux }:
 
 stdenv.mkDerivation rec {
-  version = "0.8.12";
+  version = "0.8.15";
   name = "nodejs-${version}";
 
   src = fetchurl {
     url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
-    sha256 = "0igsz9g3hmxcnn685v4k8p6d2vv6cmh9sdz5pl8rlhglp0m7yjnn";
+    sha256 = "1ccjaw0lqspnrmzcb9jbnh1mf74ny7874m2q4vz83q7kdnf66n0p";
   };
 
   configureFlags = [
diff --git a/pkgs/games/LambdaHack/default.nix b/pkgs/games/LambdaHack/default.nix
index 5bba72d714b..48c4809e5cd 100644
--- a/pkgs/games/LambdaHack/default.nix
+++ b/pkgs/games/LambdaHack/default.nix
@@ -1,12 +1,16 @@
-{ cabal, binary, ConfigFile, filepath, gtk, mtl, random, zlib }:
+{ cabal, binary, ConfigFile, filepath, gtk, miniutter, mtl, random
+, text, zlib
+}:
 
 cabal.mkDerivation (self: {
   pname = "LambdaHack";
-  version = "0.2.6";
-  sha256 = "03adjwzbql1k1ky05vivry7waa8p41ha3lsnv9j9mdgpwqldypwd";
+  version = "0.2.6.5";
+  sha256 = "114s3adqs5mh566dbn0bb20v088wgg8arsm6m8hs9vx8j3jc8nx5";
   isLibrary = true;
   isExecutable = true;
-  buildDepends = [ binary ConfigFile filepath gtk mtl random zlib ];
+  buildDepends = [
+    binary ConfigFile filepath gtk miniutter mtl random text zlib
+  ];
   meta = {
     homepage = "http://github.com/kosmikus/LambdaHack";
     description = "A roguelike game engine in early and active development";
diff --git a/pkgs/games/exult/snapshot.nix b/pkgs/games/exult/snapshot.nix
deleted file mode 100644
index 95643af6a62..00000000000
--- a/pkgs/games/exult/snapshot.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, fetchurl, SDL, SDL_mixer, zlib, libpng, unzip
-, autoconf, automake, libtool, bison, flex
-}:
-
-stdenv.mkDerivation {
-  name = "exult-1.4-pre-svn-20080712-0500";
-  
-  builder = ./builder.sh;
-  
-  src = fetchurl {
-    url = http://www.math.leidenuniv.nl/~wpalenst/cvs/exult-20080712-0500.tar.gz;
-    sha256 = "186z8qb713yr1wfasfbpgz2wfqwmbh2d6lmgz1v8lhmwmfpkzgc4";
-  };
-
-  buildInputs = [
-    SDL SDL_mixer zlib libpng unzip
-    # The following are only needed because we're building from SVN.
-    autoconf automake libtool bison flex
-  ];
-  
-  NIX_CFLAGS_COMPILE = "-I${SDL_mixer}/include/SDL";
-
-  preConfigure = ''
-    ./autogen.sh
-  '';
-  
-  # Digital recordings of the music on an original Roland MT-32.  So
-  # we don't need actual MIDI playback capability.
-  musicFiles = [
-    (fetchurl {
-      url = mirror://sourceforge/exult/U7MusicOGG_1of2.zip;
-      md5 = "7746d1a9164fd67509107797496553bf";
-    })
-    (fetchurl {
-      url = mirror://sourceforge/exult/U7MusicOGG_2of2.zip;
-      md5 = "cdae5956d7c52f35e90317913a660123";
-    })
-  ];
-
-  meta = {
-    homepage = http://exult.sourceforge.net/;
-    description = "A reimplementation of the Ultima VII game engine (pre-release)";
-  };
-}
diff --git a/pkgs/games/gnuchess/default.nix b/pkgs/games/gnuchess/default.nix
index 24556d83148..8a706896ba5 100644
--- a/pkgs/games/gnuchess/default.nix
+++ b/pkgs/games/gnuchess/default.nix
@@ -1,36 +1,29 @@
-{builderDefsPackage, flex} @ x:
-builderDefsPackage 
-(a :  
-let 
-  fetchurl = a.fetchurl;
-
-  version = a.lib.attrByPath ["version"] "5.07" a; 
-  buildInputs = with a; [
+{stdenv, fetchurl, flex}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="gnuchess";
+    version="6.0.2";
+    name="${baseName}-${version}";
+    hash="1xd3g28glz2xyjnca0zfw3k0jl5vhgd7wvy4n9km5wnn9z7287l2";
+    url="http://ftp.gnu.org/gnu/chess/gnuchess-6.0.2.tar.gz";
+    sha256="1xd3g28glz2xyjnca0zfw3k0jl5vhgd7wvy4n9km5wnn9z7287l2";
+  };
+  buildInputs = [
     flex
   ];
 in
-rec {
+stdenv.mkDerivation rec {
+  inherit (s) name version;
   src = fetchurl {
-    url = "mirror://gnu/chess/gnuchess-${version}.tar.gz";
-    sha256 = "0zh15m35fzbsrk1aann9pwlkv54dwb00snx99pk3xbg5bwkf125k";
+    inherit (s) url sha256;
   };
-
   inherit buildInputs;
-  configureFlags = [];
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "preBuild" "doMakeInstall"];
-
-  preBuild = a.fullDepEntry (''
-    sed -i src/input.c -e 's/static pthread_t/pthread_t/'
-    sed -i "s@gnuchess@$out/bin/gnuchess@" -i src/gnuchessx
-
-
-    sed -e s/getline/gnuchess_local_getline/g -i $(grep getline -rl .)
-  '') ["minInit" "doUnpack"];
-      
-  name = "gnuchess-" + version;
   meta = {
-    description = "GNU Chess playing program";
+    inherit (s) version;
+    description = "GNU Chess engine";
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl3Plus;
   };
-}) x
+}
diff --git a/pkgs/games/gnuchess/default.upstream b/pkgs/games/gnuchess/default.upstream
new file mode 100644
index 00000000000..e1d1d5f2eeb
--- /dev/null
+++ b/pkgs/games/gnuchess/default.upstream
@@ -0,0 +1 @@
+url http://ftp.gnu.org/gnu/chess/
diff --git a/pkgs/games/lincity/ng.nix b/pkgs/games/lincity/ng.nix
new file mode 100644
index 00000000000..4e886466777
--- /dev/null
+++ b/pkgs/games/lincity/ng.nix
@@ -0,0 +1,35 @@
+{stdenv, fetchurl
+, zlib, jam, pkgconfig, gettext, libxml2, libxslt, xproto, libX11, mesa, SDL
+, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx, physfs
+}:
+let s = # Generated upstream information
+  rec {
+    baseName="lincity";
+    version="2.0";
+    name="lincity-2.0";
+    hash="01k6n304qj0z5zmqr49gqirp0jmx2b0cpisgkxk1ga67vyjhdcm6";
+    url="http://download.berlios.de/lincity-ng/lincity-ng-2.0.tar.bz2";
+    sha256="01k6n304qj0z5zmqr49gqirp0jmx2b0cpisgkxk1ga67vyjhdcm6";
+  };
+  buildInputs = [zlib jam pkgconfig gettext libxml2 libxslt xproto libX11 mesa 
+    SDL SDL_mixer SDL_image SDL_ttf SDL_gfx physfs];
+in 
+stdenv.mkDerivation rec {
+  inherit (s) name version;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+
+  inherit buildInputs;
+
+  buildPhase = "jam";
+  installPhase="jam install";
+
+  meta = {
+    documentation = ''City building game'';
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    inherit (s) version;
+  };
+}
diff --git a/pkgs/games/lincity/ng.upstream b/pkgs/games/lincity/ng.upstream
new file mode 100644
index 00000000000..d73d1a2c419
--- /dev/null
+++ b/pkgs/games/lincity/ng.upstream
@@ -0,0 +1,5 @@
+target ng.nix
+attribute_name lincity_ng
+url https://fedorahosted.org/LinCity-NG/wiki/Downloads
+version_link tar.bz2
+version_link tar.bz2
diff --git a/pkgs/games/pingus/default.nix b/pkgs/games/pingus/default.nix
new file mode 100644
index 00000000000..43cdc2031bf
--- /dev/null
+++ b/pkgs/games/pingus/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, scons, SDL, SDL_image, boost, libpng, SDL_mixer, pkgconfig
+, mesa}:
+let
+  buildInputs = [scons SDL SDL_image boost libpng SDL_mixer pkgconfig mesa];
+  s = # Generated upstream information
+  rec {
+    baseName="pingus";
+    version="0.7.6";
+    name="pingus-0.7.6";
+    hash="0q34d2k6anzqvb0mf67x85q92lfx9jr71ry13dlp47jx0x9i573m";
+    url="http://pingus.googlecode.com/files/pingus-0.7.6.tar.bz2";
+    sha256="0q34d2k6anzqvb0mf67x85q92lfx9jr71ry13dlp47jx0x9i573m";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  makeFlags = '' PREFIX="$(out)" '';
+  meta = {
+    inherit (s) version;
+    description = ''A puzzle game with mechanics similar to Lemmings'';
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/pkgs/games/pingus/default.upstream b/pkgs/games/pingus/default.upstream
new file mode 100644
index 00000000000..6b4eb31aa5f
--- /dev/null
+++ b/pkgs/games/pingus/default.upstream
@@ -0,0 +1 @@
+url http://pingus.seul.org/download.html
diff --git a/pkgs/games/scid/default.nix b/pkgs/games/scid/default.nix
new file mode 100644
index 00000000000..91ceb74b0c5
--- /dev/null
+++ b/pkgs/games/scid/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, tcl, tk, libX11, zlib, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "scid-${version}";
+  version = "4.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/scid/scid-4.3.tar.bz2";
+    sha256 = "0zb5qp04x8w4gn2kvfdfq2p44kmzfcqn7v167dixz6nlyxg41hrw";
+  };
+
+  buildInputs = [ tcl tk libX11 zlib makeWrapper ];
+
+  prePatch = ''
+    sed -i -e '/^ *set headerPath *{/a ${tcl}/include ${tk}/include' \
+           -e '/^ *set libraryPath *{/a ${tcl}/lib ${tk}/lib' \
+           -e '/^ *set x11Path *{/a ${libX11}/lib/' \
+           configure
+
+    sed -i -e '/^ *set scidShareDir/s|\[file.*|"'"$out/share"'"|' \
+      tcl/config.tcl
+  '';
+
+  configureFlags = [
+    "BINDIR=$(out)/bin"
+    "SHAREDIR=$(out)/share"
+  ];
+
+  dontPatchShebangs = true;
+
+  postFixup = ''
+    for cmd in sc_addmove sc_eco sc_epgn scidpgn \
+               sc_import sc_spell sc_tree spliteco
+    do
+      sed -i -e '1c#!'"$out"'/bin/tcscid' "$out/bin/$cmd"
+    done
+
+    sed -i -e '1c#!${tcl}/bin/tcslsh' "$out/bin/spf2spi"
+    sed -i -e '1c#!${tk}/bin/wish' "$out/bin/sc_remote"
+    sed -i -e '1c#!'"$out"'/bin/tkscid' "$out/bin/scid"
+
+    for cmd in $out/bin/*
+    do
+      wrapProgram "$cmd" \
+        --set TCLLIBPATH "${tcl}/${tcl.libdir}" \
+        --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
+    done
+  '';
+
+  meta = {
+    description = "Chess database with play and training functionality";
+    homepage = "http://scid.sourceforge.net/";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/games/warsow/default.nix b/pkgs/games/warsow/default.nix
index 66c33842b89..fc9beb23987 100644
--- a/pkgs/games/warsow/default.nix
+++ b/pkgs/games/warsow/default.nix
@@ -3,17 +3,15 @@
 }:
 stdenv.mkDerivation rec {
   name = "warsow-${version}";
-  version = "1.0";
-  mversion = "1.0";  # sometimes only engine is updated
+  version = "1.02";
+  mversion = "1.02";  # sometimes only engine is updated
   src1 = fetchurl {
-    url = "http://www.warsow.net/download?dl=sdk";
-    name = "warsow_${version}_sdk.tar.gz";
-    sha256 = "08hfhx3ggb8v8lsb62ki5rhdhscg8j9sndlnllinf85da1f4nf9f";
+    url = "http://www.warsow.net:1337/~warsow/1.02/warsow_1.02_sdk.tar.gz";
+    sha256 = "0b5vra4qihkkcw4jn54r8l2lyl2mp67b4y1m76nyz7f34vng1hdy";
   };
   src2 = fetchurl {
-    url = "http://www.warsow.net/download?dl=linux";
-    name = "warsow_${mversion}_unified.tar.gz";
-    sha256 = "1v455v4lpqda7lf2yviasdrlibvb6bsyxcadgl8bd4jcvr8x4czr";
+    url = "http://www.warsow.net:1337/~warsow/1.02/warsow_1.02.tar.gz";
+    sha256 = "0ai5v1h5g9nq21ixz23v0qsj9dr7dbiz7l8r34mq4c3z6ili8zpy";
   };
   unpackPhase = ''
     tar xf "$src1"
diff --git a/pkgs/games/worldofgoo/default.nix b/pkgs/games/worldofgoo/default.nix
new file mode 100644
index 00000000000..216ec0d8041
--- /dev/null
+++ b/pkgs/games/worldofgoo/default.nix
@@ -0,0 +1,83 @@
+{ stdenv, config, requireFile, fetchurl
+, libX11, libXext, libXau, libxcb, libXdmcp , SDL, SDL_mixer, libvorbis, mesa
+, demo ? false }:
+
+# TODO: add i686 support
+
+stdenv.mkDerivation rec {
+  name = if demo 
+    then "WorldOfGooDemo-1.41"
+    else "WorldofGoo-1.41";
+
+  arch = if stdenv.system == "x86_64-linux" then "supported"
+    else throw "Sorry. World of Goo only is only supported on x86_64 now.";
+
+  goBuyItNow = '' 
+    We cannot download the full version automatically, as you require a license.
+    Once you bought a license, you need to add your downloaded version to the nix store.
+    You can do this by using "nix-prefetch-url file://WorldOfGooSetup.1.41.tar.gz" in the
+    directory where you saved it.
+
+    Or you can install the demo version: 'nix-env -i -A pkgs.worldofgoo_demo'. 
+  ''; 
+
+  getTheDemo = ''
+    We cannot download the demo version automatically, please go to
+    http://worldofgoo.com/dl2.php?lk=demo, then add it to your nix store.
+    You can do this by using "nix-prefetch-url file://WorldOfGooDemo.1.41.tar.gz" in the
+    directory where you saved it.
+  '';
+
+  src = if demo 
+    then 
+      requireFile {
+         message = getTheDemo;
+         name = "WorldOfGooDemo.1.41.tar.gz";
+         sha256 = "0ndcix1ckvcj47sgndncr3hxjcg402cbd8r16rhq4cc43ibbaxri";
+       }
+    else
+      requireFile {
+        message = goBuyItNow;
+        name = "WorldOfGooSetup.1.41.tar.gz";
+        sha256 = "0rj5asx4a2x41ncwdby26762my1lk1gaqar2rl8dijfnpq8qlnk7";
+      };
+
+  phases = "unpackPhase installPhase";
+
+  # XXX: stdenv.lib.makeLibraryPath doesn't pick up /lib64
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.gcc.gcc stdenv.gcc.libc ] 
+    + ":" + stdenv.lib.makeLibraryPath [libX11 libXext libXau libxcb libXdmcp SDL SDL_mixer libvorbis mesa ]
+    + ":" + stdenv.gcc.gcc + "/lib64";
+
+  installPhase = ''
+    ensureDir $out/libexec/2dboy/WorldOfGoo/
+    ensureDir $out/bin
+
+    patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath $libPath ./WorldOfGoo.bin64
+
+    cp -r * $out/libexec/2dboy/WorldOfGoo/
+
+    #makeWrapper doesn't do cd. :(
+
+    cat > $out/bin/WorldofGoo << EOF
+    #!/bin/sh
+    cd $out/libexec/2dboy/WorldOfGoo
+    exec ./WorldOfGoo.bin64
+    EOF
+    chmod +x $out/bin/WorldofGoo
+  '';
+
+  meta = {
+    description = "A physics based puzzle game";
+    longDescription = ''
+      World of Goo is a physics based puzzle / construction game. The millions of Goo
+      Balls who live in the beautiful World of Goo don't know that they are in a
+      game, or that they are extremely delicious.
+    '';
+    homepage = http://worldofgoo.com;
+    license = [ "unfree" ];
+    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+    platforms = [ "x86_64-linux"] ;
+  };
+
+}
diff --git a/pkgs/games/xboard/default.nix b/pkgs/games/xboard/default.nix
index a1a65165326..ab74d56dbcc 100644
--- a/pkgs/games/xboard/default.nix
+++ b/pkgs/games/xboard/default.nix
@@ -1,33 +1,32 @@
-a:  
-let 
-  fetchurl = a.fetchurl;
-
-  buildInputs = with a; [
+{stdenv, fetchurl, libX11, xproto, libXt, libXaw, libSM, libICE, libXmu
+, libXext, gnuchess, texinfo, libXpm
+}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="xboard";
+    version="4.6.2";
+    name="${baseName}-${version}";
+    hash="1pw90fh1crf0nkqyql54z728vn2093hwdh2v5i5703z9qv9g4mrf";
+    url="http://ftp.gnu.org/gnu/xboard/xboard-4.6.2.tar.gz";
+    sha256="1pw90fh1crf0nkqyql54z728vn2093hwdh2v5i5703z9qv9g4mrf";
+  };
+  buildInputs = [
     libX11 xproto libXt libXaw libSM libICE libXmu 
     libXext gnuchess texinfo libXpm
   ];
-
-  s = import ./src-for-default.nix;
 in
-rec {
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
   src = fetchurl {
-    inherit(s) url;
-    sha256 = s.hash;
+    inherit (s) url sha256;
   };
-
-  inherit buildInputs;
-  configureFlags = [];
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "preBuild" "doMakeInstall"];
-
-  preBuild = a.fullDepEntry(''
-    sed -e '/FIRST_CHESS_PROGRAM/s@gnuchessx@${a.gnuchess}/bin/gnuchessx@' -i xboard.h
-    sed -e '/SECOND_CHESS_PROGRAM/s@gnuchessx@${a.gnuchess}/bin/gnuchessx@' -i xboard.h
-  '') ["doUnpack" "minInit"];
-      
-  inherit(s) name;
   meta = {
-    description = "XBoard - a chess board compatible with GNU Chess";
+    inherit (s) version;
+    description = ''GUI for chess engines'';
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/games/xboard/default.upstream b/pkgs/games/xboard/default.upstream
new file mode 100644
index 00000000000..1e649bba505
--- /dev/null
+++ b/pkgs/games/xboard/default.upstream
@@ -0,0 +1 @@
+url http://ftp.gnu.org/gnu/xboard/
diff --git a/pkgs/games/xboard/src-for-default.nix b/pkgs/games/xboard/src-for-default.nix
deleted file mode 100644
index d648dfe5abb..00000000000
--- a/pkgs/games/xboard/src-for-default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-rec {
-   version="4.4.2";
-   name="xboard-4.4.2";
-   hash="1ihg39nnwp90w410rzwxj9layadavz08gc9m2b1jg5z5c6ky28zp";
-   url="http://ftp.gnu.org/gnu/xboard/xboard-${version}.tar.gz";
-   advertisedUrl="http://ftp.gnu.org/gnu/xboard/xboard-4.4.2.tar.gz";
-  
-  
-}
diff --git a/pkgs/games/xboard/src-info-for-default.nix b/pkgs/games/xboard/src-info-for-default.nix
deleted file mode 100644
index 8d0386671a1..00000000000
--- a/pkgs/games/xboard/src-info-for-default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  downloadPage = "http://ftp.gnu.org/gnu/xboard/?C=T,M;O=D";
-  baseName = "xboard";
-}
diff --git a/pkgs/games/xmoto/default.nix b/pkgs/games/xmoto/default.nix
index 229d58029de..ed37227bb03 100644
--- a/pkgs/games/xmoto/default.nix
+++ b/pkgs/games/xmoto/default.nix
@@ -15,9 +15,7 @@ rec {
   configureFlags = [];
 
   /* doConfigure should be removed if not needed */
-  phaseNames = [ "doPatch" "doConfigure" "doMakeInstall"];
-
-  patches = [ ./r3402.patch ];
+  phaseNames = [ "doConfigure" "doMakeInstall"];
 
   meta = {
     description = "X-Moto - obstacled race game";
diff --git a/pkgs/games/xmoto/r3402.patch b/pkgs/games/xmoto/r3402.patch
deleted file mode 100644
index 787e5625b5f..00000000000
--- a/pkgs/games/xmoto/r3402.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: a/src/image/tim_png.cpp
-===================================================================
---- a/src/image/tim_png.cpp	(revision 3401)
-+++ b/src/image/tim_png.cpp	(revision 3402)
-@@ -25,7 +25,8 @@
- #include <stdio.h>
- #include <string.h>
- #include "tim.h"
--#include "png.h"
-+#include <png.h>
-+#include <zlib.h>
- 
- /*==============================================================================
- Types
-Index: ChangeLog
-===================================================================
---- a/ChangeLog	(revision 3401)
-+++ b/ChangeLog	(revision 3402)
-@@ -1,3 +1,7 @@
-+X-Moto 0.5.10 2012-
-+--------------------------------
-+ * libpng patch by Kelly Anderson
-+
- X-Moto 0.5.9 2011-11-13
- --------------------------------
-  * fix a compilation error with libxml
diff --git a/pkgs/games/xmoto/src-for-default.nix b/pkgs/games/xmoto/src-for-default.nix
index 7d85cdbe528..60de24e16c7 100644
--- a/pkgs/games/xmoto/src-for-default.nix
+++ b/pkgs/games/xmoto/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="0.5.9";
-   name="xmoto-0.5.9";
-   hash="1r1kl3w2scncw754lgsfa7i6hh4mg39zc3bcvd1iqcmdfr25gmvl";
+   version="0.5.10";
+   name="xmoto-0.5.10";
+   hash="07lyvwb8v75hzp4iqvnxzabzrmwkd3ignfzpm4dgr9asd3j3h91d";
    url="http://download.tuxfamily.org/xmoto/xmoto/${version}/xmoto-${version}-src.tar.gz";
-   advertisedUrl="http://download.tuxfamily.org/xmoto/xmoto/0.5.9/xmoto-0.5.9-src.tar.gz";
+   advertisedUrl="http://download.tuxfamily.org/xmoto/xmoto/0.5.10/xmoto-0.5.10-src.tar.gz";
   
   
 }
diff --git a/pkgs/lib/modules.nix b/pkgs/lib/modules.nix
index 25cb956a0ea..286178a0fa7 100644
--- a/pkgs/lib/modules.nix
+++ b/pkgs/lib/modules.nix
@@ -21,22 +21,26 @@ rec {
   || builtins.isList x
   );
 
+
   importIfPath = path:
     if isPath path then
       import path
     else
       path;
 
+
   applyIfFunction = f: arg:
     if builtins.isFunction f then
       f arg
     else
       f;
 
+
   isModule = m:
        (m ? config && isAttrs m.config && ! isOption m.config)
     || (m ? options && isAttrs m.options && ! isOption m.options);
 
+
   # Convert module to a set which has imports / options and config
   # attributes.
   unifyModuleSyntax = m:
@@ -88,8 +92,7 @@ rec {
           # used by generic closure to avoid duplicated imports.
           key =
             if isPath m then m
-            else if m' ? key then m'.key
-            else newModuleName origin index;
+            else m'.key or (newModuleName origin index);
         };
 
       getImports = m: m.imports or [];
@@ -107,15 +110,6 @@ rec {
         operator = m: imap (moduleImport m) (getImports m);
       });
 
-  selectDeclsAndDefs = modules:
-    lib.concatMap (m:
-      if m ? config || m ? options then
-         [ (m.options or {}) ]
-      ++ [ (m.config or {}) ]
-      else
-        [ m ]
-    ) modules;
-
 
   moduleApply = funs: module:
     lib.mapAttrs (name: value:
@@ -126,6 +120,7 @@ rec {
         value
     ) module;
 
+
   # Handle mkMerge function left behind after a delay property.
   moduleFlattenMerge = module:
     if module ? config &&
@@ -137,6 +132,7 @@ rec {
     else
       [ module ];
 
+
   # Handle mkMerge attributes which are left behind by previous delay
   # properties and convert them into a list of modules. Delay properties
   # inside the config attribute of a module and create a second module if a
@@ -146,8 +142,9 @@ rec {
   delayModule = module:
     map (moduleApply { config = delayProperties; }) (moduleFlattenMerge module);
 
+
   evalDefinitions = opt: values:
-    if opt ? type && opt.type.delayOnGlobalEval then
+    if opt.type.delayOnGlobalEval or false then
       map (delayPropertiesWithIter opt.type.iter opt.name)
         (evalLocalProperties values)
     else
@@ -171,17 +168,20 @@ rec {
       map (selectModule name) modules
     );
 
+
   modulesNames = modules:
     lib.concatMap (m: []
     ++ optionals (m ? options) (lib.attrNames m.options)
     ++ optionals (m ? config) (lib.attrNames m.config)
     ) modules;
 
+
   moduleZip = funs: modules:
     lib.mapAttrs (name: fun:
       fun (catAttrs name modules)
     ) funs;
 
+
   moduleMerge = path: modules:
     let modules_ = modules; in
     let
@@ -234,7 +234,6 @@ rec {
               source = m.key;
             }) declarations;
 
-
           hasOptions = values != [];
           isOption = any lib.isOption values;
 
@@ -303,8 +302,7 @@ rec {
               let opt = option.decl; in
               opt.apply (
                 if isNotDefined then
-                  if opt ? default then opt.default
-                  else throw "Not defined."
+                  opt.default or (throw "Not defined.")
                 else opt.merge defs
               )
             );
@@ -342,16 +340,16 @@ rec {
 
   fixMergeModules = initModules: {...}@args:
     lib.fix (result:
-      # This trick avoid an infinite loop because names of attribute are
-      # know and it is not require to evaluate the result of moduleMerge to
-      # know which attribute are present as argument.
+      # This trick avoids an infinite loop because names of attribute
+      # are know and it is not required to evaluate the result of
+      # moduleMerge to know which attributes are present as arguments.
       let module = { inherit (result) options config; }; in
-
       moduleMerge "" (
         moduleClosure initModules (module // args)
       )
     );
 
+
   # Visit all definitions to raise errors related to undeclared options.
   checkModule = path: {config, options, ...}@m:
     let
diff --git a/pkgs/lib/platforms.nix b/pkgs/lib/platforms.nix
index 45e863458d4..9a0fb8e17ff 100644
--- a/pkgs/lib/platforms.nix
+++ b/pkgs/lib/platforms.nix
@@ -2,9 +2,8 @@ let lists = import ./lists.nix; in
 
 rec {
   gnu = linux; /* ++ hurd ++ kfreebsd ++ ... */
-  linux = ["i686-linux" "x86_64-linux" "powerpc-linux" "armv5tel-linux"
-    "armv7l-linux" "mips64el-linux"];
-  darwin = ["i686-darwin" "powerpc-darwin" "x86_64-darwin"];
+  linux = ["i686-linux" "x86_64-linux" "powerpc-linux" "armv5tel-linux" "armv7l-linux" "mips64el-linux"];
+  darwin = ["x86_64-darwin"];
   freebsd = ["i686-freebsd" "x86_64-freebsd" "powerpc-freebsd"];
   openbsd = ["i686-openbsd" "x86_64-openbsd"];
   netbsd = ["i686-netbsd" "x86_64-netbsd"];
@@ -13,5 +12,5 @@ rec {
   all = linux ++ darwin ++ cygwin ++ freebsd ++ openbsd;
   none = [];
   allBut = platform: lists.filter (x: platform != x) all;
-  mesaPlatforms = linux;
+  mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin"];
 }
diff --git a/pkgs/lib/properties.nix b/pkgs/lib/properties.nix
index 0d864b0c553..eeac27ae70c 100644
--- a/pkgs/lib/properties.nix
+++ b/pkgs/lib/properties.nix
@@ -25,7 +25,7 @@ rec {
   # contains a _type attribute and a list of functions which are used to
   # evaluate this property.  The content attribute is used to stack properties
   # on top of each other.
-  # 
+  #
   # The optional functions which may be contained in the property attribute
   # are:
   #  - onDelay: run on a copied property.
@@ -41,7 +41,7 @@ rec {
   # property and call the function `nul' on the final value which is not a
   # property.  The stack is traversed in reversed order.  The `op' function
   # should expect a property with a content which have been modified.
-  # 
+  #
   # Warning: The `op' function expects only one argument in order to avoid
   # calls to mkProperties as the argument is already a valid property which
   # contains the result of the folding inside the content attribute.
@@ -100,12 +100,10 @@ rec {
   triggerPropertiesDelay = name: attrs:
     let
       callOnDelay = p@{property, ...}:
-        lib.addErrorContext "while calling an `onDelay' function:" (
-          if property ? onDelay then
-            property.onDelay name p
-          else
-            p
-        );
+        if property ? onDelay then
+          property.onDelay name p
+        else
+          p;
     in
       foldProperty callOnDelay id attrs;
 
@@ -123,9 +121,7 @@ rec {
       };
 
       callOnGlobalDelay = property: content:
-        lib.addErrorContext "while calling an `onGlobalDelay' function:" (
-          property.onGlobalDelay name content
-        );
+        property.onGlobalDelay name content;
     in
       fold callOnGlobalDelay attrs globalDelayFuns;
 
@@ -136,28 +132,25 @@ rec {
   evalProperties = valList:
     if valList != [] then
       filter (x: !isNotdef x) (
-        lib.addErrorContext "while evaluating properties:" (
-          triggerPropertiesGlobalEval (
-            evalLocalProperties valList
-      )))
+        triggerPropertiesGlobalEval (
+          evalLocalProperties valList
+        )
+      )
     else
       valList;
 
   evalLocalProperties = valList:
     filter (x: !isNotdef x) (
-      lib.addErrorContext "while evaluating local properties:" (
-        map triggerPropertiesEval valList
-    ));
+      map triggerPropertiesEval valList
+    );
 
   # Call onEval function
   triggerPropertiesEval = val:
     foldProperty (p@{property, ...}:
-      lib.addErrorContext "while calling an `onEval' function:" (
-        if property ? onEval then
-          property.onEval p
-        else
-          p
-      )
+      if property ? onEval then
+        property.onEval p
+      else
+        p
     ) id val;
 
   # Call onGlobalEval function
@@ -176,10 +169,7 @@ rec {
           ) [] valList;
       };
 
-      callOnGlobalEval = property: valList:
-        lib.addErrorContext "while calling an `onGlobalEval' function:" (
-          property.onGlobalEval valList
-        );
+      callOnGlobalEval = property: valList: property.onGlobalEval valList;
     in
       fold callOnGlobalEval valList globalEvalFuns;
 
@@ -225,45 +215,11 @@ rec {
     inherit content;
   };
 
-  # Create a "ThenElse" property which contains choices being chosen by
-  # the evaluation of an "If" statement.
-  isThenElse = attrs: (typeOf attrs) == "then-else";
-  mkThenElse = attrs:
-    assert attrs ? thenPart && attrs ? elsePart;
-    __trace "Obsolete usage of mkThenElse, replace it by mkMerge."
-    mkProperty {
-      property = {
-        _type = "then-else";
-        onEval = val: throw "Missing mkIf statement.";
-        inherit (attrs) thenPart elsePart;
-      };
-      content = mkNotdef;
-    };
-
-  # Create an "Always" property removing/ ignoring all "If" statement.
-  isAlways = attrs: (typeOf attrs) == "always";
-  mkAlways = value:
-    mkProperty {
-      property = {
-        _type = "always";
-        onEval = p@{content, ...}: content;
-        inherit value;
-      };
-      content = mkNotdef;
-    };
-
   mkAssert = assertion: message: content:
     mkIf
       (if assertion then true else throw "\nFailed assertion: ${message}")
       content;
 
-  # Remove all "If" statement defined on a value.
-  rmIf = foldProperty (
-      foldFilter isIf
-        ({content, ...}: content)
-        id
-    ) id;
-
   # Evaluate the "If" statements when either "ThenElse" or "Always"
   # statement is encountered.  Otherwise it removes multiple If statements and
   # replaces them by one "If" statement where the condition is the list of all
@@ -274,8 +230,8 @@ rec {
       # in the attribute list and attrs.
       ifProps =
         foldProperty
-          (foldFilter (p: isIf p || isThenElse p || isAlways p)
-            # then, push the codition inside the list list
+          (foldFilter (p: isIf p)
+            # then, push the condition inside the list list
             (p@{property, content, ...}:
               { inherit (content) attrs;
                 list = [property] ++ content.list;
@@ -297,19 +253,7 @@ rec {
           mkIf condition content
         else
           let p = head list; in
-
-          # evaluate the condition.
-          if isThenElse p then
-            if condition then
-              copyProperties content p.thenPart
-            else
-              copyProperties content p.elsePart
-          # ignore the condition.
-          else if isAlways p then
-            copyProperties content p.value
-          # otherwise (isIf)
-          else
-            evalIf content (condition && p.condition) (tail list);
+          evalIf content (condition && p.condition) (tail list);
     in
       evalIf ifProps.attrs true ifProps.list;
 
diff --git a/pkgs/lib/types.nix b/pkgs/lib/types.nix
index 38ae7b43630..6bc2e0f1ecb 100644
--- a/pkgs/lib/types.nix
+++ b/pkgs/lib/types.nix
@@ -176,6 +176,20 @@ rec {
       fold = op: nul: v: if v == null then nul else elemType.fold op nul v;
     };
 
+    functionTo = elemType: mkOptionType {
+      name = "function that evaluates to a(n) ${elemType.name}";
+      check = lib.traceValIfNot builtins.isFunction;
+      merge = fns:
+        args: elemType.merge (map (fn: fn args) fns);
+      # These are guesses, I don't fully understand iter, fold, delayOnGlobalEval
+      iter = f: path: v:
+        args: elemType.iter f path (v args);
+      fold = op: nul: v:
+        args: elemType.fold op nul (v args);
+      inherit (elemType) delayOnGlobalEval;
+      hasOptions = false;
+    };
+
     # !!! this should be a type constructor that takes the options as
     # an argument.
     optionSet = mkOptionType {
diff --git a/pkgs/misc/cups/drivers/samsung/builder.sh b/pkgs/misc/cups/drivers/samsung/builder.sh
new file mode 100644
index 00000000000..58e1c0cd781
--- /dev/null
+++ b/pkgs/misc/cups/drivers/samsung/builder.sh
@@ -0,0 +1,35 @@
+source $stdenv/setup
+
+arch=$(uname -m)
+# replace i[3456]86 with i386
+echo arch | egrep -q '^i[3456]86$' && arch=i386
+arch=i386
+unpackPhase
+patchPhase
+
+set -v
+
+echo $arch
+cd cdroot/Linux
+mkdir -p $out/opt
+cp -r $arch/at_root/* $out
+cp -r $arch/at_opt/* $out/opt
+#cp -r noarch/at_root/* $out
+cp -r noarch/at_opt/* $out/opt
+
+cd $out
+#test -d usr/lib64 && ln -s usr/lib64 lib || 
+ln -s usr/lib lib
+mkdir -p share/cups
+cd share/cups
+ln -s ../../opt/share/* .
+ln -s ppd model
+
+cd $out/lib/cups/filter
+for i in $(ls); do
+    echo patching $i...
+    patchelf --set-interpreter $(cat $NIX_GCC/nix-support/dynamic-linker) $i || echo "(couldn't set interpreter)"
+    patchelf --set-rpath $cups/lib:$gcc/lib:$glibc/lib $i  # This might not be necessary.
+done
+
+ln -s $ghostscript/bin/gs $out/lib/cups/filter
diff --git a/pkgs/misc/cups/drivers/samsung/default.nix b/pkgs/misc/cups/drivers/samsung/default.nix
new file mode 100644
index 00000000000..ab0c0dc25e4
--- /dev/null
+++ b/pkgs/misc/cups/drivers/samsung/default.nix
@@ -0,0 +1,35 @@
+# Tested on linux-x86_64.  Might work on linux-i386.  Probably won't work on anything else.
+
+# To use this driver in NixOS, add it to printing.drivers in configuration.nix.
+# configuration.nix might look like this when you're done:
+# { pkgs, ... }: {
+#   printing = {
+#     enable = true;
+#     drivers = [ pkgs.samsungUnifiedLinuxDriver ];
+#   };
+#   (more stuff)
+# }
+# (This advice was tested on 2010 August 2.)
+
+{stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf}:
+
+stdenv.mkDerivation rec {
+  name = "samsung-UnifiedLinuxDriver-0.92";
+
+  src = fetchurl {
+    url = "http://downloadcenter.samsung.com/content/DR/200911/20091103171827750/UnifiedLinuxDriver_0.92.tar.gz";
+    sha256 = "0p2am0p8xvm339mad07c4j77gz31m63z76sy6d9hgwmxy2prbqfq";
+  };
+
+  buildInputs = [ cups gcc ghostscript glibc patchelf ];
+
+  inherit cups gcc ghostscript glibc;
+
+  builder = ./builder.sh;
+
+  meta = {
+    description = "Samsung's Linux drivers; includes binaries without source code";
+    homepage = "http://www.samsung.com/";
+    license = "samsung";  # Binary-only
+  };
+}
diff --git a/pkgs/misc/drivers/gutenprint/bin.nix b/pkgs/misc/drivers/gutenprint/bin.nix
index d78e1674d87..1def4b7d1c9 100644
--- a/pkgs/misc/drivers/gutenprint/bin.nix
+++ b/pkgs/misc/drivers/gutenprint/bin.nix
@@ -56,6 +56,9 @@ stdenv.mkDerivation {
       patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
           --set-rpath $libPath $p
     done
+    
+    mkdir $out/lib
+    ln -s $out/cups/lib $out/lib/cups
   '';
 
   meta = {
diff --git a/pkgs/misc/emulators/dlx/default.nix b/pkgs/misc/emulators/dlx/default.nix
new file mode 100644
index 00000000000..c23b60c29b3
--- /dev/null
+++ b/pkgs/misc/emulators/dlx/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation {
+  name = "dlx-2012.07.08";
+
+  src = fetchurl {
+    url = "http://www.davidviner.com/zip/dlx/dlx.zip";
+    sha256 = "0q5hildq2xcig7yrqi26n7fqlanyssjirm7swy2a9icfxpppfpkn";
+  };
+
+  buildInputs = [ unzip ];
+
+  makeFlags = "LINK=gcc CFLAGS=-O2";
+
+  installPhase = ''
+    mkdir -p $out/include/dlx $out/share/dlx/{examples,doc} $out/bin
+    mv -v masm mon dasm $out/bin/
+    mv -v *.i auto.a $out/include/dlx/
+    mv -v *.a *.m $out/share/dlx/examples/
+    mv -v README.txt MANUAL.TXT $out/share/dlx/doc/
+  '';
+
+  meta = {
+    homepage = "http://www.davidviner.com/dlx.php";
+    description = "DLX Simulator";
+    license = "GPL-2";
+  };
+}
diff --git a/pkgs/misc/emulators/wine/default.nix b/pkgs/misc/emulators/wine/default.nix
index c24bbaad1a5..401c9da575b 100644
--- a/pkgs/misc/emulators/wine/default.nix
+++ b/pkgs/misc/emulators/wine/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, xlibs, flex, bison, mesa, alsaLib
 , ncurses, libpng, libjpeg, lcms, freetype, fontconfig, fontforge
-, libxml2, libxslt, openssl, gnutls
+, libxml2, libxslt, openssl, gnutls, cups
 }:
 
 assert stdenv.isLinux;
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://sourceforge/wine/${name}.tar.bz2";
-    sha256 = "05ac8qlpbiacn3gmwlafpppyl7r2grsym20gz163szsbmfzlqnxi";
+    sha256 = "0c14paj2j3sswl6mpjjmy9bxnpijk095ks58x9dsycx9c8x0gqvm";
   };
 
   gecko = fetchurl {
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     xlibs.libXcursor xlibs.libXinerama xlibs.libXrandr
     xlibs.libXrender xlibs.libXxf86vm xlibs.libXcomposite
     alsaLib ncurses libpng libjpeg lcms fontforge
-    libxml2 libxslt openssl gnutls
+    libxml2 libxslt openssl gnutls cups
   ];
 
   # Wine locates a lot of libraries dynamically through dlopen().  Add
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     freetype fontconfig stdenv.gcc.gcc mesa mesa.libdrm
     xlibs.libXinerama xlibs.libXrender xlibs.libXrandr
     xlibs.libXcursor xlibs.libXcomposite libpng libjpeg
-    openssl gnutls
+    openssl gnutls cups
   ];
 
   # Don't shrink the ELF RPATHs in order to keep the extra RPATH
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    version = "1.5.17";
+    version = "1.5.20";
     homepage = "http://www.winehq.org/";
     license = "LGPL";
     description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix";
diff --git a/pkgs/misc/emulators/wine/default.upstream b/pkgs/misc/emulators/wine/default.upstream
index a1e9fe05f40..e23f341c28a 100644
--- a/pkgs/misc/emulators/wine/default.upstream
+++ b/pkgs/misc/emulators/wine/default.upstream
@@ -1,13 +1,8 @@
-name wine
 url http://sourceforge.net/projects/wine/files/Source/
-version_link 'wine-[0-9.]+[.]tar[.][0-9a-z]+/download$'
+version_link '[.]tar[.][^./]+/download$'
 SF_redirect
-
-do_regenerate () {
-  set_var_value name "$CURRENT_NAME-"'${meta.version}'
+do_overwrite () {
+  ensure_hash
   set_var_value version "$CURRENT_VERSION"
-  set_var_value url 'mirror://sourceforge/wine/${name}.tar.bz2' 1
   set_var_value sha256 "$CURRENT_HASH"
-  cat "$CURRENT_TARGET"
 }
-
diff --git a/pkgs/misc/ghostscript/libpng-1.5.patch b/pkgs/misc/ghostscript/libpng-1.5.patch
deleted file mode 100644
index b00305804a0..00000000000
--- a/pkgs/misc/ghostscript/libpng-1.5.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-$NetBSD: patch-ak,v 1.5 2011/01/15 14:08:10 wiz Exp $
-
-Fix build with png-1.5. From John Bowler.
-
-See also http://bugs.ghostscript.com/show_bug.cgi?id=692060
-
---- a/base/gdevpng.c.orig	2008-07-17 02:34:01.000000000 +0000
-+++ b/base/gdevpng.c
-@@ -36,12 +36,14 @@
- #include "gdevpccm.h"
- #include "gscdefs.h"
- 
--#define PNG_INTERNAL
- /*
-  * libpng versions 1.0.3 and later allow disabling access to the stdxxx
-  * files while retaining support for FILE * I/O.
-+ *
-+ * This is a misunderstanding - this is a build time option for libpng,
-+ * it has no effect on a user of libpng.
-  */
--#define PNG_NO_CONSOLE_IO
-+/*#define PNG_NO_CONSOLE_IO*/
- /*
-  * Earlier libpng versions require disabling FILE * I/O altogether.
-  * This produces a compiler warning about no prototype for png_init_io.
-@@ -280,7 +282,7 @@ png_print_page(gx_device_printer * pdev,
- 	goto done;
-     }
-     /* set error handling */
--    if (setjmp(png_ptr->jmpbuf)) {
-+    if (setjmp(png_jmpbuf(png_ptr))) {
- 	/* If we get here, we had a problem reading the file */
- 	code = gs_note_error(gs_error_VMerror);
- 	goto done;
-@@ -290,19 +292,12 @@ png_print_page(gx_device_printer * pdev,
-     png_init_io(png_ptr, file);
- 
-     /* set the file information here */
--    info_ptr->width = pdev->width;
--    info_ptr->height = pdev->height;
--    /* resolution is in pixels per meter vs. dpi */
--    info_ptr->x_pixels_per_unit =
--	(png_uint_32) (pdev->HWResolution[0] * (100.0 / 2.54));
--    info_ptr->y_pixels_per_unit =
--	(png_uint_32) (pdev->HWResolution[1] * (100.0 / 2.54));
--    info_ptr->phys_unit_type = PNG_RESOLUTION_METER;
--    info_ptr->valid |= PNG_INFO_pHYs;
-     switch (depth) {
- 	case 32:
--	    info_ptr->bit_depth = 8;
--	    info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	8, PNG_COLOR_TYPE_RGB_ALPHA,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- 	    png_set_invert_alpha(png_ptr);
- 	    {   gx_device_pngalpha *ppdev = (gx_device_pngalpha *)pdev;
- 		png_color_16 background;
-@@ -315,57 +310,69 @@ png_print_page(gx_device_printer * pdev,
- 	    }
- 	    break;
- 	case 48:
--	    info_ptr->bit_depth = 16;
--	    info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	16, PNG_COLOR_TYPE_RGB,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- #if defined(ARCH_IS_BIG_ENDIAN) && (!ARCH_IS_BIG_ENDIAN) 
- 	    png_set_swap(png_ptr);
- #endif
- 	    break;
- 	case 24:
--	    info_ptr->bit_depth = 8;
--	    info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	8, PNG_COLOR_TYPE_RGB,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- 	    break;
- 	case 8:
--	    info_ptr->bit_depth = 8;
--	    if (gx_device_has_color(pdev))
--		info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
--	    else
--		info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	8, gx_device_has_color(pdev) ?
-+			PNG_COLOR_TYPE_PALETTE : PNG_COLOR_TYPE_GRAY,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- 	    break;
- 	case 4:
--	    info_ptr->bit_depth = 4;
--	    info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	4, PNG_COLOR_TYPE_PALETTE,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- 	    break;
- 	case 1:
--	    info_ptr->bit_depth = 1;
--	    info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
-+	    png_set_IHDR(png_ptr, info_ptr, pdev->width, pdev->height,
-+	    	1, PNG_COLOR_TYPE_GRAY,
-+		PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
-+		PNG_FILTER_TYPE_DEFAULT);
- 	    /* invert monocrome pixels */
- 	    png_set_invert_mono(png_ptr);
- 	    break;
-+	default:
-+	    png_error(png_ptr, "invalid bit depth");
-     }
- 
-+    /* resolution is in pixels per meter vs. dpi */
-+    png_set_pHYs(png_ptr, info_ptr, 
-+	(png_uint_32) (pdev->HWResolution[0] * (100.0 / 2.54)),
-+	(png_uint_32) (pdev->HWResolution[1] * (100.0 / 2.54)),
-+	PNG_RESOLUTION_METER);
-+
-     /* set the palette if there is one */
--    if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
-+    if (png_get_color_type(png_ptr, info_ptr)  == PNG_COLOR_TYPE_PALETTE) {
- 	int i;
- 	int num_colors = 1 << depth;
- 	gx_color_value rgb[3];
-+	png_color palette[256];
-+
-+	if (num_colors > 256)
-+	    num_colors = 256;
- 
--	info_ptr->palette =
--	    (void *)gs_alloc_bytes(mem, 256 * sizeof(png_color),
--				   "png palette");
--	if (info_ptr->palette == 0) {
--	    code = gs_note_error(gs_error_VMerror);
--	    goto done;
--	}
--	info_ptr->num_palette = num_colors;
--	info_ptr->valid |= PNG_INFO_PLTE;
- 	for (i = 0; i < num_colors; i++) {
- 	    (*dev_proc(pdev, map_color_rgb)) ((gx_device *) pdev,
- 					      (gx_color_index) i, rgb);
--	    info_ptr->palette[i].red = gx_color_value_to_byte(rgb[0]);
--	    info_ptr->palette[i].green = gx_color_value_to_byte(rgb[1]);
--	    info_ptr->palette[i].blue = gx_color_value_to_byte(rgb[2]);
-+	    palette[i].red = gx_color_value_to_byte(rgb[0]);
-+	    palette[i].green = gx_color_value_to_byte(rgb[1]);
-+	    palette[i].blue = gx_color_value_to_byte(rgb[2]);
- 	}
-+	png_set_PLTE(png_ptr, info_ptr, palette, num_colors);
-     }
-     /* add comment */
-     strncpy(software_key, "Software", sizeof(software_key));
-@@ -375,15 +382,14 @@ png_print_page(gx_device_printer * pdev,
-     text_png.key = software_key;
-     text_png.text = software_text;
-     text_png.text_length = strlen(software_text);
--    info_ptr->text = &text_png;
--    info_ptr->num_text = 1;
-+    png_set_text(png_ptr, info_ptr, &text_png, 1);
- 
-     /* write the file information */
-     png_write_info(png_ptr, info_ptr);
- 
-     /* don't write the comments twice */
--    info_ptr->num_text = 0;
--    info_ptr->text = NULL;
-+    /*info_ptr->num_text = 0;*/
-+    /*info_ptr->text = NULL;*/
- 
-     /* Write the contents of the image. */
-     for (y = 0; y < height; y++) {
-@@ -395,7 +401,7 @@ png_print_page(gx_device_printer * pdev,
-     png_write_end(png_ptr, info_ptr);
- 
-     /* if you alloced the palette, free it here */
--    gs_free_object(mem, info_ptr->palette, "png palette");
-+    /*gs_free_object(mem, info_ptr->palette, "png palette");*/
- 
-   done:
-     /* free the structures */
-@@ -405,6 +411,7 @@ png_print_page(gx_device_printer * pdev,
-     return code;
- }
- 
-+#if 0 /* not required in 1.5 */
- /*
-  * Patch around a static reference to a never-used procedure.
-  * This could be avoided if we were willing to edit pngconf.h to
-@@ -422,6 +429,7 @@ png_push_fill_buffer(png_structp png_ptr
- {
- }
- #endif
-+#endif
- 
- static int
- pngalpha_open(gx_device * pdev)
diff --git a/pkgs/misc/rosegarden/default.nix b/pkgs/misc/rosegarden/default.nix
deleted file mode 100644
index dd4e351a020..00000000000
--- a/pkgs/misc/rosegarden/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-x@{builderDefsPackage
-  , automake, pkgconfig, libX11, libSM, imake, qt4, alsaLib, jackaudio
-  , ladspaH, liblrdf, dssi, liblo, fftwSinglePrec, libsndfile, libsamplerate
-  , xproto, libICE, perl, makedepend, librdf_raptor, lilypond, flac, libunwind
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
-
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="rosegarden";
-    version="10.10";
-    project="${baseName}";
-    name="${baseName}-${version}";
-    url="mirror://sourceforge/project/${project}/${baseName}/${version}/${name}.tar.bz2";
-    hash="1ia74kzkw1yr3h8q4lrccx49hcy2961rni3h4css7r6hdl9xq909";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
-  };
-
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
-  configureFlags = [
-    "--with-qtdir=${qt4}"
-  ];
-
-  setVars = a.noDepEntry ''
-    export NIX_LDFLAGS="$NIX_LDFLAGS -lz -ldl -lX11"
-  '';
-
-  meta = {
-    description = "A music editor and MIDI sequencer";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.gpl2;
-  };
-  passthru = {
-    updateInfo = {
-      downloadPage = "http://sourceforge.net/projects/rosegarden/files/rosegarden/";
-    };
-  };
-}) x
-
diff --git a/pkgs/misc/screensavers/rss-glx/builder.sh b/pkgs/misc/screensavers/rss-glx/builder.sh
deleted file mode 100644
index a0c138d5e04..00000000000
--- a/pkgs/misc/screensavers/rss-glx/builder.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-source $stdenv/setup
-
-# This is a very dirty hack to prevent the binaries from putting the
-# Mesa libraries in their RPATHs.
-mkdir -p $out/tmp
-ln -s $mesa/lib/* $out/tmp/
-mkdir -p $out/lib
-ln -s $mesa/lib/libGLU* $out/lib/
-export NIX_LDFLAGS="-L$out/tmp $NIX_LDFLAGS"
-
-genericBuild
-
-rm -rf $out/tmp
-
-
-# Add a wrapper around each program to use the appropriate OpenGL driver.
-mkdir -p $out/bin/.orig
-
-for i in $(cd $out/bin && ls); do
-    mv $out/bin/$i $out/bin/.orig/$i
-    cat >$out/bin/$i <<EOF
-#! $SHELL -e
-
-mesa=$mesa
-
-$(cat $mesaSwitch)
-
-exec $out/bin/.orig/$i "\$@"
-EOF
-    chmod +x $out/bin/$i
-done
diff --git a/pkgs/misc/screensavers/rss-glx/default.nix b/pkgs/misc/screensavers/rss-glx/default.nix
index fb7cf569fdf..bc1504ab2e9 100644
--- a/pkgs/misc/screensavers/rss-glx/default.nix
+++ b/pkgs/misc/screensavers/rss-glx/default.nix
@@ -3,8 +3,6 @@
 stdenv.mkDerivation {
   name = "rss-glx-0.8.1";
   
-  #builder = ./builder.sh;
-
   src = fetchurl {
     url = mirror://sourceforge/rss-glx/rss-glx_0.8.1.tar.bz2;
     md5 = "a2bdf0e10ee4e89c8975f313c5c0ba6f";
diff --git a/pkgs/os-specific/linux/alsa-plugins/default.nix b/pkgs/os-specific/linux/alsa-plugins/default.nix
index 180f9153043..fb17b47b506 100644
--- a/pkgs/os-specific/linux/alsa-plugins/default.nix
+++ b/pkgs/os-specific/linux/alsa-plugins/default.nix
@@ -1,11 +1,14 @@
 { stdenv, fetchurl, lib, pkgconfig, alsaLib, pulseaudio ? null, jackaudio ? null }:
 
 stdenv.mkDerivation rec {
-  name = "alsa-plugins-1.0.25";
+  name = "alsa-plugins-1.0.26";
 
   src = fetchurl {
-    url = "ftp://ftp.alsa-project.org/pub/plugins/${name}.tar.bz2";
-    sha256 = "1assar5k8zb2srqdcph6a54daqfymlyygdm5fcs6isaydpyp9qx0";
+    urls = [
+      "ftp://ftp.alsa-project.org/pub/plugins/${name}.tar.bz2"
+      "http://alsa.cybermirror.org/plugins/${name}.tar.bz2"
+    ];
+    sha256 = "07wz3kl6isabk15ddpzz820pqlgvw6q0m7knnbgv9780s8s52l83";
   };
 
   buildInputs =
diff --git a/pkgs/os-specific/linux/atheros/inj.patch b/pkgs/os-specific/linux/atheros/inj.patch
deleted file mode 100644
index baae9b88aa4..00000000000
--- a/pkgs/os-specific/linux/atheros/inj.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -Naur madwifi/ath/if_ath.c madwifi_rawtx/ath/if_ath.c
---- madwifi/ath/if_ath.c	2008-06-24 17:20:58.000000000 -0400
-+++ madwifi_rawtx/ath/if_ath.c	2008-06-24 17:20:12.000000000 -0400
-@@ -2950,6 +2950,7 @@
- ath_tx_startraw(struct net_device *dev, struct ath_buf *bf, struct sk_buff *skb)
- {
- 	struct ath_softc *sc = dev->priv;
-+	struct ieee80211com *ic = &sc->sc_ic;
- 	struct ath_hal *ah = sc->sc_ah;
- 	struct ieee80211_phy_params *ph = &(SKB_CB(skb)->phy); 
- 	const HAL_RATE_TABLE *rt;
-@@ -2962,7 +2963,8 @@
- 	struct ieee80211_frame *wh;
- 
- 	wh = (struct ieee80211_frame *)skb->data;
--	try0 = ph->try[0];
-+//	try0 = ph->try[0];
-+	try0 = (ic->ic_opmode == IEEE80211_M_MONITOR) ? 1 : ph->try[0];
- 	rt = sc->sc_currates;
- 	txrate = dot11_to_ratecode(sc, rt, ph->rate[0]);
- 	power = ph->power > 60 ? 60 : ph->power;
-@@ -2986,7 +2988,8 @@
- 	rt = sc->sc_currates;
- 	KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
- 
--	if (IEEE80211_IS_MULTICAST(wh->i_addr1)) {
-+	if (IEEE80211_IS_MULTICAST(wh->i_addr1) || ((ic->ic_opmode == 
-+IEEE80211_M_MONITOR) && (skb->data[1]&3) != 0x01) ) {
- 		flags |= HAL_TXDESC_NOACK;	/* no ack on broad/multicast */
- 		sc->sc_stats.ast_tx_noack++;
- 		try0 = 1;
-
diff --git a/pkgs/os-specific/linux/atheros/r3867.nix b/pkgs/os-specific/linux/atheros/r3867.nix
deleted file mode 100644
index 95a834dd67a..00000000000
--- a/pkgs/os-specific/linux/atheros/r3867.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-args : with args;
-	let localDefs = builderDefs.passthru.function {
-		src = fetchurl {
-			url = http://snapshots.madwifi.org/madwifi-trunk/madwifi-trunk-r3867-20080924.tar.gz;
-			sha256 = "0m48p5mqx1d3aimjjiy251fii7x7y15ch5n74hvq4hygc6bcjf79";
-		};
-
-		buildInputs = [];
-		configureFlags = [];
-		makeFlags = [''KERNELPATH=${kernel}/lib/modules/*/build'' ''DESTDIR=$out''];
-		hal20080528 = fetchurl {
-		  url = http://people.freebsd.org/~sam/ath_hal-20080528.tgz;
-		  sha256 = "1a6glkd8n46876hl48ib08p81qwsvrk4153j4b9xrxgid6f8bar9";
-		};
-		injectionPatchFile = ./inj.patch;
-	};
-	in with localDefs;
-let
-preBuild = fullDepEntry (''
-	echo Replacing HAL.
-	tar xvf ${hal20080528}
-	rm -r hal
-	mv ath_hal-* hal
-'') ["minInit" "doUnpack"];
-postInstall = fullDepEntry (''
-	ln -s $out/usr/local/bin $out/bin
-'') [minInit doMakeInstall];
-in
-stdenv.mkDerivation rec {
-	name = "atheros-"+version;
-	patches = lib.optional
-		(lib.attrByPath ["injectionPatch"] false args)
-		injectionPatchFile;
-	builder = writeScript (name + "-builder")
-		(textClosure localDefs 
-			((lib.optional 
-				(lib.attrByPath ["freshHAL"] false args)
-				preBuild)
-			++ [doPatch doMakeInstall postInstall
-			doForceShare doPropagate]));
-	meta = {
-		description = "Atheros WiFi driver";
-		inherit src;
-	};
-}
diff --git a/pkgs/os-specific/linux/aufs-util/2.1.nix b/pkgs/os-specific/linux/aufs-util/2.1.nix
deleted file mode 100644
index 87541def9ad..00000000000
--- a/pkgs/os-specific/linux/aufs-util/2.1.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, fetchgit, kernel, aufs }:
-
-assert aufs != null;
-
-let version = "20110217"; in
-
-stdenv.mkDerivation {
-  name = "aufs2.1-util-${version}-${kernel.version}";
-
-  src = fetchgit {
-    url = "git://git.c3sl.ufpr.br/aufs/aufs2-util.git";
-    rev = "0f0cf3f2ae39906fd4b5376cdaa24e9fe64a03f4";
-    sha256 = "0fce5601b67efe8b5652a813ae612348bf4503aa71056cd31a5ed0406632e364";
-  };
-
-  buildInputs = [ aufs ];
-
-  makeFlags =
-    [ "KDIR=${kernel}/lib/modules/${kernel.version}/build"
-      "Install=install"
-      "DESTDIR=$(out)"
-    ];
-
-  postInstall =
-    ''
-      mv $out/usr/* $out
-      rmdir $out/usr
-
-      cp aufs.shlib $out/lib/
-
-      substituteInPlace $out/bin/aubrsync \
-        --replace /sbin/mount $out/sbin/mount \
-        --replace /usr/lib/aufs.shlib $out/lib/aufs.shlib
-    '';
-
-  meta = {
-    description = "Utilities for AUFS2.1";
-    homepage = http://aufs.sourceforge.net/;
-    maintainers = [ stdenv.lib.maintainers.eelco  ];
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/aufs-util/3.nix b/pkgs/os-specific/linux/aufs-util/3.nix
index 8eefc1b0f4a..d75f51d38c9 100644
--- a/pkgs/os-specific/linux/aufs-util/3.nix
+++ b/pkgs/os-specific/linux/aufs-util/3.nix
@@ -34,8 +34,7 @@ stdenv.mkDerivation {
   meta = {
     description = "Utilities for AUFS3";
     homepage = http://aufs.sourceforge.net/;
-    maintainers = [ stdenv.lib.maintainers.eelco 
-                    stdenv.lib.maintainers.shlevy ];
+    maintainers = [ stdenv.lib.maintainers.eelco  ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/aufs/2.1.nix b/pkgs/os-specific/linux/aufs/2.1.nix
deleted file mode 100644
index 1539775a2a1..00000000000
--- a/pkgs/os-specific/linux/aufs/2.1.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ stdenv, kernel, fetchgit, perl }:
-
-assert kernel.features ? aufsBase;
-
-let version = 
-  if (builtins.lessThan (builtins.compareVersions kernel.version "2.6.38") 0) 
-  then "20110303"
-  else "20110408"; in
-
-stdenv.mkDerivation {
-  name = "aufs2.1-${version}-${kernel.version}";
-
-  src =
-  if (builtins.lessThan (builtins.compareVersions kernel.version "2.6.38") 0) 
-  then
-    fetchgit {
-      url = "git://git.c3sl.ufpr.br/aufs/aufs2-standalone.git";
-      rev = "aceef6c84dbe5798bf46904252727b9588eafaf6";
-      sha256 = "50a8cb39af5fee82e88b65351cac52b6ab95a68c45e0a98da9fa1925b28f048d";
-    }
-  else
-    fetchgit {
-      url = "git://git.c3sl.ufpr.br/aufs/aufs2-standalone.git";
-      rev = "01cb6101f477339bc95e6b47e3618bb29ecc68db";
-      sha256 = "4af3c4b1e99ef58abe8530665309021d541ee840ee54f442606cc418646a1faf";
-    };
-
-  buildInputs = [ perl ];
-
-  makeFlags = "KDIR=${kernel}/lib/modules/${kernel.version}/build";
-
-  installPhase =
-    ''
-      mkdir -p $out/lib/modules/${kernel.version}/misc
-      cp -v aufs.ko $out/lib/modules/${kernel.version}/misc
-
-      # Install the headers because aufs2.1-util requires them.
-      cp -av usr/include $out/
-    '';
-
-  meta = {
-    description = "Another Unionfs implementation for Linux (second generation)";
-    homepage = http://aufs.sourceforge.net/;
-    maintainers = [ stdenv.lib.maintainers.eelco
-                    stdenv.lib.maintainers.raskin ];
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/aufs/3.nix b/pkgs/os-specific/linux/aufs/3.nix
index 83de1faa8fe..130fd5075cd 100644
--- a/pkgs/os-specific/linux/aufs/3.nix
+++ b/pkgs/os-specific/linux/aufs/3.nix
@@ -37,8 +37,7 @@ stdenv.mkDerivation {
     description = "Another Unionfs implementation for Linux (third generation)";
     homepage = http://aufs.sourceforge.net/;
     maintainers = [ stdenv.lib.maintainers.eelco
-                    stdenv.lib.maintainers.raskin
-                    stdenv.lib.maintainers.shlevy ];
+                    stdenv.lib.maintainers.raskin ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/cryptodev/default.nix b/pkgs/os-specific/linux/cryptodev/default.nix
index c64d47d0d4d..cb797f07aa3 100644
--- a/pkgs/os-specific/linux/cryptodev/default.nix
+++ b/pkgs/os-specific/linux/cryptodev/default.nix
@@ -1,10 +1,11 @@
 { fetchurl, stdenv, kernel, onlyHeaders ? false }:
 
 stdenv.mkDerivation rec {
-  name = "cryptodev-linux-1.5";
+  pname = "cryptodev-linux-1.5";
+  name = "${pname}-${kernel.version}";
 
   src = fetchurl {
-    url = "http://download.gna.org/cryptodev-linux/${name}.tar.gz";
+    url = "http://download.gna.org/cryptodev-linux/${pname}.tar.gz";
     sha256 = "13hybl5p0ck0vgi2gxmiwa2810gcfk78kdy17ai8nczj8il15mn0";
   };
 
diff --git a/pkgs/os-specific/linux/fbterm/default.nix b/pkgs/os-specific/linux/fbterm/default.nix
index 0201422cdf9..59f93e836c4 100644
--- a/pkgs/os-specific/linux/fbterm/default.nix
+++ b/pkgs/os-specific/linux/fbterm/default.nix
@@ -1,37 +1,33 @@
-a :  
-let 
-  fetchurl = a.fetchurl;
-  
-  buildInputs = with a; [
-    gpm freetype fontconfig pkgconfig ncurses
-  ];
-  s = import ./src-for-default.nix; 
+{stdenv, fetchurl, gpm, freetype, fontconfig, pkgconfig, ncurses}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="fbterm";
+    version="1.7.0";
+    name="fbterm-1.7.0";
+    hash="0pciv5by989vzvjxsv1jsv4bdp4m8j0nfbl29jm5fwi12w4603vj";
+    url="http://fbterm.googlecode.com/files/fbterm-1.7.0.tar.gz";
+    sha256="0pciv5by989vzvjxsv1jsv4bdp4m8j0nfbl29jm5fwi12w4603vj";
+  };
+  buildInputs = [gpm freetype fontconfig pkgconfig ncurses];
 in
-rec {
-  src = a.fetchUrlFromSrcInfo s; 
-  inherit(s) name;
+stdenv.mkDerivation {
+  inherit (s) name version;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
   inherit buildInputs;
-  configureFlags = [];
-
-  fixInc = a.fullDepEntry (''
+  preConfigure = ''
     sed -e '/ifdef SYS_signalfd/atypedef long long loff_t;' -i src/fbterm.cpp
-  '') ["doUnpack" "minInit"];
-
-  fixMakeInstall = a.fullDepEntry (''
     sed -e '/install-exec-hook:/,/^[^\t]/{d}; /.NOEXPORT/iinstall-exec-hook:\
     ' -i src/Makefile.in
-  '') ["doUnpack" "minInit"];
-
-  setVars = a.noDepEntry (''
     export HOME=$PWD;
     export NIX_LDFLAGS="$NIX_LDFLAGS -lfreetype"
-  '') ;
-
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["setVars" "fixInc" "fixMakeInstall" "doConfigure" "doMakeInstall"];
-      
+  '';
   meta = {
+    inherit (s) version;
     description = "Framebuffer terminal emulator";
-    maintainers = [a.lib.maintainers.raskin];
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/fbterm/default.upstream b/pkgs/os-specific/linux/fbterm/default.upstream
new file mode 100644
index 00000000000..387ef8862fb
--- /dev/null
+++ b/pkgs/os-specific/linux/fbterm/default.upstream
@@ -0,0 +1,3 @@
+url http://code.google.com/p/fbterm/downloads/list
+version_link '[.]tar[.][a-z0-9]+$'
+process 'code[.]google[.]com//' ''
diff --git a/pkgs/os-specific/linux/fbterm/src-for-default.nix b/pkgs/os-specific/linux/fbterm/src-for-default.nix
deleted file mode 100644
index 6705404ac9f..00000000000
--- a/pkgs/os-specific/linux/fbterm/src-for-default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-rec {
-   version="1.7";
-   name="fbterm-1.7";
-   hash="19qjb2zb4gwr1jlybmalaw3y3zybvc8vliwj85dfabmill1k1afh";
-   url="http://fbterm.googlecode.com/files/fbterm-${version}.tar.gz";
-   advertisedUrl="http://fbterm.googlecode.com/files/fbterm-1.7.tar.gz";
-  
-  
-}
diff --git a/pkgs/os-specific/linux/fbterm/src-info-for-default.nix b/pkgs/os-specific/linux/fbterm/src-info-for-default.nix
deleted file mode 100644
index b0c439714fb..00000000000
--- a/pkgs/os-specific/linux/fbterm/src-info-for-default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  downloadPage = "http://code.google.com/p/fbterm/";
-  baseName = "fbterm";
-}
diff --git a/pkgs/os-specific/linux/fbterm/stdenv.nix b/pkgs/os-specific/linux/fbterm/stdenv.nix
deleted file mode 100644
index e257a7d46eb..00000000000
--- a/pkgs/os-specific/linux/fbterm/stdenv.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-# Quick version to be able to cross-build fbterm meanwhile builderDefs cannot
-# cross-build with an equivalent to the stdenvCross adapter.
-{ stdenv, fetchurl, gpm, freetype, fontconfig, pkgconfig, ncurses }:
-
-let
-  version="1.7";
-  name="fbterm-1.7";
-  hash="19qjb2zb4gwr1jlybmalaw3y3zybvc8vliwj85dfabmill1k1afh";
-  url="http://fbterm.googlecode.com/files/fbterm-${version}.tar.gz";
-in
-
-stdenv.mkDerivation {
-  inherit name;
-
-  src = fetchurl {
-    inherit url;
-    sha256 = hash;
-  };
-
-  buildNativeInputs = [ ncurses ];
-  buildInputs = [ gpm freetype fontconfig pkgconfig ];
-
-  preConfigure = ''
-    sed -e '/ifdef SYS_signalfd/atypedef long long loff_t;' -i src/fbterm.cpp
-
-    sed -e '/install-exec-hook:/,/^[^\t]/{d}; /.NOEXPORT/iinstall-exec-hook:\
-    ' -i src/Makefile.in
-
-    export HOME=$PWD;
-
-    export NIX_LDFLAGS="$NIX_LDFLAGS -lfreetype"
-    # This is only relevant cross-building
-    export NIX_CROSS_LDFLAGS="$NIX_CROSS_LDFLAGS -lfreetype"
-  '';
-}
diff --git a/pkgs/os-specific/linux/fuse/default.nix b/pkgs/os-specific/linux/fuse/default.nix
index 2a0dfb220ec..bd2507ec1bc 100644
--- a/pkgs/os-specific/linux/fuse/default.nix
+++ b/pkgs/os-specific/linux/fuse/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, utillinux }:
 
 stdenv.mkDerivation rec {
-  name = "fuse-2.8.7";
+  name = "fuse-2.9.2";
   
   builder = ./builder.sh;
   
   src = fetchurl {
     url = "mirror://sourceforge/fuse/${name}.tar.gz";
-    sha256 = "17dlp6p7kcd8kav3rylmn1a1rqbnri4iawl78mmcm1szllck6w90";
+    sha256 = "1z6fg593hy1j7mynhckx43gqkkg2nwpmwwv860337nl77zxji9w1";
   };
   
   configureFlags = "--disable-kernel-module";
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index 48f050f98cc..a58430401c5 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -134,6 +134,7 @@ stdenv.mkDerivation {
     homepage = http://www.kernel.org/;
     maintainers = [
       lib.maintainers.eelco
+      lib.maintainers.shlevy
       lib.maintainers.chaoflow
     ];
     platforms = lib.platforms.linux;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.0.nix b/pkgs/os-specific/linux/kernel/linux-3.0.nix
index 346ecf5660e..4ac4a4b263b 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.0.nix
@@ -230,7 +230,7 @@ in
 import ./generic.nix (
 
   rec {
-    version = "3.0.52";
+    version = "3.0.57";
 
     preConfigure = ''
       substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
@@ -238,7 +238,7 @@ import ./generic.nix (
 
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-      sha256 = "09iszqkxnwkcmm4cwh7320jrwbpwgzx0v05l8mq36p8ix3s926k6";
+      sha256 = "12rf48ymwsgr133d6cydsajjxb3zihrcrfhpdv185x07dbri9nbl";
     };
 
     config = configWithPlatform stdenv.platform;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.2.nix b/pkgs/os-specific/linux/kernel/linux-3.2.nix
index 77fb9bd1e45..8a3a6ba47e3 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.2.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.2.nix
@@ -237,7 +237,7 @@ in
 import ./generic.nix (
 
   rec {
-    version = "3.2.34";
+    version = "3.2.35";
     testing = false;
 
     modDirVersion = version;
@@ -248,7 +248,7 @@ import ./generic.nix (
 
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.0/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "0j99pg1kdrj200wda7w2v4d272y4x0hyrp3w540a6rj00gkxsmn4";
+      sha256 = "0p665msvhmjmcvgravi10yyfbnvn6bm9xfhsflj61qj0frj0lzn9";
     };
 
     config = configWithPlatform stdenv.platform;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.4.nix b/pkgs/os-specific/linux/kernel/linux-3.4.nix
index df38aec881b..a03e3950891 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.4.nix
@@ -239,7 +239,7 @@ in
 import ./generic.nix (
 
   rec {
-    version = "3.4.19";
+    version = "3.4.24";
     testing = false;
 
     preConfigure = ''
@@ -248,7 +248,7 @@ import ./generic.nix (
 
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "0zf5da2yfy10ml0f7rpzdbfj9avayw2i9mpm07xhjamw717b82bh";
+      sha256 = "1vxyb68ckzgm88jj7xzmwr2hmj5vdry5irvfr89klgqr95mmhkd1";
     };
 
     config = configWithPlatform stdenv.platform;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.6.nix b/pkgs/os-specific/linux/kernel/linux-3.6.nix
index 5334712865b..3fb47da7be6 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.6.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.6.nix
@@ -244,7 +244,7 @@ in
 import ./generic.nix (
 
   rec {
-    version = "3.6.7";
+    version = "3.6.11";
     testing = false;
 
     preConfigure = ''
@@ -253,7 +253,7 @@ import ./generic.nix (
 
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
-      sha256 = "08ivh0md8lcq4xqq98y2ripfb02pykh6qla4zspj76qvl0awvp3x";
+      sha256 = "0cnbdhsgxxdl44gqfqlh8nyf6yzmdz7xkfa0xh2rzdscwqh8085h";
     };
 
     config = configWithPlatform stdenv.platform;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.7.nix b/pkgs/os-specific/linux/kernel/linux-3.7.nix
new file mode 100644
index 00000000000..1a02910b5c8
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-3.7.nix
@@ -0,0 +1,271 @@
+args @ { stdenv, fetchurl, extraConfig ? ""
+, perl, mktemp, module_init_tools
+, ... }:
+
+let
+  configWithPlatform = kernelPlatform :
+    ''
+      # Power management and debugging for powertop.
+      DEBUG_KERNEL y
+      PM_ADVANCED_DEBUG y
+      PM_RUNTIME y
+      TIMER_STATS y
+      USB_SUSPEND y
+      BACKTRACE_SELF_TEST n
+      CPU_NOTIFIER_ERROR_INJECT? n
+      DEBUG_DEVRES n
+      DEBUG_NX_TEST n
+      DEBUG_STACK_USAGE n
+      DEBUG_STACKOVERFLOW n
+      RCU_TORTURE_TEST n
+      SCHEDSTATS n
+
+      # Support drivers that need external firmware.
+      STANDALONE n
+
+      # Make /proc/config.gz available.
+      IKCONFIG_PROC y
+
+      # Optimize with -O2, not -Os.
+      CC_OPTIMIZE_FOR_SIZE n
+
+      # Enable the kernel's built-in memory tester.
+      MEMTEST y
+
+      # Include the CFQ I/O scheduler in the kernel, rather than as a
+      # module, so that the initrd gets a good I/O scheduler.
+      IOSCHED_CFQ y
+      BLK_CGROUP y # required by CFQ
+
+      # Enable NUMA.
+      NUMA? y
+
+      # Disable some expensive (?) features.
+      FTRACE n
+      KPROBES n
+      PM_TRACE_RTC n
+
+      # Enable various subsystems.
+      ACCESSIBILITY y # Accessibility support
+      AUXDISPLAY y # Auxiliary Display support
+      DONGLE y # Serial dongle support
+      HIPPI? y
+      MTD_COMPLEX_MAPPINGS y # needed for many devices
+      SCSI_LOWLEVEL y # enable lots of SCSI devices
+      SCSI_LOWLEVEL_PCMCIA y
+      SPI y # needed for many devices
+      SPI_MASTER y
+      WAN y
+
+      # Networking options.
+      IP_PNP n
+      IPV6_PRIVACY y
+      NETFILTER_ADVANCED y
+      IP_VS_PROTO_TCP y
+      IP_VS_PROTO_UDP y
+      IP_VS_PROTO_ESP y
+      IP_VS_PROTO_AH y
+      IP_DCCP_CCID3 n # experimental
+      CLS_U32_PERF y
+      CLS_U32_MARK y
+
+      # Wireless networking.
+      IPW2100_MONITOR y # support promiscuous mode
+      IPW2200_MONITOR? y # support promiscuous mode
+      HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
+      HOSTAP_FIRMWARE_NVRAM y
+      ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
+      ATH9K_AHB y # Ditto, AHB bus
+      B43_PHY_HT y
+      BCMA_HOST_PCI y
+
+      # Some settings to make sure that fbcondecor works - in particular,
+      # disable tileblitting and the drivers that need it.
+
+      # Enable various FB devices.
+      FB y
+      FB_EFI y
+      FB_NVIDIA_I2C y # Enable DDC Support
+      FB_RIVA_I2C y
+      FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
+      FB_ATY_GX y # Mach64 GX support
+      FB_SAVAGE_I2C y
+      FB_SAVAGE_ACCEL y
+      FB_SIS_300 y
+      FB_SIS_315 y
+      FB_3DFX_ACCEL y
+      FB_GEODE y
+
+      # Video configuration
+      # Enable KMS for devices whose X.org driver supports it.
+      DRM_I915_KMS y
+      DRM_RADEON_KMS y
+      # Hybrid graphics support
+      VGA_SWITCHEROO y
+
+      # Sound.
+      SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
+      SND_HDA_INPUT_BEEP y # Support digital beep via input layer
+      SND_USB_CAIAQ_INPUT y
+      PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
+
+      # USB serial devices.
+      USB_SERIAL_GENERIC y # USB Generic Serial Driver
+      USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
+      USB_SERIAL_KEYSPAN_USA28 y
+      USB_SERIAL_KEYSPAN_USA28X y
+      USB_SERIAL_KEYSPAN_USA28XA y
+      USB_SERIAL_KEYSPAN_USA28XB y
+      USB_SERIAL_KEYSPAN_USA19 y
+      USB_SERIAL_KEYSPAN_USA18X y
+      USB_SERIAL_KEYSPAN_USA19W y
+      USB_SERIAL_KEYSPAN_USA19QW y
+      USB_SERIAL_KEYSPAN_USA19QI y
+      USB_SERIAL_KEYSPAN_USA49W y
+      USB_SERIAL_KEYSPAN_USA49WLC y
+
+      # Filesystem options - in particular, enable extended attributes and
+      # ACLs for all filesystems that support them.
+      EXT2_FS_XATTR y # Ext2 extended attributes
+      EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
+      EXT2_FS_SECURITY y # Ext2 Security Labels
+      EXT2_FS_XIP y # Ext2 execute in place support
+      EXT4_FS_POSIX_ACL y
+      EXT4_FS_SECURITY y
+      REISERFS_FS_XATTR y
+      REISERFS_FS_POSIX_ACL y
+      REISERFS_FS_SECURITY y
+      JFS_POSIX_ACL y
+      JFS_SECURITY y
+      XFS_QUOTA y
+      XFS_POSIX_ACL y
+      XFS_RT y # XFS Realtime subvolume support
+      OCFS2_DEBUG_MASKLOG n
+      BTRFS_FS_POSIX_ACL y
+      UBIFS_FS_XATTR? y
+      UBIFS_FS_ADVANCED_COMPR y
+      NFSD_V2_ACL y
+      NFSD_V3 y
+      NFSD_V3_ACL y
+      NFSD_V4 y
+      CIFS_XATTR y
+      CIFS_POSIX y
+
+      # Security related features.
+      STRICT_DEVMEM y # Filter access to /dev/mem
+      SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
+
+      # Misc. options.
+      8139TOO_8129 y
+      8139TOO_PIO n # PIO is slower
+      AIC79XX_DEBUG_ENABLE n
+      AIC7XXX_DEBUG_ENABLE n
+      AIC94XX_DEBUG n
+      B43_PCMCIA y
+      BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
+      BLK_DEV_IDEACPI y # IDE ACPI support
+      BLK_DEV_INTEGRITY y
+      BSD_PROCESS_ACCT_V3 y
+      BT_HCIUART_BCSP y
+      BT_HCIUART_H4 y # UART (H4) protocol support
+      BT_HCIUART_LL y
+      BT_RFCOMM m
+      BT_RFCOMM_TTY y # RFCOMM TTY support
+      CRASH_DUMP n
+      DMAR? n # experimental
+      DVB_DYNAMIC_MINORS? y # we use udev
+      EFI_STUB y # EFI bootloader in the bzImage itself
+      FUSION y # Fusion MPT device support
+      IDE_GD_ATAPI y # ATAPI floppy support
+      IRDA_ULTRA y # Ultra (connectionless) protocol
+      JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
+      JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
+      JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
+      JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
+      LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
+      LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
+      LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
+      LOGO n # not needed
+      MEDIA_ATTACH? y
+      MEGARAID_NEWGEN y
+      MICROCODE_AMD y
+      MODVERSIONS y
+      MOUSE_PS2_ELANTECH y # Elantech PS/2 protocol extension
+      MTRR_SANITIZER y
+      NET_FC y # Fibre Channel driver support
+      PPP_MULTILINK y # PPP multilink support
+      REGULATOR y # Voltage and Current Regulator Support
+      SCSI_LOGGING y # SCSI logging facility
+      SERIAL_8250 y # 8250/16550 and compatible serial support
+      SLIP_COMPRESSED y # CSLIP compressed headers
+      SLIP_SMART y
+      THERMAL_HWMON y # Hardware monitoring support
+      USB_DEBUG n
+      USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
+      USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
+      X86_CHECK_BIOS_CORRUPTION y
+      X86_MCE y
+      XEN_DOM0 y
+
+      # Linux Containers
+      RT_GROUP_SCHED? y
+      CGROUP_DEVICE? y
+      CGROUP_MEM_RES_CTLR? y
+      CGROUP_MEM_RES_CTLR_SWAP? y
+      DEVPTS_MULTIPLE_INSTANCES? y
+
+      # Enable staging drivers.  These are somewhat experimental, but
+      # they generally don't hurt.
+      STAGING y
+
+      # PROC_EVENTS requires that the netlink connector is not built
+      # as a module.  This is required by libcgroup's cgrulesengd.
+      CONNECTOR y
+      PROC_EVENTS y
+
+      # Tracing
+      FTRACE y
+      FUNCTION_TRACER y
+      FTRACE_SYSCALLS y
+      SCHED_TRACER y
+
+      # Devtmpfs support.
+      DEVTMPFS y
+
+      # Media support
+      MEDIA_CAMERA_SUPPORT? y
+      MEDIA_RC_SUPPORT? y
+      MEDIA_USB_SUPPORT y
+
+      ${if kernelPlatform ? kernelExtraConfig then kernelPlatform.kernelExtraConfig else ""}
+      ${extraConfig}
+    '';
+in
+
+import ./generic.nix (
+
+  rec {
+    version = "3.7.1";
+    testing = false;
+
+    preConfigure = ''
+      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
+    '';
+
+    src = fetchurl {
+      url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
+      sha256 = "0mbjvrr0658gg052hbf32vfcmlzfsr777wgmaxrpkpzbfs1qpjp1";
+    };
+
+    config = configWithPlatform stdenv.platform;
+    configCross = configWithPlatform stdenv.cross.platform;
+
+    features.iwlwifi = true;
+    features.efiBootStub = true;
+    features.needsCifsUtils = true;
+    features.canDisableNetfilterConntrackHelpers = true;
+    features.netfilterRPFilter = true;
+  }
+
+  // removeAttrs args ["extraConfig"]
+)
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index 52e284827d0..44c31d824ae 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -8,16 +8,13 @@ let
   readConfig = configFile:
     let
       configAttrs = import "${runCommand "config.nix" {} ''
-        (. ${configFile}
-        echo "{"
-        for var in `set`; do
-            if [[ "$var" =~ ^CONFIG_ ]]; then
-                IFS="="
-                set -- $var
-                echo "\"$1\" = \"''${*:2}\";"
-            fi
-        done
-        echo "}") > $out
+        echo "{" > "$out"
+        while IFS='=' read key val; do
+          [ "x''${key#CONFIG_}" != "x$key" ] || continue
+          no_firstquote="''${val#\"}";
+          echo '  "'"$key"'" = "'"''${no_firstquote%\"}"'";' >> "$out"
+        done < "${configFile}"
+        echo "}" >> $out
       ''}";
 
       config = configAttrs // rec {
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index d42581e457e..f886c2c49f4 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -107,13 +107,13 @@ rec {
 
   aufs3_0 = rec {
     name = "aufs3.0";
-    version = "3.0.20120827";
+    version = "3.0.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "4bd8efe495832ec43c26cb31ddcab3bae56485da";
-      sha256 = "496113f0eae1a24ae0c1998d1c73fc7c13961579c8e694b3651a8080eae7b74e";
+      rev = "0627c706d69778f5c74be982f28c746153b8cdf7";
+      sha256 = "7008ff64f5adc2b3a30fcbb090bcbfaac61b778af38493b6144fc7d768a6514d";
     };
     features.aufsBase = true;
     features.aufs3 = true;
@@ -121,13 +121,13 @@ rec {
 
   aufs3_1 = rec {
     name = "aufs3.1";
-    version = "3.1.20120827";
+    version = "3.1.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "9be47f1ff7c86976b0baa7847f22d75983e53922";
-      sha256 = "0cd239b9aad396750a26a5cd7b0d54146f21db63fb13d3fa03c4f73b7ebce77e";
+      rev = "82c9fe43d197072a82cab6f02a5fd5cc4f50306a";
+      sha256 = "f03d00964c9fc9975144d315fb79a1cd56d99f8c11853ed81d34afca35cd560a";
     };
     features.aufsBase = true;
     features.aufs3 = true;
@@ -135,13 +135,13 @@ rec {
 
   aufs3_2 = rec {
     name = "aufs3.2";
-    version = "3.2.20120827";
+    version = "3.2.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "267cb1138b4724ee028ec64ace556abdf993c9f4";
-      sha256 = "61f69264806cf06a05548166e2bc8fd121de9a3e524385f725d76abab22b8a0d";
+      rev = "0bf50c3b82f98e2ddc4c9ba0657f28ebfa8d15cb";
+      sha256 = "bc4b65cb77c62744db251da98488fdf4962f14a144c045cea6cbbbd42718ff89";
     };
     features.aufsBase = true;
     features.aufs3 = true;
@@ -149,13 +149,13 @@ rec {
 
   aufs3_3 = rec {
     name = "aufs3.3";
-    version = "3.3.20120827";
+    version = "3.3.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "ef302b8a8a2862b622cf4826d08b1e076ee6acb7";
-      sha256 = "7f78783685cc3e4eb825cd5dd8dabc82bb16c275493a850e8b7955ac69048d98";
+      rev = "65ab607cfb2c411d86da8fcee25c0f6dada1c4d5";
+      sha256 = "55c887932f1c12aed4ee20d9e749a80e9e0412951bd0a40fa3949ba972764a0a";
     };
     features.aufsBase = true;
     features.aufs3 = true;
@@ -163,13 +163,13 @@ rec {
 
   aufs3_4 = rec {
     name = "aufs3.4";
-    version = "3.4.20120827";
+    version = "3.4.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "79d8207b22c38420757adf7eec86ee2dcec7443c";
-      sha256 = "bc148aa251c6e63edca70c516c0548dc9b3e48653039df4cf693aa2bcc1b9bb0";
+      rev = "2faacd9baffb37df3b9062cc554353eebe68df1e";
+      sha256 = "3ecf97468f5e85970d9fd2bfc61e38c7f5ae2c6dde0045d5a17de085c411d452";
     };
     features.aufsBase = true;
     features.aufs3 = true;
@@ -177,28 +177,42 @@ rec {
 
   aufs3_5 = rec {
     name = "aufs3.5";
-    version = "3.5.20120827";
+    version = "3.5.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "18e455787597579fe144cdb2f18aa6a0a32c46a4";
-      sha256 = "9649a4cb00e41e2b2e3aa57c3869c33faf90ecbd845a3ac0119922655e80a030";
+      rev = "1658e9080c0e49f38feee5027cf0d32940a661ca";
+      sha256 = "4577fe1dd34299520155767a7c42697d41aabc0055ae8b1e448449b8c24a1044";
     };
     features.aufsBase = true;
     features.aufs3 = true;
   };
 
-  # not officially released yet, but 3.x seems to work fine
   aufs3_6 = rec {
     name = "aufs3.6";
-    version = "3.x.20120827";
+    version = "3.6.20121210";
+    utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
+    utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
+    patch = makeAufs3StandalonePatch {
+      inherit version;
+      rev = "f541ebfd88df0f4e6f9daf55053282e4f52cc4d9";
+      sha256 = "4d615a5f3c14a6a7c49bc6d65e78a2cdb89321cbd8a53f87cc8fe9edda382c3a";
+    };
+    features.aufsBase = true;
+    features.aufs3 = true;
+  };
+
+  # not officially released yet, but 3.x seems to work fine
+  aufs3_7 = rec {
+    name = "aufs3.7";
+    version = "3.x.20121210";
     utilRev = "91af15f977d12e02165759620005f6ce1a4d7602";
     utilHash = "dda4df89828dcf0e4012d88b4aa3eda8c30af69d6530ff5fedc2411de872c996";
     patch = makeAufs3StandalonePatch {
       inherit version;
-      rev = "46660ad144289fa1f0aca59bd00d592b560d0dbb";
-      sha256 = "823b7b4c011c103d63711900b3213008de3c9e408b909e0cc2b8697c1e82b67d";
+      rev = "8d24d728c7eb54dd624bccd8e87afa826670142c";
+      sha256 = "02dcb46e02b2a6b90c1601b5747614276074488c9308625c3a52ab74cad997a5";
     };
     features.aufsBase = true;
     features.aufs3 = true;
diff --git a/pkgs/os-specific/linux/kudzu/builder.sh b/pkgs/os-specific/linux/kudzu/builder.sh
deleted file mode 100644
index 002bac8a1db..00000000000
--- a/pkgs/os-specific/linux/kudzu/builder.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-source $stdenv/setup
-
-export DESTDIR=$out
-
-preInstall() {
-  mkdir -p $out
-  mkdir -p $out/etc
-  mkdir -p $out/sbin
-  mkdir -p $out/usr
-  make install-program
-}
-
-genericBuild
diff --git a/pkgs/os-specific/linux/kudzu/default.nix b/pkgs/os-specific/linux/kudzu/default.nix
deleted file mode 100644
index 5cc8161bd94..00000000000
--- a/pkgs/os-specific/linux/kudzu/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, pciutils, python, popt, gettext}:
-
-stdenv.mkDerivation {
-  name = "kudzu-1.2.16";
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = http://losser.labs.cs.uu.nl/~armijn/.nix/kudzu-1.2.16.tar.gz;
-    md5 = "5fc786dd558064fd9c9cb3e5be10e799";
-  };
-  buildInputs = [pciutils python popt gettext];
-  inherit python;
-  patches = [./kudzu-python.patch];
-}
diff --git a/pkgs/os-specific/linux/kudzu/kudzu-python.patch b/pkgs/os-specific/linux/kudzu/kudzu-python.patch
deleted file mode 100644
index 553d998f517..00000000000
--- a/pkgs/os-specific/linux/kudzu/kudzu-python.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ruN kudzu-1.2.16/Makefile kudzu-1.2.16.new/Makefile
---- kudzu-1.2.16/Makefile	2005-10-28 21:57:55.000000000 +0200
-+++ kudzu-1.2.16.new/Makefile	2005-12-23 19:55:12.000000000 +0100
-@@ -17,7 +17,7 @@
- 
- CVSTAG = kudzu-r$(subst .,-,$(VERSION))
- 
--PYTHONVERS = $(shell ls /usr/include/python*/Python.h | sed "s|/usr/include/||g"| sed "s|/Python.h||g")
-+PYTHONVERS = $(shell ls $(python)/include/python*/Python.h | sed "s|$(python)/include/||g"| sed "s|/Python.h||g")
- 
- CFLAGS += -I. -DVERSION=\"$(VERSION)\"
- 
-@@ -84,7 +84,7 @@
- 	for ver in $(PYTHONVERS) ; do \
- 		if [ ! -f "$$ver/_kudzumodule.so" -o libkudzu.a -nt "$$ver/_kudzumodule.so" ]; then \
- 			mkdir -p $$ver ;\
--			$(CC) $(CFLAGS) -I/usr/include/$$ver -fpic -c -o $$ver/kudzumodule.o kudzumodule.c ;\
-+			$(CC) $(CFLAGS) -I$(python)/include/$$ver -fpic -c -o $$ver/kudzumodule.o kudzumodule.c ;\
- 	        	$(CC) -o $$ver/_kudzumodule.so $$ver/kudzumodule.o -shared -Wl,-soname,_kudzumodule.so -L. -lkudzu -lpci ;\
- 		fi ; \
- 	done
diff --git a/pkgs/os-specific/linux/libnl/libnl-1.1-flags.patch b/pkgs/os-specific/linux/libnl/libnl-1.1-flags.patch
deleted file mode 100644
index bb09b362660..00000000000
--- a/pkgs/os-specific/linux/libnl/libnl-1.1-flags.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libnl-1.1/lib/Makefile.orig	2008-01-14 16:48:45.000000000 +0100
-+++ libnl-1.1/lib/Makefile	2009-05-26 09:47:42.000000000 +0200
-@@ -48,7 +48,7 @@
- 
- $(OUT_SLIB): ../Makefile.opts $(OBJ)
- 	@echo "  LD $(OUT_SLIB)"; \
--	$(CC) -shared -Wl,-soname,libnl.so.1 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc
-+	$(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname,libnl.so.1 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc
- 	@echo "  LN $(OUT_SLIB) $(LN1_SLIB)"; \
- 	rm -f $(LN1_SLIB) ; $(LN) -s $(OUT_SLIB) $(LN1_SLIB)
- 	@echo "  LN $(LN1_SLIB) $(LN_SLIB)"; \
diff --git a/pkgs/os-specific/linux/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch b/pkgs/os-specific/linux/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch
deleted file mode 100644
index 79dd039a338..00000000000
--- a/pkgs/os-specific/linux/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-https://bugs.gentoo.org/show_bug.cgi?id=225393
-
---- libnl-1.1/include/netlink-local.h	2008-06-09 07:54:20 +0000
-+++ libnl-1.1/include/netlink-local.h	2008-06-09 07:54:47 +0000
-@@ -26,6 +26,7 @@
- #include <sys/socket.h>
- #include <inttypes.h>
- #include <assert.h>
-+#include <limits.h>
- 
- #include <arpa/inet.h>
- #include <netdb.h>
-
diff --git a/pkgs/os-specific/linux/libnl/libnl-1.1-minor-leaks.patch b/pkgs/os-specific/linux/libnl/libnl-1.1-minor-leaks.patch
deleted file mode 100644
index 855a6ab3912..00000000000
--- a/pkgs/os-specific/linux/libnl/libnl-1.1-minor-leaks.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Patrick McHardy <kaber@trash.net>
-Date: Fri, 18 Jan 2008 16:55:49 +0000 (+0100)
-Subject: [LIBNL]: Fix minor memleaks on exit
-X-Git-Url: http://git.kernel.org/?p=libs%2Fnetlink%2Flibnl.git;a=commitdiff_plain;h=b64f15d6f947839236fa276d473d238f8c9b9d57;hp=e91bb2ffb090955d443e643a25b250bf3d33534a
-
-[LIBNL]: Fix minor memleaks on exit
-
-Make valgrind happy ...
-
-Signed-off-by: Patrick McHardy <kaber@trash.net>
----
-
-diff --git a/lib/route/route_utils.c b/lib/route/route_utils.c
-index a12d169..1386cda 100644
---- a/lib/route/route_utils.c
-+++ b/lib/route/route_utils.c
-@@ -63,6 +63,11 @@ static void __init init_routing_table_names(void)
- 	add_routing_table_name(RT_TABLE_LOCAL, "local");
- };
- 
-+static void __exit release_routing_table_names(void)
-+{
-+	__trans_list_clear(&table_names);
-+}
-+
- int rtnl_route_read_table_names(const char *path)
- {
- 	__trans_list_clear(&table_names);
-@@ -104,6 +109,11 @@ static void __init init_proto_names(void)
- 	add_proto_name(RTPROT_STATIC, "static");
- };
- 
-+static void __exit release_proto_names(void)
-+{
-+	__trans_list_clear(&proto_names);
-+}
-+
- int rtnl_route_read_protocol_names(const char *path)
- {
- 	__trans_list_clear(&proto_names);
diff --git a/pkgs/os-specific/linux/libnl/libnl-1.1-vlan-header.patch b/pkgs/os-specific/linux/libnl/libnl-1.1-vlan-header.patch
deleted file mode 100644
index c4c2fc6382d..00000000000
--- a/pkgs/os-specific/linux/libnl/libnl-1.1-vlan-header.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From: Patrick McHardy <kaber@trash.net>
-Date: Fri, 18 Jan 2008 16:55:48 +0000 (+0100)
-Subject: [LIBNL]: Add if_vlan.h
-X-Git-Url: http://git.kernel.org/?p=libs%2Fnetlink%2Flibnl.git;a=commitdiff_plain;h=e91bb2ffb090955d443e643a25b250bf3d33534a;hp=7f6b7a8eea0334b34d58dec72c66121a76f08958
-
-[LIBNL]: Add if_vlan.h
-
-vlan support needs VLAN_FLAG_REORDER_HDR, which is not available in
-older if_vlan.h versions. Add the current version from the kernel.
-
-Signed-off-by: Patrick McHardy <kaber@trash.net>
----
-
-diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
-new file mode 100644
-index 0000000..068cd7b
---- /dev/null
-+++ include/linux/if_vlan.h
-@@ -0,0 +1,61 @@
-+/*
-+ * VLAN		An implementation of 802.1Q VLAN tagging.
-+ *
-+ * Authors:	Ben Greear <greearb@candelatech.com>
-+ *
-+ *		This program is free software; you can redistribute it and/or
-+ *		modify it under the terms of the GNU General Public License
-+ *		as published by the Free Software Foundation; either version
-+ *		2 of the License, or (at your option) any later version.
-+ *
-+ */
-+
-+#ifndef _LINUX_IF_VLAN_H_
-+#define _LINUX_IF_VLAN_H_
-+
-+
-+/* VLAN IOCTLs are found in sockios.h */
-+
-+/* Passed in vlan_ioctl_args structure to determine behaviour. */
-+enum vlan_ioctl_cmds {
-+	ADD_VLAN_CMD,
-+	DEL_VLAN_CMD,
-+	SET_VLAN_INGRESS_PRIORITY_CMD,
-+	SET_VLAN_EGRESS_PRIORITY_CMD,
-+	GET_VLAN_INGRESS_PRIORITY_CMD,
-+	GET_VLAN_EGRESS_PRIORITY_CMD,
-+	SET_VLAN_NAME_TYPE_CMD,
-+	SET_VLAN_FLAG_CMD,
-+	GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
-+	GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
-+};
-+
-+enum vlan_flags {
-+	VLAN_FLAG_REORDER_HDR	= 0x1,
-+};
-+
-+enum vlan_name_types {
-+	VLAN_NAME_TYPE_PLUS_VID, /* Name will look like:  vlan0005 */
-+	VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like:  eth1.0005 */
-+	VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like:  vlan5 */
-+	VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like:  eth0.5 */
-+	VLAN_NAME_TYPE_HIGHEST
-+};
-+
-+struct vlan_ioctl_args {
-+	int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
-+	char device1[24];
-+
-+        union {
-+		char device2[24];
-+		int VID;
-+		unsigned int skb_priority;
-+		unsigned int name_type;
-+		unsigned int bind_type;
-+		unsigned int flag; /* Matches vlan_dev_info flags */
-+        } u;
-+
-+	short vlan_qos;
-+};
-+
-+#endif /* !(_LINUX_IF_VLAN_H_) */
diff --git a/pkgs/os-specific/linux/libnl/v1.nix b/pkgs/os-specific/linux/libnl/v1.nix
deleted file mode 100644
index f3f7f3fa732..00000000000
--- a/pkgs/os-specific/linux/libnl/v1.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{stdenv, fetchurl, bison, flex}:
-
-stdenv.mkDerivation rec {
-  name = "libnl-1.1";
-
-  src = fetchurl {
-    url = "${meta.homepage}files/${name}.tar.gz";
-    sha256 = "1hzd48z8h8abkclq90wb7cciynpg3pwgyd0gzb5g12ndnv7s9kim";
-  };
-
-  buildInputs = [ bison flex ];
-  postConfigure = "type -tp flex";
-
-  patches = [
-    ./libnl-1.1-flags.patch
-    ./libnl-1.1-glibc-2.8-ULONG_MAX.patch
-    ./libnl-1.1-minor-leaks.patch
-    ./libnl-1.1-vlan-header.patch
-  ];
-
-  meta = {
-    homepage = "http://www.infradead.org/~tgr/libnl/";
-    description = "Linux NetLink interface library";
-    maintainers = [ stdenv.lib.maintainers.urkud ];
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/libnl/v2.nix b/pkgs/os-specific/linux/libnl/v2.nix
deleted file mode 100644
index cb5c022c3d4..00000000000
--- a/pkgs/os-specific/linux/libnl/v2.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{stdenv, fetchurl, bison, flex}:
-
-stdenv.mkDerivation rec {
-  name = "libnl-2.0";
-
-  src = fetchurl {
-    url = "${meta.homepage}files/${name}.tar.gz";
-    sha256 = "173sr25xpsakdvjcg62790v6kwcgxj5r0js2lx6hg89w7n8dqh2s";
-  };
-
-  buildInputs = [ bison flex ];
-
-  meta = {
-    homepage = "http://www.infradead.org/~tgr/libnl/";
-    description = "Linux NetLink interface library";
-    maintainers = [ stdenv.lib.maintainers.urkud ];
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/nfs-utils/default.nix b/pkgs/os-specific/linux/nfs-utils/default.nix
index 4060204d505..42bacd41be0 100644
--- a/pkgs/os-specific/linux/nfs-utils/default.nix
+++ b/pkgs/os-specific/linux/nfs-utils/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, tcpWrapper, utillinux, libcap, libtirpc, libevent, libnfsidmap
+{ fetchurl, stdenv, tcp_wrappers, utillinux, libcap, libtirpc, libevent, libnfsidmap
 , lvm2, e2fsprogs }:
 
 stdenv.mkDerivation rec {
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs =
-    [ tcpWrapper utillinux libcap libtirpc libevent libnfsidmap
+    [ tcp_wrappers utillinux libcap libtirpc libevent libnfsidmap
       lvm2 e2fsprogs
     ];
 
diff --git a/pkgs/os-specific/linux/nvidia-x11/legacy304.nix b/pkgs/os-specific/linux/nvidia-x11/legacy304.nix
new file mode 100644
index 00000000000..ad419610df7
--- /dev/null
+++ b/pkgs/os-specific/linux/nvidia-x11/legacy304.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl, kernel ? null, xlibs, zlib, perl
+, gtk, atk, pango, glib, gdk_pixbuf
+, # Whether to build the libraries only (i.e. not the kernel module or
+  # nvidia-settings).  Used to support 32-bit binaries on 64-bit
+  # Linux.
+  libsOnly ? false
+}:
+
+with stdenv.lib;
+
+let versionNumber = "304.64"; in
+
+stdenv.mkDerivation {
+  name = "nvidia-x11-${versionNumber}${optionalString (!libsOnly) "-${kernel.version}"}";
+
+  builder = ./builder.sh;
+
+  src =
+    if stdenv.system == "i686-linux" then
+      fetchurl {
+        url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}.run";
+        sha256 = "0li27nlhx9bbln9424xpxw46sarjdch2fxpn4kvh0npaywll2ii3";
+      }
+    else if stdenv.system == "x86_64-linux" then
+      fetchurl {
+        url = "http://us.download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-no-compat32.run";
+        sha256 = "1x33f6b9zcsnpjcxlv38l1w0blimsv1y3bbrrzg48wwwb5wvynxl";
+      }
+    else throw "nvidia-x11 does not support platform ${stdenv.system}";
+
+  inherit versionNumber libsOnly;
+
+  kernel = if libsOnly then null else kernel;
+
+  dontStrip = true;
+
+  glPath = stdenv.lib.makeLibraryPath [xlibs.libXext xlibs.libX11 xlibs.libXrandr];
+
+  cudaPath = stdenv.lib.makeLibraryPath [zlib stdenv.gcc.gcc];
+
+  programPath = optionalString (!libsOnly) (stdenv.lib.makeLibraryPath
+    [ gtk atk pango glib gdk_pixbuf xlibs.libXv ] );
+
+  buildInputs = [ perl ];
+
+  meta = {
+    homepage = http://www.nvidia.com/object/unix.html;
+    description = "X.org driver and kernel module for NVIDIA graphics cards";
+    license = "unfree";
+  };
+}
diff --git a/pkgs/os-specific/linux/ov511/ov511-2.30-default.nix b/pkgs/os-specific/linux/ov511/ov511-2.30-default.nix
index 4b2cd1ed5b2..ec9cda0e4d1 100644
--- a/pkgs/os-specific/linux/ov511/ov511-2.30-default.nix
+++ b/pkgs/os-specific/linux/ov511/ov511-2.30-default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, kernel}:
 
 stdenv.mkDerivation {
-  name = "ov511-2.30";
+  name = "ov511-2.30-${kernel.version}";
   builder = ./ov511-2.30-builder.sh;
   src = fetchurl {
     url = http://nixos.org/tarballs/ov511-2.30.tar.bz2;
diff --git a/pkgs/os-specific/linux/ov511/ov511-2.32-builder.sh b/pkgs/os-specific/linux/ov511/ov511-2.32-builder.sh
deleted file mode 100644
index 636b19a95af..00000000000
--- a/pkgs/os-specific/linux/ov511/ov511-2.32-builder.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-source $stdenv/setup
-
-hashname=$(basename $kernel)
-echo $hashname
-if echo "$hashname" | grep -q '^[a-z0-9]\{32\}-'; then
-  hashname=$(echo "$hashname" | cut -c -32)
-fi
-
-stripHash $kernel
-version=$(echo $strippedName | cut -c 7-)-$hashname
-
-echo "version $version"
-
-export version
-
-mkdir -p $out/lib/modules/$version/kernel/drivers/usb/media/
-
-genericBuild
-
-echo "b0rken"
-
-exit 1
diff --git a/pkgs/os-specific/linux/ov511/ov511-2.32-default.nix b/pkgs/os-specific/linux/ov511/ov511-2.32-default.nix
deleted file mode 100644
index 6af69d882db..00000000000
--- a/pkgs/os-specific/linux/ov511/ov511-2.32-default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, kernel}:
-
-stdenv.mkDerivation {
-  name = "ov511-2.32";
-  builder = ./ov511-2.32-builder.sh;
-  src = fetchurl {
-    url = http://www.ovcam.org/ov511/download/2.xx/distros/ov511-2.32.tar.bz2;
-    md5 = "6a08025311649356242761641a1df0f2";
-  };
-  patches = [./ov511-kernel.patch ./ov511-2.32.patch ./ov511-2.32-kdir.patch];
-  inherit kernel;
-  NIX_GLIBC_FLAGS_SET=1;
-}
diff --git a/pkgs/os-specific/linux/ov511/ov511-2.32.patch b/pkgs/os-specific/linux/ov511/ov511-2.32.patch
deleted file mode 100644
index 55e78afaeaa..00000000000
--- a/pkgs/os-specific/linux/ov511/ov511-2.32.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -rc ov511-2.32/tuner.c ov511-2.32.new/tuner.c
-*** ov511-2.32/tuner.c	Mon Apr  3 15:16:27 2006
---- ov511-2.32.new/tuner.c	Mon Jul 17 00:26:57 2006
-***************
-*** 1029,1035 ****
-  static struct i2c_client client_template =
-  {
-  	.name   = "(tuner unset)",
-- 	.flags  = I2C_CLIENT_ALLOW_USE,
-          .driver = &driver,
-  };
-  
---- 1029,1034 ----
diff --git a/pkgs/os-specific/linux/pam_ssh_agent_auth/default.nix b/pkgs/os-specific/linux/pam_ssh_agent_auth/default.nix
index 34600870671..eae62c9e197 100644
--- a/pkgs/os-specific/linux/pam_ssh_agent_auth/default.nix
+++ b/pkgs/os-specific/linux/pam_ssh_agent_auth/default.nix
@@ -1,15 +1,23 @@
 { stdenv, fetchurl, pam, openssl, perl }:
 
 stdenv.mkDerivation rec {
-  name = "pam_ssh_agent_auth-0.9.3";
+  name = "pam_ssh_agent_auth-0.9.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/pamsshagentauth/${name}.tar.bz2";
-    sha256 = "19p5mzplnr9g9vlp16nipf5rjw4v8zncvimarwgix958yml7j08h";
+    sha256 = "1a8cv223f30mvkxnyh9hk6kya0ynkwwkc5nhlz3rcqhxfw0fcva9";
   };
 
+  patches =
+    [ # Allow multiple colon-separated authorized keys files to be
+      # specified in the file= option.
+      ./multiple-key-files.patch
+    ];
+
   buildInputs = [ pam openssl perl ];
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://pamsshagentauth.sourceforge.net/;
     description = "PAM module for authentication through the SSH agent";
diff --git a/pkgs/os-specific/linux/pam_ssh_agent_auth/multiple-key-files.patch b/pkgs/os-specific/linux/pam_ssh_agent_auth/multiple-key-files.patch
new file mode 100644
index 00000000000..dc97b7d54f7
--- /dev/null
+++ b/pkgs/os-specific/linux/pam_ssh_agent_auth/multiple-key-files.patch
@@ -0,0 +1,338 @@
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/iterate_ssh_agent_keys.c pam_ssh_agent_auth-0.9.4/iterate_ssh_agent_keys.c
+--- pam_ssh_agent_auth-0.9.4-orig/iterate_ssh_agent_keys.c	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/iterate_ssh_agent_keys.c	2012-12-17 19:29:16.014226336 +0000
+@@ -69,14 +69,14 @@
+     return cookie;
+ }
+ 
+-int
++const char *
+ pamsshagentauth_find_authorized_keys(uid_t uid)
+ {
+     Identity *id;
+     Key *key;
+     AuthenticationConnection *ac;
+     char *comment;
+-    uint8_t retval = 0;
++    const char *key_file = 0;
+ 
+     OpenSSL_add_all_digests();
+     session_id2 = pamsshagentauth_session_id2_gen();
+@@ -90,13 +90,11 @@
+                 id->key = key;
+                 id->filename = comment;
+                 id->ac = ac;
+-                if(userauth_pubkey_from_id(id)) {
+-                    retval = 1;
+-                }
++                key_file = userauth_pubkey_from_id(id);
+                 pamsshagentauth_xfree(id->filename);
+                 pamsshagentauth_key_free(id->key);
+                 pamsshagentauth_xfree(id);
+-                if(retval == 1)
++                if(key_file)
+                     break;
+             }
+         }
+@@ -107,5 +105,5 @@
+     }
+     pamsshagentauth_xfree(session_id2);
+     EVP_cleanup();
+-    return retval;
++    return key_file;
+ }
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/iterate_ssh_agent_keys.h pam_ssh_agent_auth-0.9.4/iterate_ssh_agent_keys.h
+--- pam_ssh_agent_auth-0.9.4-orig/iterate_ssh_agent_keys.h	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/iterate_ssh_agent_keys.h	2012-12-17 19:28:57.454334806 +0000
+@@ -31,6 +31,6 @@
+ #ifndef _ITERATE_SSH_AGENT_KEYS_H
+ #define _ITERATE_SSH_AGENT_KEYS_H
+ 
+-int pamsshagentauth_find_authorized_keys(uid_t);
++const char * pamsshagentauth_find_authorized_keys(uid_t);
+ 
+ #endif
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/pam_ssh_agent_auth.c pam_ssh_agent_auth-0.9.4/pam_ssh_agent_auth.c
+--- pam_ssh_agent_auth-0.9.4-orig/pam_ssh_agent_auth.c	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/pam_ssh_agent_auth.c	2012-12-17 19:30:24.013830673 +0000
+@@ -60,7 +60,6 @@
+ 
+ #define strncasecmp_literal(A,B) strncasecmp( A, B, sizeof(B) - 1)
+ 
+-char           *authorized_keys_file = NULL;
+ uint8_t         allow_user_owned_authorized_keys_file = 0;
+ 
+ #if ! HAVE___PROGNAME || HAVE_BUNDLE
+@@ -161,15 +160,13 @@
+         goto cleanexit;
+     }
+ 
+-    if(authorized_keys_file_input && user) {
+-        /*
+-         * user is the name of the target-user, and so must be used for validating the authorized_keys file
+-         */
+-        parse_authorized_key_file(user, authorized_keys_file_input);
+-    } else {
+-        pamsshagentauth_verbose("Using default file=/etc/security/authorized_keys");
+-        authorized_keys_file = pamsshagentauth_xstrdup("/etc/security/authorized_keys");
+-    }
++    if (!authorized_keys_file_input || !user)
++        authorized_keys_file_input = "/etc/security/authorized_keys";
++
++    /*
++     * user is the name of the target-user, and so must be used for validating the authorized_keys file
++     */
++    parse_authorized_key_files(user, authorized_keys_file_input);
+ 
+     /* 
+      * PAM_USER and PAM_RUSER do not necessarily have to get set by the calling application, and we may be unable to divine the latter.
+@@ -177,16 +174,17 @@
+      */
+ 
+     if(user && strlen(ruser) > 0) {
+-        pamsshagentauth_verbose("Attempting authentication: `%s' as `%s' using %s", ruser, user, authorized_keys_file);
++        pamsshagentauth_verbose("Attempting authentication: `%s' as `%s' using %s", ruser, user, authorized_keys_file_input);
+ 
+         /* 
+          * this pw_uid is used to validate the SSH_AUTH_SOCK, and so must be the uid of the ruser invoking the program, not the target-user
+          */
+-        if(pamsshagentauth_find_authorized_keys(getpwnam(ruser)->pw_uid)) {
+-            pamsshagentauth_logit("Authenticated: `%s' as `%s' using %s", ruser, user, authorized_keys_file);
++        const char *key_file;
++        if((key_file = pamsshagentauth_find_authorized_keys(getpwnam(ruser)->pw_uid))) {
++            pamsshagentauth_logit("Authenticated: `%s' as `%s' using %s", ruser, user, key_file);
+             retval = PAM_SUCCESS;
+         } else {
+-            pamsshagentauth_logit("Failed Authentication: `%s' as `%s' using %s", ruser, user, authorized_keys_file);
++            pamsshagentauth_logit("Failed Authentication: `%s' as `%s' using %s", ruser, user, authorized_keys_file_input);
+         }
+     } else {
+         pamsshagentauth_logit("No %s specified, cannot continue with this form of authentication", (user) ? "ruser" : "user" );
+@@ -198,7 +196,7 @@
+     free(__progname);
+ #endif
+ 
+-    free(authorized_keys_file);
++    free_authorized_key_files();
+ 
+     return retval;
+ }
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/pam_ssh_agent_auth.pod pam_ssh_agent_auth-0.9.4/pam_ssh_agent_auth.pod
+--- pam_ssh_agent_auth-0.9.4-orig/pam_ssh_agent_auth.pod	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/pam_ssh_agent_auth.pod	2012-12-17 19:52:35.968965448 +0000
+@@ -26,7 +26,7 @@
+ 
+ =item file=<path to authorized_keys>
+ 
+-Specify the path to the authorized_keys file(s) you would like to use for authentication. Subject to tilde and % EXPANSIONS (below) 
++Specify the path(s) to the authorized_keys file(s) you would like to use for authentication. Subject to tilde and % EXPANSIONS (below). Paths are separated using colons.
+ 
+ =item allow_user_owned_authorized_keys_file
+ 
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/pam_user_authorized_keys.c pam_ssh_agent_auth-0.9.4/pam_user_authorized_keys.c
+--- pam_ssh_agent_auth-0.9.4-orig/pam_user_authorized_keys.c	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/pam_user_authorized_keys.c	2012-12-17 19:32:20.830157313 +0000
+@@ -79,66 +79,96 @@
+ 
+ #include "identity.h"
+ #include "pam_user_key_allowed2.h"
++#include "pam_user_authorized_keys.h"
+ 
+-extern char    *authorized_keys_file;
++#define MAX_AUTHORIZED_KEY_FILES 16
++
++char           *authorized_keys_files[MAX_AUTHORIZED_KEY_FILES];
++unsigned int    nr_authorized_keys_files = 0;
+ extern uint8_t  allow_user_owned_authorized_keys_file;
+ uid_t           authorized_keys_file_allowed_owner_uid;
+ 
+ void
+-parse_authorized_key_file(const char *user, const char *authorized_keys_file_input)
++parse_authorized_key_files(const char *user, const char *authorized_keys_file_input)
+ {
+-    char            fqdn[HOST_NAME_MAX] = "";
++    const char      *pos = authorized_keys_file_input;
+     char            hostname[HOST_NAME_MAX] = "";
+-    char            auth_keys_file_buf[4096] = "";
+-    char           *slash_ptr = NULL;
+-    char            owner_uname[128] = "";
+-    size_t          owner_uname_len = 0;
+-
+-    /*
+-     * temporary copy, so that both tilde expansion and percent expansion both get to apply to the path
+-     */
+-    strncat(auth_keys_file_buf, authorized_keys_file_input, sizeof(auth_keys_file_buf) - 1);
++    char            fqdn[HOST_NAME_MAX] = "";
++
++#if HAVE_GETHOSTNAME
++    *hostname = '\0';
++    gethostname(fqdn, HOST_NAME_MAX);
++    strncat(hostname, fqdn, strcspn(fqdn,"."));
++#endif
+ 
+-    if(allow_user_owned_authorized_keys_file)
+-        authorized_keys_file_allowed_owner_uid = getpwnam(user)->pw_uid;
++    while (pos) {
++        const char     *colon = strchr(pos, ':');
++        char            auth_keys_file_buf[4096] = "";
++        char           *slash_ptr = NULL;
++        char            owner_uname[128] = "";
++        size_t          owner_uname_len = 0;
++
++        strncat(auth_keys_file_buf, pos, sizeof(auth_keys_file_buf) - 1);
++        if (colon) {
++            auth_keys_file_buf[colon - pos] = 0;
++            pos = colon + 1;
++        } else {
++            pos = 0;
++        }
+ 
+-    if(*auth_keys_file_buf == '~') {
+-        if(*(auth_keys_file_buf+1) == '/') {
++        if(allow_user_owned_authorized_keys_file)
+             authorized_keys_file_allowed_owner_uid = getpwnam(user)->pw_uid;
++
++        if(*auth_keys_file_buf == '~') {
++            if(*(auth_keys_file_buf+1) == '/') {
++                authorized_keys_file_allowed_owner_uid = getpwnam(user)->pw_uid;
++            }
++            else {
++                slash_ptr = strchr(auth_keys_file_buf,'/');
++                if(!slash_ptr)
++                    pamsshagentauth_fatal("cannot expand tilde in path without a `/'");
++
++                owner_uname_len = slash_ptr - auth_keys_file_buf - 1;
++                if(owner_uname_len > (sizeof(owner_uname) - 1) ) 
++                    pamsshagentauth_fatal("Username too long");
++
++                strncat(owner_uname, auth_keys_file_buf + 1, owner_uname_len);
++                if(!authorized_keys_file_allowed_owner_uid)
++                    authorized_keys_file_allowed_owner_uid = getpwnam(owner_uname)->pw_uid;
++            }
++            char *tmp = pamsshagentauth_tilde_expand_filename(auth_keys_file_buf, authorized_keys_file_allowed_owner_uid);
++            strncpy(auth_keys_file_buf, tmp, sizeof(auth_keys_file_buf) - 1 );
++            pamsshagentauth_xfree(tmp);
+         }
+-        else {
+-            slash_ptr = strchr(auth_keys_file_buf,'/');
+-            if(!slash_ptr)
+-                pamsshagentauth_fatal("cannot expand tilde in path without a `/'");
+-
+-            owner_uname_len = slash_ptr - auth_keys_file_buf - 1;
+-            if(owner_uname_len > (sizeof(owner_uname) - 1) ) 
+-                pamsshagentauth_fatal("Username too long");
+-
+-            strncat(owner_uname, auth_keys_file_buf + 1, owner_uname_len);
+-            if(!authorized_keys_file_allowed_owner_uid)
+-                authorized_keys_file_allowed_owner_uid = getpwnam(owner_uname)->pw_uid;
++
++        if(strstr(auth_keys_file_buf, "%h")) {
++            authorized_keys_file_allowed_owner_uid = getpwnam(user)->pw_uid;
+         }
+-        authorized_keys_file = pamsshagentauth_tilde_expand_filename(auth_keys_file_buf, authorized_keys_file_allowed_owner_uid);
+-        strncpy(auth_keys_file_buf, authorized_keys_file, sizeof(auth_keys_file_buf) - 1 );
+-        pamsshagentauth_xfree(authorized_keys_file) /* when we percent_expand later, we'd step on this, so free it immediately */;
+-    }
+ 
+-    if(strstr(auth_keys_file_buf, "%h")) {
+-        authorized_keys_file_allowed_owner_uid = getpwnam(user)->pw_uid;
++        if (nr_authorized_keys_files >= MAX_AUTHORIZED_KEY_FILES)
++            pamsshagentauth_fatal("Too many authorized key files");
++        authorized_keys_files[nr_authorized_keys_files++] =
++            pamsshagentauth_percent_expand(auth_keys_file_buf, "h", getpwnam(user)->pw_dir, "H", hostname, "f", fqdn, "u", user, NULL);
+     }
++}
+ 
+-#if HAVE_GETHOSTNAME
+-    *hostname = '\0';
+-    gethostname(fqdn, HOST_NAME_MAX);
+-    strncat(hostname, fqdn, strcspn(fqdn,"."));
+-#endif
+-    authorized_keys_file = pamsshagentauth_percent_expand(auth_keys_file_buf, "h", getpwnam(user)->pw_dir, "H", hostname, "f", fqdn, "u", user, NULL);
++void
++free_authorized_key_files()
++{
++    unsigned int n;
++    for (n = 0; n < nr_authorized_keys_files; n++)
++        free(authorized_keys_files[n]);
++    nr_authorized_keys_files = 0;
+ }
+ 
+-int
++const char *
+ pam_user_key_allowed(Key * key)
+ {
+-    return pam_user_key_allowed2(getpwuid(authorized_keys_file_allowed_owner_uid), key, authorized_keys_file)
+-        || pam_user_key_allowed2(getpwuid(0), key, authorized_keys_file);
++    unsigned int n;
++    for (n = 0; n < nr_authorized_keys_files; n++) {
++        if (pam_user_key_allowed2(getpwuid(authorized_keys_file_allowed_owner_uid), key, authorized_keys_files[n])
++            || pam_user_key_allowed2(getpwuid(0), key, authorized_keys_files[n]))
++            return authorized_keys_files[n];
++    }
++    return 0;
+ }
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/pam_user_authorized_keys.h pam_ssh_agent_auth-0.9.4/pam_user_authorized_keys.h
+--- pam_ssh_agent_auth-0.9.4-orig/pam_user_authorized_keys.h	2010-01-13 02:17:01.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/pam_user_authorized_keys.h	2012-12-17 19:24:34.477894517 +0000
+@@ -28,11 +28,12 @@
+  */
+ 
+ 
+-#ifndef _PAM_USER_KEY_ALLOWED_H
+-#define _PAM_USER_KEY_ALLOWED_H
++#ifndef _PAM_USER_AUTHORIZED_KEYS_H
++#define _PAM_USER_AUTHORIZED_KEYS_H
+ 
+ #include "identity.h"
+-int pam_user_key_allowed(Key *);
+-void parse_authorized_key_file(const char *, const char *);
++const char * pam_user_key_allowed(Key *);
++void parse_authorized_key_files(const char *, const char *);
++void free_authorized_key_files();
+ 
+ #endif
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/userauth_pubkey_from_id.c pam_ssh_agent_auth-0.9.4/userauth_pubkey_from_id.c
+--- pam_ssh_agent_auth-0.9.4-orig/userauth_pubkey_from_id.c	2012-06-28 01:47:49.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/userauth_pubkey_from_id.c	2012-12-17 19:27:30.813843933 +0000
+@@ -51,7 +51,7 @@
+ extern u_char  *session_id2;
+ extern uint8_t  session_id_len;
+ 
+-int
++const char *
+ userauth_pubkey_from_id(Identity * id)
+ {
+     Buffer          b = { 0 };
+@@ -59,11 +59,12 @@
+     u_char         *pkblob = NULL, *sig = NULL;
+     u_int           blen = 0, slen = 0;
+     int             authenticated = 0;
++    const char     *key_file;
+ 
+     pkalg = (char *) key_ssh_name(id->key);
+ 
+     /* first test if this key is even allowed */
+-    if(! pam_user_key_allowed(id->key))
++    if(!(key_file = pam_user_key_allowed(id->key)))
+         goto user_auth_clean_exit;
+ 
+     if(pamsshagentauth_key_to_blob(id->key, &pkblob, &blen) == 0)
+@@ -96,5 +97,5 @@
+     if(pkblob != NULL)
+         pamsshagentauth_xfree(pkblob);
+     CRYPTO_cleanup_all_ex_data();
+-    return authenticated;
++    return authenticated ? key_file : 0;
+ }
+diff -ru -x '*~' pam_ssh_agent_auth-0.9.4-orig/userauth_pubkey_from_id.h pam_ssh_agent_auth-0.9.4/userauth_pubkey_from_id.h
+--- pam_ssh_agent_auth-0.9.4-orig/userauth_pubkey_from_id.h	2010-01-13 02:17:01.000000000 +0000
++++ pam_ssh_agent_auth-0.9.4/userauth_pubkey_from_id.h	2012-12-17 19:25:54.893412987 +0000
+@@ -32,6 +32,6 @@
+ #define _USERAUTH_PUBKEY_FROM_ID_H
+ 
+ #include <identity.h>
+-int userauth_pubkey_from_id(Identity *);
++const char * userauth_pubkey_from_id(Identity *);
+ 
+ #endif
diff --git a/pkgs/os-specific/linux/sepolgen/default.nix b/pkgs/os-specific/linux/sepolgen/default.nix
deleted file mode 100644
index a17a4153c47..00000000000
--- a/pkgs/os-specific/linux/sepolgen/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ stdenv, fetchurl, python }:
-stdenv.mkDerivation rec {
-
-  name = "sepolgen-${version}";
-  version = "1.0.23";
-
-  src = fetchurl {
-    url = http://userspace.selinuxproject.org/releases/20101221/devel/sepolgen-1.0.23.tar.gz;
-    sha256 = "04d11l091iclp8lnay9as7y473ydrjz7171h95ddsbn0ihj5if2p";
-  };
-
-  buildInputs = [ python ];
-  preBuild = '' makeFlags="$makeFlags DESTDIR=$out PACKAGEDIR=$out/lib/${python.libPrefix}/site-packages/sepolgen" '';
-
-  meta = with stdenv.lib; {
-    homepage = http://userspace.selinuxproject.org/;
-    description = "Python module for SELinux policy generation";
-    license = licenses.gpl2;
-    maintainers = [ maintainers.phreedom ];
-    platforms = platforms.linux;
-  };
-}
\ No newline at end of file
diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix
index 29d56a60e95..c31fc456d44 100644
--- a/pkgs/os-specific/linux/spl/default.nix
+++ b/pkgs/os-specific/linux/spl/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, kernel, perl, autoconf, automake, libtool, coreutils, gawk }:
 
 stdenv.mkDerivation {
-  name = "spl-0.6.0-rc12";
+  name = "spl-0.6.0-rc12-${kernel.version}";
   src = fetchurl {
     url = http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc12.tar.gz;
     sha256 = "166853pqa294f78mn4j4x9pri79lyv3j2h8m9fzhfy7d7gxfqljk";
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index bab8dfa4a89..a207213d12d 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -1,28 +1,27 @@
 { stdenv, fetchurl, pkgconfig, intltool, gperf, libcap, dbus, kmod
-, xz, pam, acl, cryptsetup, libuuid, m4, utillinux, usbutils, pciutils
+, xz, pam, acl, cryptsetup, libuuid, m4, utillinux
 , glib, kbd, libxslt, coreutils, libgcrypt
 }:
 
 assert stdenv.gcc.libc or null != null;
 
 stdenv.mkDerivation rec {
-  name = "systemd-195";
+  name = "systemd-196";
 
   src = fetchurl {
     url = "http://www.freedesktop.org/software/systemd/${name}.tar.xz";
-    sha256 = "00v3haymdxhjk71pqp17irw9pm5ivfvz35ibvw41v5zdhj5il179";
+    sha256 = "1gz4an5havzwzp7xsinn01prwvf51hgipb8pbciri0fxlmcadm3b";
   };
 
   patches =
     [ ./reexec.patch
       ./ignore-duplicates.patch
       ./crypt-devices-are-ready.patch
-      ./listunitfiles-abort.patch
     ];
 
   buildInputs =
     [ pkgconfig intltool gperf libcap dbus kmod xz pam acl
-      /* cryptsetup */ libuuid m4 usbutils pciutils glib libxslt libgcrypt
+      /* cryptsetup */ libuuid m4 glib libxslt libgcrypt
     ];
 
   configureFlags =
@@ -36,7 +35,6 @@ stdenv.mkDerivation rec {
       "--with-dbussystemservicedir=$(out)/share/dbus-1/system-services"
       "--with-dbussessionservicedir=$(out)/share/dbus-1/services"
       "--with-firmware-path=/root/test-firmware:/var/run/current-system/firmware"
-      "--with-pci-ids-path=${pciutils}/share/pci.ids"
       "--with-tty-gid=3" # tty in NixOS has gid 3
     ];
 
@@ -52,6 +50,9 @@ stdenv.mkDerivation rec {
           --replace /sbin/swapoff ${utillinux}/sbin/swapoff \
           --replace /sbin/fsck ${utillinux}/sbin/fsck
       done
+
+      substituteInPlace src/journal/catalog.c \
+        --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/
     '';
 
   NIX_CFLAGS_COMPILE =
@@ -66,7 +67,12 @@ stdenv.mkDerivation rec {
       "-DFS_NOCOW_FL=0x00800000"
     ];
 
-  makeFlags = "CPPFLAGS=-I${stdenv.gcc.libc}/include";
+  # Use /var/lib/udev rather than /etc/udev for the generated hardware
+  # database.  Upstream doesn't want this (see commit
+  # 1e1954f53386cb773e2a152748dd31c4d36aa2d8) because using /var is
+  # forbidden in early boot, but in NixOS the initrd guarantees that
+  # /var is mounted.
+  makeFlags = "CPPFLAGS=-I${stdenv.gcc.libc}/include hwdb_bin=/var/lib/udev/hwdb.bin";
 
   installFlags = "localstatedir=$(TMPDIR)/var sysconfdir=$(out)/etc sysvinitdir=$(TMPDIR)/etc/init.d";
 
@@ -88,6 +94,8 @@ stdenv.mkDerivation rec {
       for i in $out/share/dbus-1/system-services/*.service; do
         substituteInPlace $i --replace /bin/false ${coreutils}/bin/false
       done
+
+      rm -rf $out/etc/rpm
     ''; # */
 
   enableParallelBuilding = true;
diff --git a/pkgs/os-specific/linux/systemd/listunitfiles-abort.patch b/pkgs/os-specific/linux/systemd/listunitfiles-abort.patch
deleted file mode 100644
index 4bbb0a9b1be..00000000000
--- a/pkgs/os-specific/linux/systemd/listunitfiles-abort.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index ed9784b..6d045cc 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -491,7 +491,6 @@ static DBusMessage *message_from_file_changes(
-         return reply;
- 
- oom:
--        dbus_message_unref(reply);
-         return NULL;
- }
- 
-@@ -1432,7 +1431,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 r = unit_file_get_list(m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER, NULL, h);
-                 if (r < 0) {
-                         unit_file_list_free(h);
--                        dbus_message_unref(reply);
-                         return bus_send_error_reply(connection, message, NULL, r);
-                 }
- 
diff --git a/pkgs/os-specific/linux/tcp-wrapper/builder.sh b/pkgs/os-specific/linux/tcp-wrappers/builder.sh
index 7ea574fcf23..7ea574fcf23 100644
--- a/pkgs/os-specific/linux/tcp-wrapper/builder.sh
+++ b/pkgs/os-specific/linux/tcp-wrappers/builder.sh
diff --git a/pkgs/os-specific/linux/tcp-wrapper/default.nix b/pkgs/os-specific/linux/tcp-wrappers/default.nix
index a3f79cd05a8..a3f79cd05a8 100644
--- a/pkgs/os-specific/linux/tcp-wrapper/default.nix
+++ b/pkgs/os-specific/linux/tcp-wrappers/default.nix
diff --git a/pkgs/os-specific/linux/upstart/cfgdir.patch b/pkgs/os-specific/linux/upstart/cfgdir.patch
deleted file mode 100644
index 2a29b36412c..00000000000
--- a/pkgs/os-specific/linux/upstart/cfgdir.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -rc upstart-0.3.0-orig/init/main.c upstart-0.3.0/init/main.c
-*** upstart-0.3.0-orig/init/main.c	2006-10-13 14:35:16.000000000 +0200
---- upstart-0.3.0/init/main.c	2006-11-19 21:41:01.000000000 +0100
-***************
-*** 206,215 ****
-  	control_open ();
-  
-  	/* Read configuration */
-! 	cfg_watch_dir (NULL, CFG_DIR, NULL);
-  
-  	/* Set the PATH environment variable */
-! 	setenv ("PATH", PATH, TRUE);
-  
-  
-  	/* Generate and run the startup event or read the state from the
---- 206,217 ----
-  	control_open ();
-  
-  	/* Read configuration */
-!         char *cfg_dir = getenv("UPSTART_CFG_DIR");
-!         if (!cfg_dir) cfg_dir = CFG_DIR;
-! 	cfg_watch_dir (NULL, cfg_dir, NULL);
-  
-  	/* Set the PATH environment variable */
-! 	/* setenv ("PATH", PATH, TRUE); */
-  
-  
-  	/* Generate and run the startup event or read the state from the
-diff -rc upstart-0.3.0-orig/util/initctl.c upstart-0.3.0/util/initctl.c
-*** upstart-0.3.0-orig/util/initctl.c	2006-10-13 16:18:06.000000000 +0200
---- upstart-0.3.0/util/initctl.c	2006-11-20 16:53:21.000000000 +0100
-***************
-*** 95,105 ****
-  		} else if (! strcmp (command->command, "stop")) {
-  			msg.type = UPSTART_JOB_STOP;
-  			msg.job_stop.name = *arg;
-- 			break;
-  		} else if (! strcmp (command->command, "status")) {
-  			msg.type = UPSTART_JOB_QUERY;
-  			msg.job_stop.name = *arg;
-- 			break;
-  		}
-  
-  		/* Send the message */
---- 95,103 ----
diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix
index ae5727568f2..35d01739a2a 100644
--- a/pkgs/os-specific/linux/util-linux/default.nix
+++ b/pkgs/os-specific/linux/util-linux/default.nix
@@ -21,10 +21,13 @@ stdenv.mkDerivation rec {
   # (/sbin/mount.*) through an environment variable, but that's
   # somewhat risky because we have to consider that mount can setuid
   # root...
+  # --enable-libmount-mount  fixes the behaviour being /etc/mtab a symlink to /proc/monunts
+  #     http://pl.digipedia.org/usenet/thread/19513/1924/
   configureFlags = ''
     --disable-use-tty-group
     --enable-write
     --enable-fs-paths-default=/var/setuid-wrappers:/var/run/current-system/sw/sbin:/sbin
+    --enable-libmount-mount
     ${if ncurses == null then "--without-ncurses" else ""}
   '';
 
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index 1768581d8f9..f2b701695ff 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -1,7 +1,8 @@
 { stdenv, fetchurl, kernel, spl, perl, autoconf, automake, libtool, zlib, libuuid, coreutils, utillinux }:
 
 stdenv.mkDerivation {
-  name = "zfs-0.6.0-rc12";
+  name = "zfs-0.6.0-rc12-${kernel.version}";
+
   src = fetchurl {
     url = http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc12.tar.gz;
     sha256 = "1mipy6v63y8z3c5chn813x8c2r8mwyja1v19dvars3j85105xf1y";
@@ -11,16 +12,20 @@ stdenv.mkDerivation {
 
   buildInputs = [ kernel spl perl autoconf automake libtool zlib libuuid coreutils ];
 
+  # for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
+  NIX_CFLAGS_LINK = "-lgcc_s";
   NIX_CFLAGS_COMPILE = "-I${kernel}/lib/modules/${kernel.modDirVersion}/build/include/generated";
 
   preConfigure = ''
     ./autogen.sh
 
-    substituteInPlace ./module/zfs/zfs_ctldir.c  --replace "umount -t zfs"   "${utillinux}/bin/umount -t zfs"
-    substituteInPlace ./module/zfs/zfs_ctldir.c  --replace "mount -t zfs"    "${utillinux}/bin/mount -t zfs"
-    substituteInPlace ./lib/libzfs/libzfs_mount.c  --replace "/bin/umount"   "${utillinux}/bin/umount"
-    substituteInPlace ./lib/libzfs/libzfs_mount.c  --replace "/bin/mount"    "${utillinux}/bin/mount"
-    substituteInPlace ./udev/rules.d/*           --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id"
+    substituteInPlace ./module/zfs/zfs_ctldir.c    --replace "umount -t zfs"     "${utillinux}/bin/umount -t zfs"
+    substituteInPlace ./module/zfs/zfs_ctldir.c    --replace "mount -t zfs"      "${utillinux}/bin/mount -t zfs"
+    substituteInPlace ./lib/libzfs/libzfs_mount.c  --replace "/bin/umount"       "${utillinux}/bin/umount"
+    substituteInPlace ./lib/libzfs/libzfs_mount.c  --replace "/bin/mount"        "${utillinux}/bin/mount"
+    substituteInPlace ./udev/rules.d/*             --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id"
+    substituteInPlace ./cmd/ztest/ztest.c          --replace "/usr/sbin/ztest"   "$out/sbin/ztest"
+    substituteInPlace ./cmd/ztest/ztest.c          --replace "/usr/sbin/zdb"     "$out/sbin/zdb"
   '';
 
   configureFlags = ''
diff --git a/pkgs/servers/gpm/1.99.6.nix b/pkgs/servers/gpm/1.99.6.nix
deleted file mode 100644
index 3874e4adfbd..00000000000
--- a/pkgs/servers/gpm/1.99.6.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-args : with args; 
-rec {
-  src = fetchurl {
-    url = http://linux.schottelius.org/gpm/archives/gpm-1.99.6.tar.lzma;
-    sha256 = "14zxx7nx40k8b0bmwhxfyv20xrdi8cg9fxmv8ylsx661lvizqsg3";
-  };
-
-  buildInputs = [lzma flex bison ncurses];
-  configureFlags = [];
-
-  /* doConfigure should be specified separately */
-  phaseNames = ["preConfigure" "doConfigure" "doMakeInstall"];
-
-  preConfigure = fullDepEntry (''
-    sed -e 's/[$](MKDIR)/mkdir -p /' -i doc/Makefile.in
-    sed -e 's/gpm2//' -i Makefile.in
-  '') ["addInputs" "doUnpack" "minInit"];
-      
-  name = "gpm-" + version;
-  meta = {
-    description = "Mouse daemon";
-  };
-}
diff --git a/pkgs/servers/http/4store/default.nix b/pkgs/servers/http/4store/default.nix
index 08d671d960e..4854f9e18dd 100644
--- a/pkgs/servers/http/4store/default.nix
+++ b/pkgs/servers/http/4store/default.nix
@@ -3,8 +3,8 @@ x@{builderDefsPackage
   glib, libxml2, pcre, avahi,
   readline, ncurses, expat,
   zlib, pkgconfig, which,
-  perl,
-  db_dir ? "/var/lib/4store"
+  perl, libuuid, gmp, mpfr
+  , db_dir ? "/var/lib/4store"
   , ...}:
 builderDefsPackage
 (a :  
@@ -28,9 +28,9 @@ rec {
   doFixConfigure = a.fullDepEntry ''
     sed -e 's@#! */bin/bash@#! ${a.stdenv.shell}@' -i configure
     find . -name Makefile -exec sed -e "s@/usr/local@$out@g" -i '{}' ';'
-    sed -e '/\/var\/lib\/4store/d' -i src/utilities/Makefile
     
     sed -e 's@/var/lib/4store@${db_dir}@g' -i src/common/params.h src/utilities/*
+    sed -e '/FS_STORE_ROOT/d' -i src/utilities/Makefile*
   '' ["minInit" "doUnpack"];
 
   fixInterpreter = (a.doPatchShebangs "$out/bin");
@@ -46,4 +46,3 @@ rec {
       linux;
   };
 }) x
-
diff --git a/pkgs/servers/http/4store/src-for-default.nix b/pkgs/servers/http/4store/src-for-default.nix
index a8624ab40ab..7076b921911 100644
--- a/pkgs/servers/http/4store/src-for-default.nix
+++ b/pkgs/servers/http/4store/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="v1.0.3";
-   name="4store-v1.0.3";
-   hash="1d3n2xgqrq2kgigql3slxw1w2bml3b57xa7h6x9dbngxcz11xg22";
+   version="v1.1.5";
+   name="4store-v1.1.5";
+   hash="0nwckvf8xqwvc2h3v6s1rvmxvcx2xrjy6yapghc052180jw6zp9b";
    url="http://4store.org/download/4store-${version}.tar.gz";
-   advertisedUrl="http://4store.org/download/4store-v1.0.3.tar.gz";
+   advertisedUrl="http://4store.org/download/4store-v1.1.5.tar.gz";
   
   
 }
diff --git a/pkgs/servers/http/couchdb/src-for-default.nix b/pkgs/servers/http/couchdb/src-for-default.nix
index 0c174feed8d..6e07077d333 100644
--- a/pkgs/servers/http/couchdb/src-for-default.nix
+++ b/pkgs/servers/http/couchdb/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="1.1.1";
-   name="couchdb-1.1.1";
-   hash="9d6592aacd4bc139f8c1ccb0ed80f30021cee50eb7f8a1feddf46b6eb963891c";
-   url="mirror://apache/couchdb/${version}/apache-couchdb-${version}.tar.gz";
-   advertisedUrl="http://www.apache.org/dist/couchdb/${version}/apache-couchdb-${version}.tar.gz";
-
-
+   version="1.2.0";
+   name="couchdb-1.2.0";
+   hash="0dswinmg32zn217049dkbx3pab3qwihzmlbc7i6vq7a7lbg4s98g";
+   url="mirror://apache/couchdb/releases/1.2.0/apache-couchdb-${version}.tar.gz";
+   advertisedUrl="http://www.apache.org/dist/couchdb/releases/1.2.0/apache-couchdb-1.2.0.tar.gz";
+  
+  
 }
diff --git a/pkgs/servers/http/myserver/installable-binary.patch b/pkgs/servers/http/myserver/installable-binary.patch
deleted file mode 100644
index 346e76afd5e..00000000000
--- a/pkgs/servers/http/myserver/installable-binary.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-We actually want the `myserver' binary to be installable.  Failing to do that
-it gets an RPATH pointing to $top_builddir/src/.libs.
-
---- myserver-0.10/src/Makefile.in	2010-10-14 12:45:42.000000000 +0200
-+++ myserver-0.10/src/Makefile.in	2011-03-03 22:23:05.000000000 +0100
-@@ -1307,7 +1307,6 @@ libmyserver_la_LIBADD = \
- 		$(INTLLIBS) $(LDFLAGS)
- 
- myserver_CXXFLAGS = $(AM_CXXFLAGS) $(CXXFLAGS) -DHOST_STR=\"$(build)\" -DPREFIX=\"$(prefix)\"
--myserver_LDFLAGS = -static -no-install
- myserver_LDADD = libmyserver.la $(PTHREAD_LIB) $(IDN_LIB) \
- 	$(XNET_LIB) $(DL_LIB) $(ZLIB_LIB) \
- 	$(XML_LIBS) $(INTLLIBS) $(LDFLAGS)
-
diff --git a/pkgs/servers/memcached/default.nix b/pkgs/servers/memcached/default.nix
index 36ce54b53ef..17c674b4d06 100644
--- a/pkgs/servers/memcached/default.nix
+++ b/pkgs/servers/memcached/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, cyrus_sasl, libevent}:
 
 stdenv.mkDerivation {
-  name = "memcached-1.4.13";
+  name = "memcached-1.4.15";
 
   src = fetchurl {
-    url = http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz;
-    sha256 = "0abyy9agjinac56bb1881j3qs6xny7r12slh4wihv2apma3qn2yb";
+    url = http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz;
+    sha256 = "1d7205cp49s379fdy2qz1gz2a5v4nnv18swzmvbascbmgamj35qn";
   };
 
   buildInputs = [cyrus_sasl libevent];
diff --git a/pkgs/servers/monitoring/zabbix/2.0.nix b/pkgs/servers/monitoring/zabbix/2.0.nix
new file mode 100644
index 00000000000..83c8b8c8c7b
--- /dev/null
+++ b/pkgs/servers/monitoring/zabbix/2.0.nix
@@ -0,0 +1,70 @@
+{ stdenv, fetchurl, pkgconfig, postgresql, curl, openssl, zlib, gettext }:
+
+let
+
+  version = "2.0.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/zabbix/zabbix-${version}.tar.gz";
+    sha256 = "0r7pnfdgd3s2zqi2s7zlpjx521m3a6xy3g14q7ykxbz6fsmvxzmn";
+  };
+
+  preConfigure =
+    ''
+      substituteInPlace ./configure \
+        --replace " -static" "" \
+        ${stdenv.lib.optionalString (stdenv.gcc.libc != null) ''
+          --replace /usr/include/iconv.h ${stdenv.gcc.libc}/include/iconv.h
+        ''}
+    '';
+
+in
+
+{
+
+  server = stdenv.mkDerivation {
+    name = "zabbix-${version}";
+
+    inherit src preConfigure;
+
+    configureFlags = "--enable-agent --enable-server --with-postgresql --with-libcurl --with-gettext";
+
+    buildInputs = [ pkgconfig postgresql curl openssl zlib ];
+
+    postInstall =
+      ''
+        mkdir -p $out/share/zabbix
+        cp -prvd frontends/php $out/share/zabbix/php
+        mkdir -p $out/share/zabbix/db/data
+        cp -prvd database/postgresql/data.sql $out/share/zabbix/db/data/data.sql
+        cp -prvd database/postgresql/images.sql $out/share/zabbix/db/data/images_pgsql.sql
+        mkdir -p $out/share/zabbix/db/schema
+        cp -prvd database/postgresql/schema.sql $out/share/zabbix/db/schema/postgresql.sql
+      '';
+
+    meta = {
+      description = "An enterprise-class open source distributed monitoring solution";
+      homepage = http://www.zabbix.com/;
+      license = "GPL";
+      maintainers = [ stdenv.lib.maintainers.eelco ];
+      platforms = stdenv.lib.platforms.linux;
+    };
+  };
+
+  agent = stdenv.mkDerivation {
+    name = "zabbix-agent-${version}";
+
+    inherit src preConfigure;
+
+    configureFlags = "--enable-agent";
+
+    meta = {
+      description = "An enterprise-class open source distributed monitoring solution (client-side agent)";
+      homepage = http://www.zabbix.com/;
+      license = "GPL";
+      maintainers = [ stdenv.lib.maintainers.eelco ];
+      platforms = stdenv.lib.platforms.all;
+    };
+  };
+
+}
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index e2e111a81fb..aa25b49e581 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
 
   makeFlags = "PREFIX=$(out)";
 
+  # commented out until the patch is found
+  # patches = if stdenv.isDarwin then [ ./darwin.patch ] else [];
   meta = {
     homepage = http://redis.io;
     description = "An open source, advanced key-value store";
diff --git a/pkgs/servers/portmap/default.nix b/pkgs/servers/portmap/default.nix
index d7a05261ff2..f2152b65df3 100644
--- a/pkgs/servers/portmap/default.nix
+++ b/pkgs/servers/portmap/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, lib, tcpWrapper
+{ fetchurl, stdenv, lib, tcp_wrappers
 , daemonUser ? false, daemonUID ? false, daemonGID ? false }:
 
 assert daemonUser -> (!daemonUID && !daemonGID);
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     ++ lib.optional (daemonUID != false) "DAEMON_UID=${toString daemonUID}"
     ++ lib.optional (daemonGID != false) "DAEMON_GID=${toString daemonGID}";
 
-  buildInputs = [ tcpWrapper ];
+  buildInputs = [ tcp_wrappers ];
 
   installPhase = ''
     mkdir -p "$out/sbin" "$out/man/man8"
diff --git a/pkgs/servers/sql/mysql55/default.nix b/pkgs/servers/sql/mysql55/default.nix
index a5f588f747d..81514494c07 100644
--- a/pkgs/servers/sql/mysql55/default.nix
+++ b/pkgs/servers/sql/mysql55/default.nix
@@ -15,7 +15,9 @@ stdenv.mkDerivation rec {
     sha256 = "13y7bhjmx4daidvyqjz88yffbswb6rc1khkmiqm896fx3lglkcpr";
   };
 
-  buildInputs = [ cmake bison ncurses openssl readline zlib ];
+  buildInputs = [ cmake bison ncurses openssl readline zlib ]
+     ++ stdenv.lib.optional stdenv.isDarwin perl;
+
 
   enableParallelBuilding = true;
 
@@ -23,6 +25,9 @@ stdenv.mkDerivation rec {
   
   NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
 
+  prePatch = ''
+    sed -i -e "s|/usr/bin/libtool|libtool|" cmake/libutils.cmake
+  '';
   postInstall = ''
     sed -i -e "s|basedir=\"\"|basedir=\"$out\"|" $out/bin/mysql_install_db
     rm -rf $out/mysql-test $out/sql-bench
diff --git a/pkgs/servers/sql/postgresql/8.3.x.nix b/pkgs/servers/sql/postgresql/8.3.x.nix
index 7a153187cd5..713d8537738 100644
--- a/pkgs/servers/sql/postgresql/8.3.x.nix
+++ b/pkgs/servers/sql/postgresql/8.3.x.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, zlib, ncurses, readline }:
 
-let version = "8.3.21"; in
+let version = "8.3.22"; in
 
 stdenv.mkDerivation rec {
   name = "postgresql-${version}";
 
   src = fetchurl {
     url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "1y1lw83jr3v91920xdhd4ypaa5iazmdh4snl5qzq0yq6z3lnsjx6";
+    sha256 = "1iphzr8mpfz050f95vhcji4k22mih3wl65z4559y4hh4kiqg7f0p";
   };
 
   buildInputs = [ zlib ncurses readline ];
diff --git a/pkgs/servers/sql/postgresql/8.4.x.nix b/pkgs/servers/sql/postgresql/8.4.x.nix
index 3500299b50d..eef39aa40d6 100644
--- a/pkgs/servers/sql/postgresql/8.4.x.nix
+++ b/pkgs/servers/sql/postgresql/8.4.x.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, zlib, ncurses, readline }:
 
-let version = "8.4.14"; in
+let version = "8.4.15"; in
 
 stdenv.mkDerivation rec {
   name = "postgresql-${version}";
 
   src = fetchurl {
     url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "0fhk3mmk95p5gwmg2skqv1rfi7ylk8gw195hx8rska7fbdryfwhi";
+    sha256 = "0kdwg598c7ws2bvi5q5qgn2pbvznzpxs63chvp0xj6nzpcdpg0va";
   };
 
   buildInputs = [ zlib ncurses readline ];
diff --git a/pkgs/servers/sql/postgresql/9.0.x.nix b/pkgs/servers/sql/postgresql/9.0.x.nix
index 9993732ebcd..4f87cbd55ae 100644
--- a/pkgs/servers/sql/postgresql/9.0.x.nix
+++ b/pkgs/servers/sql/postgresql/9.0.x.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, zlib, readline }:
 
-let version = "9.0.10"; in
+let version = "9.0.11"; in
 
 stdenv.mkDerivation rec {
   name = "postgresql-${version}";
 
   src = fetchurl {
     url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "0af7in1fp4qxkvzbipz74gxm06x31a9n4z9g91mcis4r015ii523";
+    sha256 = "0b3vw1a1x658famvgsfi1dladrbkc5j3h1ibaasgx9ffqn6xrp56";
   };
 
   buildInputs = [ zlib readline ];
diff --git a/pkgs/servers/sql/postgresql/9.1.x.nix b/pkgs/servers/sql/postgresql/9.1.x.nix
index c8fa9327cf3..83097f52124 100644
--- a/pkgs/servers/sql/postgresql/9.1.x.nix
+++ b/pkgs/servers/sql/postgresql/9.1.x.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, zlib, readline }:
 
-let version = "9.1.6"; in
+let version = "9.1.7"; in
 
 stdenv.mkDerivation rec {
   name = "postgresql-${version}";
 
   src = fetchurl {
     url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "1rridkybr55xw4a1h0ppqwv2x2ffwvmpjai9yzsvk58scb56lfbf";
+    sha256 = "10iw6c6v1s7a00s0dr8agvb2fg2dmdvg84mk05206rb0islyl6fz";
   };
 
   buildInputs = [ zlib readline ];
diff --git a/pkgs/servers/sql/postgresql/9.2.x.nix b/pkgs/servers/sql/postgresql/9.2.x.nix
new file mode 100644
index 00000000000..6341fa952f5
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/9.2.x.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, zlib, readline }:
+
+let version = "9.2.2"; in
+
+stdenv.mkDerivation rec {
+  name = "postgresql-${version}";
+
+  src = fetchurl {
+    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
+    sha256 = "1wzphj8vdqpzaihqmrkm9p4wlfvgr9psg5hnrmzwp5l8m5aai9z1";
+  };
+
+  buildInputs = [ zlib readline ];
+
+  enableParallelBuilding = true;
+
+  LC_ALL = "C";
+
+  postInstall =
+    ''
+      mkdir -p $out/share/man
+      cp -rvd doc/src/sgml/man1 $out/share/man
+    '';
+
+  passthru = {
+    inherit readline;
+    psqlSchema = "9.1";
+  };
+
+  meta = {
+    homepage = http://www.postgresql.org/;
+    description = "A powerful, open source object-relational database system";
+    license = "bsd";
+  };
+}
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 057142a8707..6d231e2083e 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -251,10 +251,7 @@ in
   };
 
   libSM = attrs: attrs
-    // { propagatedBuildInputs = [ xorg.libICE ]; }
-    // args.stdenv.lib.optionalAttrs (args.stdenv.system == "i686-darwin") {
-      configureFlags = "LIBUUID_CFLAGS='' LIBUUID_LIBS=''";
-    };
+    // { propagatedBuildInputs = [ xorg.libICE ]; };
 
   lndir = attrs: attrs // {
     preConfigure = ''
@@ -275,6 +272,14 @@ in
     buildInputs = attrs.buildInputs ++ [xorg.libXrender];
   };
 
+  xinit = attrs: attrs // {
+    configureFlags = "--with-xserver=${xorg.xorgserver}/bin/X";
+    propagatedBuildInputs = [ xorg.xauth ];
+    prePatch = ''
+      sed -i 's|^defaultserverargs="|&-logfile \"$HOME/.xorg.log\"|p' startx.cpp
+    '';
+  };
+
   xwd = attrs: attrs // {
     buildInputs = attrs.buildInputs ++ [xorg.libXt];
   };
diff --git a/pkgs/servers/x11/xorg/xorgserver.sh b/pkgs/servers/x11/xorg/xorgserver.sh
deleted file mode 100644
index 0beb09d61a7..00000000000
--- a/pkgs/servers/x11/xorg/xorgserver.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-# There is a dependency somewhere on `-ldl', which Make treats
-# specially by mapping it to /usr/lib/libdl.so.  That won't work on
-# NixOS, so force Make to search in our own Glibc.
-export VPATH=$(cat ${NIX_GCC}/nix-support/orig-libc)/lib
-
-preConfigure() {
-    unpackFile $mesaSrc
-    configureFlags="$configureFlags --with-mesa-source=$(ls -d $(pwd)/Mesa-*)"
-}
\ No newline at end of file
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index c454204f897..8e0da288eec 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -43,13 +43,13 @@ rec {
   # Linux standard environment.
   stdenvLinux = (import ./linux {inherit system allPackages platform;}).stdenvLinux;
 
-    
+
   # MinGW/MSYS standard environment.
   stdenvMinGW = import ./mingw {
     inherit system;
   };
 
-  
+
   # Select the appropriate stdenv for the platform `system'.
   stdenv =
     if stdenvType == "i686-linux" then stdenvLinux else
@@ -59,7 +59,6 @@ rec {
     if stdenvType == "mips64el-linux" then stdenvLinux else
     if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
     if stdenvType == "i686-mingw" then stdenvMinGW else
-    if stdenvType == "i686-darwin" then stdenvNix else
     if stdenvType == "x86_64-darwin" then stdenvNix else
     stdenvNative;
 }
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 9197ff8314b..bed6ad2f90e 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -82,9 +82,7 @@ let
           // (attrs.passthru or {});
 
         # Utility flags to test the type of platform.
-        isDarwin = result.system == "i686-darwin"
-               || result.system == "powerpc-darwin"
-               || result.system == "x86_64-darwin";
+        isDarwin = result.system == "x86_64-darwin";
         isLinux = result.system == "i686-linux"
                || result.system == "x86_64-linux"
                || result.system == "powerpc-linux"
@@ -108,7 +106,6 @@ let
                || result.system == "x86_64-openbsd";
         isi686 = result.system == "i686-linux"
                || result.system == "i686-gnu"
-               || result.system == "i686-darwin"
                || result.system == "i686-freebsd"
                || result.system == "i686-openbsd"
                || result.system == "i386-sunos";
diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix
index c0da8f2b0c1..a33a46c8512 100644
--- a/pkgs/stdenv/native/default.nix
+++ b/pkgs/stdenv/native/default.nix
@@ -2,11 +2,11 @@
 
 rec {
 
-  shell = 
+  shell =
     if system == "i686-freebsd" || system == "x86_64-freebsd" then "/usr/local/bin/bash"
     else "/bin/bash";
 
-  path = 
+  path =
     (if system == "i686-solaris" then [ "/usr/gnu" ] else []) ++
     (if system == "i686-netbsd" then [ "/usr/pkg" ] else []) ++
     ["/" "/usr" "/usr/local"];
@@ -22,13 +22,13 @@ rec {
     export NIX_DONT_SET_RPATH=1
     export NIX_NO_SELF_RPATH=1
     dontFixLibtool=1
-    stripAllFlags=" " # the Darwin "strip" command doesn't know "-s" 
+    stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
     xargsFlags=" "
   '';
 
   prehookFreeBSD = ''
     ${prehookBase}
-    
+
     alias make=gmake
     alias tar=gtar
     alias sed=gsed
@@ -41,14 +41,14 @@ rec {
 
   prehookOpenBSD = ''
     ${prehookBase}
-    
+
     alias make=gmake
     alias grep=ggrep
     alias mv=gmv
     alias ln=gln
     alias sed=gsed
     alias tar=gtar
-    
+
     export MAKE=gmake
     shopt -s expand_aliases
 
@@ -58,20 +58,20 @@ rec {
 
   prehookNetBSD = ''
     ${prehookBase}
-    
+
     alias make=gmake
     alias sed=gsed
     alias tar=gtar
     export MAKE=gmake
     shopt -s expand_aliases
-    
+
     # Filter out stupid GCC warnings (in gcc-wrapper).
     export NIX_GCC_NEEDS_GREP=1
   '';
 
   prehookCygwin = ''
     ${prehookBase}
-    
+
     if test -z "$cygwinConfigureEnableShared"; then
       export configureFlags="$configureFlags --disable-shared"
     fi
@@ -81,17 +81,17 @@ rec {
 
 
   # A function that builds a "native" stdenv (one that uses tools in
-  # /usr etc.).  
+  # /usr etc.).
   makeStdenv =
     { gcc, fetchurl, extraPath ? [], overrides ? (pkgs: { }) }:
 
     import ../generic {
       preHook =
-        if system == "i686-darwin" || system == "powerpc-darwin" || system == "x86_64-darwin" then prehookDarwin else
+        if system == "x86_64-darwin" then prehookDarwin else
         if system == "i686-freebsd" then prehookFreeBSD else
         if system == "x86_64-freebsd" then prehookFreeBSD else
         if system == "i686-openbsd" then prehookOpenBSD else
-	if system == "i686-netbsd" then prehookNetBSD else
+        if system == "i686-netbsd" then prehookNetBSD else
         prehookBase;
 
       initialPath = extraPath ++ path;
@@ -106,7 +106,7 @@ rec {
     gcc = "/no-such-path";
     fetchurl = null;
   };
-  
+
 
   gcc = import ../../build-support/gcc-wrapper {
     name = "gcc-native";
@@ -116,14 +116,14 @@ rec {
     stdenv = stdenvBoot0;
   };
 
-    
+
   fetchurl = import ../../build-support/fetchurl {
     stdenv = stdenvBoot0;
     # Curl should be in /usr/bin or so.
     curl = null;
   };
-  
-    
+
+
   # First build a stdenv based only on tools outside the store.
   stdenvBoot1 = makeStdenv {
     inherit gcc fetchurl;
diff --git a/pkgs/tools/X11/xcalib/default.nix b/pkgs/tools/X11/xcalib/default.nix
new file mode 100644
index 00000000000..65868a3b6b0
--- /dev/null
+++ b/pkgs/tools/X11/xcalib/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, libX11, libXxf86vm, libXext }:
+
+stdenv.mkDerivation rec {
+  name = "xcalib-0.8";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xcalib/xcalib-source-0.8.tar.gz";
+    sha256 = "8a112ee710e5446f6c36e62345b2066f10639d500259db8c48bf1716caea06e6";
+  };
+
+  buildInputs = [ libX11 libXxf86vm libXext ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp xcalib $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://xcalib.sourceforge.net/;
+    description = "A tiny monitor calibration loader for X and MS-Windows";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.rickynils ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/archivers/cpio/latest.nix b/pkgs/tools/archivers/cpio/latest.nix
deleted file mode 100644
index 8e14ff17866..00000000000
--- a/pkgs/tools/archivers/cpio/latest.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{stdenv, fetchurl}:
-
-stdenv.mkDerivation ({
-  name = "cpio-2.11";
-
-  src = fetchurl {
-    url = mirror://gnu/cpio/cpio-2.11.tar.bz2;
-    sha256 = "1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv";
-  };
-
-  # Tests fail on Darwin, see
-  # <http://lists.gnu.org/archive/html/bug-cpio/2010-07/msg00012.html> for
-  # details.
-  doCheck = !stdenv.isDarwin;
-
-  meta = {
-    homepage = http://www.gnu.org/software/cpio/;
-    description = "GNU cpio, a program to create or extract from cpio archives";
-
-    longDescription =
-      '' GNU cpio copies files into or out of a cpio or tar archive.  The
-         archive can be another file on the disk, a magnetic tape, or a pipe.
-
-         GNU cpio supports the following archive formats: binary, old ASCII,
-         new ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1
-         tar.  The tar format is provided for compatability with the tar
-         program.  By default, cpio creates binary format archives, for
-         compatibility with older cpio programs.  When extracting from
-         archives, cpio automatically recognizes which kind of archive it is
-         reading and can read archives created on machines with a different
-         byte-order.
-      '';
-
-    license = "GPLv3+";
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-    platforms = stdenv.lib.platforms.all;
-  };
-}
-
-//
-
-(if stdenv.isLinux
- then {}
- else { patches = [ ./darwin-fix.patch ]; }))
diff --git a/pkgs/tools/backup/duplicity/default.nix b/pkgs/tools/backup/duplicity/default.nix
index bb5ae55b904..0b0c1dbb943 100644
--- a/pkgs/tools/backup/duplicity/default.nix
+++ b/pkgs/tools/backup/duplicity/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, python, librsync, gnupg, boto, makeWrapper }:
 
 stdenv.mkDerivation {
-  name = "duplicity-0.6.17";
+  name = "duplicity-0.6.20";
 
   src = fetchurl {
-    url = "http://code.launchpad.net/duplicity/0.6-series/0.6.17/+download/duplicity-0.6.17.tar.gz";
-    sha256 = "0n54fw55v4h0cjspgh9nhss5w18bfrib9fckgkk2fldi3835c7l9";
+    url = "http://code.launchpad.net/duplicity/0.6-series/0.6.20/+download/duplicity-0.6.20.tar.gz";
+    sha256 = "0r0nf7arc3n5ipvvbh7h6ksqzbl236iv5pjpmd5s7lff3xswdl2i";
   };
 
   installPhase = ''
diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix
index 3995faa588b..7cae84a19c7 100644
--- a/pkgs/tools/filesystems/glusterfs/default.nix
+++ b/pkgs/tools/filesystems/glusterfs/default.nix
@@ -1,28 +1,36 @@
-a :  
+{stdenv, fetchurl, fuse, bison, flex, openssl, python, ncurses, readline}:
 let 
-  s = import ./src-for-default.nix;
-  buildInputs = with a; [
-    fuse bison flex
+  s = # Generated upstream information 
+  rec {
+    baseName="glusterfs";
+    version="3.3.1";
+    name="glusterfs-3.3.1";
+    hash="06bmnyl3vh8s21kk98idm2fl7kq38na94k5l67l9l1grl3iyzahr";
+    url="http://download.gluster.org/pub/gluster/glusterfs/3.3/3.3.1/glusterfs-3.3.1.tar.gz";
+    sha256="06bmnyl3vh8s21kk98idm2fl7kq38na94k5l67l9l1grl3iyzahr";
+  };
+  buildInputs = [
+    fuse bison flex openssl python ncurses readline
   ];
 in
+stdenv.mkDerivation
 rec {
-  src = a.fetchUrlFromSrcInfo s;
-
-  inherit (s) name;
+  inherit (s) name version;
   inherit buildInputs;
   configureFlags = [
     ''--with-mountutildir="$out/sbin"''
     ];
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
   meta = {
+    inherit (s) version;
     description = "Distributed storage system";
     maintainers = [
-      a.lib.maintainers.raskin
+      stdenv.lib.maintainers.raskin
     ];
-    platforms = with a.lib.platforms; 
+    platforms = with stdenv.lib.platforms; 
       linux ++ freebsd;
   };
 }
diff --git a/pkgs/tools/filesystems/glusterfs/default.upstream b/pkgs/tools/filesystems/glusterfs/default.upstream
new file mode 100644
index 00000000000..7c86455b440
--- /dev/null
+++ b/pkgs/tools/filesystems/glusterfs/default.upstream
@@ -0,0 +1,4 @@
+url http://download.gluster.org/pub/gluster/glusterfs/
+version_link '[0-9.]+/$'
+version_link '[0-9.]+/$'
+version_link '[.]tar[.]'
diff --git a/pkgs/tools/filesystems/glusterfs/src-for-default.nix b/pkgs/tools/filesystems/glusterfs/src-for-default.nix
deleted file mode 100644
index eeda32796f5..00000000000
--- a/pkgs/tools/filesystems/glusterfs/src-for-default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-rec {
-  advertisedUrl="http://ftp.gluster.com/pub/gluster/glusterfs/2.0/2.0.6/glusterfs-2.0.6.tar.gz";
-  version = "2.0.6";
-  url="http://ftp.gluster.com/pub/gluster/glusterfs/2.0/2.0.6/glusterfs-2.0.6.tar.gz";
-  hash = "0qr8smwncrr63vzbaf2v4fwpdck3jpgywn2rq8sdhifff67ydc9h";
-  name = "glusterfs-2.0.6";
-  
-}
diff --git a/pkgs/tools/filesystems/glusterfs/src-info-for-default.nix b/pkgs/tools/filesystems/glusterfs/src-info-for-default.nix
deleted file mode 100644
index 273ee4512e1..00000000000
--- a/pkgs/tools/filesystems/glusterfs/src-info-for-default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  downloadPage = "http://ftp.gluster.com/pub/gluster/glusterfs/2.0/";
-  sourceRegexp = "^2[.]0[.]";
-  choiceCommand = ''tail -1 | sed -re 's@(.*)/@&glusterfs-\1.tar.gz@' '';
-  baseName = "glusterfs";
-}
diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix
new file mode 100644
index 00000000000..43d7a5a8d18
--- /dev/null
+++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, cmake, fuse }:
+
+stdenv.mkDerivation rec {
+  name = "unionfs-fuse-0.26";
+
+  src = fetchurl {
+    url = "http://podgorny.cz/unionfs-fuse/releases/${name}.tar.xz";
+
+    sha256 = "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d";
+  };
+
+  buildInputs = [ cmake fuse ];
+
+  meta = {
+    description = "FUSE UnionFS implementation";
+    homepage = http://podgorny.cz/moin/UnionFsFuse;
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/tools/graphics/argyllcms/default.nix b/pkgs/tools/graphics/argyllcms/default.nix
new file mode 100644
index 00000000000..08cd012e079
--- /dev/null
+++ b/pkgs/tools/graphics/argyllcms/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchurl, jam, unzip, libX11, libXxf86vm, libXrandr, libXinerama
+, libXrender, libXext, libtiff, libjpeg, libXScrnSaver, writeText
+, libXdmcp, libXau, lib }:
+
+stdenv.mkDerivation rec {
+  name = "argyllcms-1.4.0";
+
+  src = fetchurl {
+    url = "http://www.argyllcms.com/Argyll_V1.4.0_src.zip";
+    sha256 = "1a5i0972cjp6asmawmyzih2y4bv3i0qvf7p6z5lxnr199mq38cfk";
+  };
+
+  # The contents of this file comes from the Jamtop file from the
+  # root of the ArgyllCMS distribution, rewritten to pick up Nixpkgs
+  # library paths. When ArgyllCMS is updated, make sure that changes
+  # in that file is reflected here.
+  jamTop = writeText "argyllcms_jamtop" ''
+    DESTDIR = "/" ;
+    REFSUBDIR = "ref" ;
+    
+    # Keep this DESTDIR anchored to Jamtop. PREFIX is used literally
+    ANCHORED_PATH_VARS = DESTDIR ;
+    
+    # Tell standalone libraries that they are part of Argyll:
+    DEFINES += ARGYLLCMS ;
+    
+    # Use libusb1 rather than libusb0 & libusb0-win32
+    USE_LIBUSB1 = true ;
+    
+    # Make the USB V1 library static
+    LIBUSB_IS_DLL = false ;
+    
+    # Set the libubs1 library name.
+    LIBUSB1NAME = libusb-1A ;
+
+    JPEGLIB = ;
+    JPEGINC = ;
+    HAVE_JPEG = true ;
+
+    TIFFLIB = ;
+    TIFFINC = ;
+    HAVE_TIFF = true ;
+
+    LINKFLAGS +=
+      ${lib.concatStringsSep " " (map (x: "-L${x}/lib") buildInputs)}
+      -ldl -lrt -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss
+      -ljpeg -ltiff ;
+  '';
+
+  buildNativeInputs = [ jam unzip ];
+
+  preConfigure = ''
+    cp ${jamTop} Jamtop
+    substituteInPlace Makefile --replace "-j 3" "-j $NIX_BUILD_CORES"
+    # Remove tiff and jpg to be sure the nixpkgs-provided ones are used
+    rm -rf tiff jpg
+  '';
+
+  buildInputs = [ 
+    libtiff libjpeg libX11 libXxf86vm libXrandr libXinerama libXext
+    libXrender libXScrnSaver libXdmcp libXau
+  ];
+
+  buildFlags = "PREFIX=$(out) all";
+
+  installFlags = "PREFIX=$(out)";
+
+  # Install udev rules, but remove lines that set up the udev-acl and plugdev
+  # stuff, since that is handled by udev's own rules (70-udev-acl.rules)
+  postInstall = ''
+    rm -v $out/bin/License.txt
+    mkdir -p $out/etc/udev/rules.d
+    sed -i '/udev-acl/d' libusb1/55-Argyll.rules
+    sed -i '/plugdev/d' libusb1/55-Argyll.rules
+    cp -v libusb1/55-Argyll.rules $out/etc/udev/rules.d/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.argyllcms.com;
+    description = "An ICC compatible color management system";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.rickynils ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/graphics/asymptote/default.nix b/pkgs/tools/graphics/asymptote/default.nix
index e9baac43cbd..e32a3901a92 100644
--- a/pkgs/tools/graphics/asymptote/default.nix
+++ b/pkgs/tools/graphics/asymptote/default.nix
@@ -8,7 +8,15 @@ a @ {
 
   ...}:
 let
-  s = import ./src-for-default.nix;
+  s = # Generated upstream information
+  rec {
+    baseName="asymptote";
+    version="2.21";
+    name="asymptote-2.21";
+    hash="07lkj0xnxpanfscmbm30lw6j9484rlmmqpnl0mhs7nx9h2lczrjz";
+    url="mirror://sourceforge/project/asymptote/2.21/asymptote-2.21.src.tgz";
+    sha256="07lkj0xnxpanfscmbm30lw6j9484rlmmqpnl0mhs7nx9h2lczrjz";
+  };
   buildInputs = with a; [
     freeglut ghostscriptX imagemagick fftw boehmgc
     mesa ncurses readline gsl libsigsegv python zlib
@@ -51,6 +59,7 @@ rec {
   '' ["minInit" "addInputs" "doUnpack"];
 
   meta = {
+    inherit (s) version;
     description = "A tool for programming graphics intended to replace Metapost";
     maintainers = [
       a.lib.maintainers.raskin
diff --git a/pkgs/tools/graphics/asymptote/default.upstream b/pkgs/tools/graphics/asymptote/default.upstream
new file mode 100644
index 00000000000..3739390fd1d
--- /dev/null
+++ b/pkgs/tools/graphics/asymptote/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/asymptote/files/
+SF_version_dir
+version_link 'src[.]tgz/download$'
+SF_redirect
diff --git a/pkgs/tools/graphics/asymptote/src-for-default.nix b/pkgs/tools/graphics/asymptote/src-for-default.nix
deleted file mode 100644
index 277393283ab..00000000000
--- a/pkgs/tools/graphics/asymptote/src-for-default.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-rec {
-   version="2.20";
-   name="asymptote-2.20";
-   hash="0ji45v0d9jps8clsl86pvmr22acci3f0ciicmyzak6dbczqyrj80";
-   url="http://downloads.sourceforge.net/project/asymptote/${version}/asymptote-${version}.src.tgz";
-   advertisedUrl="http://downloads.sourceforge.net/project/asymptote/2.20/asymptote-2.20.src.tgz";
-}
diff --git a/pkgs/tools/graphics/asymptote/src-info-for-default.nix b/pkgs/tools/graphics/asymptote/src-info-for-default.nix
deleted file mode 100644
index dbfd064f51a..00000000000
--- a/pkgs/tools/graphics/asymptote/src-info-for-default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  downloadPage = "http://sourceforge.net/projects/asymptote/files/";
-  baseName = "asymptote";
-  sourceRegexp = ".*[.]src[.]tgz";
-  versionExtractorSedScript = ''$extractReleaseSF'';
-  versionReferenceCreator = ''$(replaceAllVersionOccurences)'';
-  choiceCommand = ''head -1 | sed -re "$skipRedirectSF"'';
-}
diff --git a/pkgs/tools/graphics/cfdg/default.nix b/pkgs/tools/graphics/cfdg/default.nix
index 26df8818b2b..9376ad6a709 100644
--- a/pkgs/tools/graphics/cfdg/default.nix
+++ b/pkgs/tools/graphics/cfdg/default.nix
@@ -1,8 +1,8 @@
-a @ {libpng, bison, flex, fullDepEntry, ...} :  
+a @ {libpng, bison, flex, ffmpeg, fullDepEntry, ...} :  
 let 
   s = import ./src-for-default.nix;
   buildInputs = with a; [
-    libpng bison flex
+    libpng bison flex ffmpeg
   ];
 in
 rec {
@@ -13,8 +13,12 @@ rec {
   configureFlags = [];
 
   /* doConfigure should be removed if not needed */
-  phaseNames = ["doMake" "copyFiles"];
-
+  phaseNames = ["doFixInc" "doMake" "copyFiles"];
+ 
+  doFixInc = a.fullDepEntry ''
+    sed -e "/YY_NO_UNISTD/a#include <stdio.h>" -i src-common/cfdg.l
+  '' ["doUnpack" "minInit"];
+ 
   copyFiles = a.fullDepEntry ''
     mkdir -p $out/bin
     cp cfdg $out/bin/
diff --git a/pkgs/tools/graphics/cfdg/src-for-default.nix b/pkgs/tools/graphics/cfdg/src-for-default.nix
index 6ad1394650e..179f0432dd1 100644
--- a/pkgs/tools/graphics/cfdg/src-for-default.nix
+++ b/pkgs/tools/graphics/cfdg/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="2.2.1";
-   name="cfdg-2.2.1";
-   hash="1zf3cls5h4fnhdxhdkdwsm4pav6df1ljr9jwp26dbqa4z2q3r8p4";
-   url="http://www.contextfreeart.org/download/ContextFreeSource2.2.1.tgz";
-   advertisedUrl="http://www.contextfreeart.org/download/ContextFreeSource2.2.1.tgz";
+   version="3.0.2";
+   name="cfdg-3.0.2";
+   hash="1pd1hjippbhad8l4s4lsglykh22i24qfrgmnxrsx71bvcqbr356p";
+   url="http://www.contextfreeart.org/download/ContextFreeSource3.0.2.tgz";
+   advertisedUrl="http://www.contextfreeart.org/download/ContextFreeSource3.0.2.tgz";
   
   
 }
diff --git a/pkgs/tools/misc/coreutils-5/default.nix b/pkgs/tools/misc/coreutils-5/default.nix
deleted file mode 100644
index de1ff1c4a90..00000000000
--- a/pkgs/tools/misc/coreutils-5/default.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{stdenv, fetchurl, perl ? null}:
-
-stdenv.mkDerivation {
-  name = "coreutils-5.97";
-  src = fetchurl {
-    url = http://nixos.org/tarballs/coreutils-5.97.tar.gz;
-    md5 = "bdec4b75c76ac9bf51b6dd1747d3b06e";
-  };
-  patches = [./dietlibc.patch];
-}
diff --git a/pkgs/tools/misc/coreutils-5/dietlibc.patch b/pkgs/tools/misc/coreutils-5/dietlibc.patch
deleted file mode 100644
index 232737c2f35..00000000000
--- a/pkgs/tools/misc/coreutils-5/dietlibc.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -rc coreutils-5.97-orig/lib/strftime.c coreutils-5.97/lib/strftime.c
-*** coreutils-5.97-orig/lib/strftime.c	2006-10-18 17:10:16.000000000 +0200
---- coreutils-5.97/lib/strftime.c	2006-10-18 17:19:10.000000000 +0200
-***************
-*** 180,185 ****
---- 180,191 ----
-  # define memset_zero(P, Len) (memset (P, '0', Len), (P) += (Len))
-  #endif
-  
-+ #if FPRINTFTIME
-+ #define advance(p, _n) ;
-+ #else
-+ #define advance(p, _n) p += _n;
-+ #endif 
-+ 
-  #define add(n, f)							      \
-    do									      \
-      {									      \
-***************
-*** 198,204 ****
-  		memset_space (p, _delta);				      \
-  	    }								      \
-  	  f;								      \
-! 	  p += FPRINTFTIME ? 0 : _n;					      \
-  	}								      \
-        i += _incr;							      \
-      } while (0)
---- 204,210 ----
-  		memset_space (p, _delta);				      \
-  	    }								      \
-  	  f;								      \
-! 	  advance(p, _n);						      \
-  	}								      \
-        i += _incr;							      \
-      } while (0)
diff --git a/pkgs/tools/misc/findutils/4.2.27.nix b/pkgs/tools/misc/findutils/4.2.27.nix
deleted file mode 100644
index 591134d692d..00000000000
--- a/pkgs/tools/misc/findutils/4.2.27.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{stdenv, fetchurl, coreutils}:
-
-stdenv.mkDerivation {
-  name = "findutils-4.2.27";
-  src = fetchurl {
-    url = http://nixos.org/tarballs/findutils-4.2.27.tar.gz;
-    md5 = "f1e0ddf09f28f8102ff3b90f3b5bc920";
-  };
-  buildInputs = [coreutils];
-  patches = [./findutils-path.patch]
-    # Note: the dietlibc is just to get findutils to compile.  The
-    # locate command probably won't work though.
-    ++ (if stdenv ? isDietLibC then [./dietlibc-hack.patch] else []);
-}
diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix
index 11ed1cf07b5..eeb6b852e61 100644
--- a/pkgs/tools/misc/findutils/default.nix
+++ b/pkgs/tools/misc/findutils/default.nix
@@ -10,10 +10,7 @@ stdenv.mkDerivation rec {
 
   buildNativeInputs = [coreutils];
 
-  patches = [ ./findutils-path.patch ./change_echo_path.patch ]
-    # Note: the dietlibc patch is just to get findutils to compile.
-    # The locate command probably won't work though.
-    ++ stdenv.lib.optional (stdenv ? isDietLibC) ./dietlibc-hack.patch;
+  patches = [ ./findutils-path.patch ./change_echo_path.patch ];
 
   doCheck = true;
 
diff --git a/pkgs/tools/misc/findutils/dietlibc-hack.patch b/pkgs/tools/misc/findutils/dietlibc-hack.patch
deleted file mode 100644
index 957c32d3d4e..00000000000
--- a/pkgs/tools/misc/findutils/dietlibc-hack.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -rc findutils-4.2.27-orig/locate/code.c findutils-4.2.27/locate/code.c
-*** findutils-4.2.27-orig/locate/code.c	2005-06-07 22:24:56.000000000 +0000
---- findutils-4.2.27/locate/code.c	2006-10-20 15:53:53.000000000 +0000
-***************
-*** 210,216 ****
---- 210,218 ----
-        if (diffcount < -LOCATEDB_OLD_OFFSET || diffcount > LOCATEDB_OLD_OFFSET)
-  	{
-  	  putc (LOCATEDB_OLD_ESCAPE, stdout);
-+ #if 0          
-  	  putw (diffcount + LOCATEDB_OLD_OFFSET, stdout);
-+ #endif          
-  	}
-        else
-  	putc (diffcount + LOCATEDB_OLD_OFFSET, stdout);
-diff -rc findutils-4.2.27-orig/locate/locate.c findutils-4.2.27/locate/locate.c
-*** findutils-4.2.27-orig/locate/locate.c	2005-09-01 20:42:43.000000000 +0000
---- findutils-4.2.27/locate/locate.c	2006-10-20 15:53:11.000000000 +0000
-***************
-*** 468,473 ****
---- 468,474 ----
-    return VISIT_CONTINUE;
-  }
-  
-+ #if 0
-  static int
-  visit_old_format(struct process_data *procdata, void *context)
-  {
-***************
-*** 498,503 ****
---- 499,505 ----
-    
-    return VISIT_CONTINUE;
-  }
-+ #endif
-  
-  
-  static int
-***************
-*** 911,920 ****
-    lastinspector = NULL;
-    past_pat_inspector = NULL;
-  
-!   if (old_format)
-!     add_visitor(visit_old_format, NULL);
-!   else
-!     add_visitor(visit_locate02_format, NULL);
-  
-    if (basename_only)
-      add_visitor(visit_basename, NULL);
---- 913,919 ----
-    lastinspector = NULL;
-    past_pat_inspector = NULL;
-  
-!   add_visitor(visit_locate02_format, NULL);
-  
-    if (basename_only)
-      add_visitor(visit_basename, NULL);
diff --git a/pkgs/tools/misc/gnokii/src-for-default.nix b/pkgs/tools/misc/gnokii/src-for-default.nix
index 3ea6f1a3b66..af2768ddfa3 100644
--- a/pkgs/tools/misc/gnokii/src-for-default.nix
+++ b/pkgs/tools/misc/gnokii/src-for-default.nix
@@ -1,9 +1,9 @@
 rec {
-   version="0.6.30";
-   name="gnokii-0.6.30";
-   hash="0k14dymifk7dx3z58cqrc4mgxrm17s4jk12chwdfjhjarz390x8p";
-   url="http://www.gnokii.org/download/gnokii/0.6.x/gnokii-${version}.tar.gz";
-   advertisedUrl="http://www.gnokii.org/download/gnokii/gnokii-0.6.30.tar.gz";
+   version="0.6.31";
+   name="gnokii-0.6.31";
+   hash="0sjjhm40662bj6j0jh3sd25b8nww54nirpwamz618rg6pb5hjwm8";
+   url="http://www.gnokii.org/download/gnokii/gnokii-${version}.tar.gz";
+   advertisedUrl="http://www.gnokii.org/download/gnokii/gnokii-0.6.31.tar.gz";
   
   
 }
diff --git a/pkgs/tools/misc/grub/device-mapper-symlinks.patch b/pkgs/tools/misc/grub/device-mapper-symlinks.patch
deleted file mode 100644
index 0a21a51de79..00000000000
--- a/pkgs/tools/misc/grub/device-mapper-symlinks.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Only in grub-1.97.1-orig/: grub-1.97.1
-diff -rc -x '*~' grub-1.97.1-orig/util/getroot.c grub-1.97.1/util/getroot.c
-*** grub-1.97.1-orig/util/getroot.c	2009-11-09 16:48:16.000000000 +0100
---- grub-1.97.1/util/getroot.c	2010-01-08 00:26:12.000000000 +0100
-***************
-*** 217,224 ****
-  	continue;
-  
-        if (S_ISLNK (st.st_mode))
-! 	/* Don't follow symbolic links.  */
-! 	continue;
-  
-        if (S_ISDIR (st.st_mode))
-  	{
---- 217,229 ----
-  	continue;
-  
-        if (S_ISLNK (st.st_mode))
-!         {
-!           if (strcmp(dir, "mapper") != 0)
-!             /* Don't follow symbolic links.  */
-!             continue;
-!           if (stat (ent->d_name, &st) < 0)
-!             continue;
-!         }
-  
-        if (S_ISDIR (st.st_mode))
-  	{
diff --git a/pkgs/tools/misc/mc/mc-4.6.1-bash32-1.patch b/pkgs/tools/misc/mc/mc-4.6.1-bash32-1.patch
deleted file mode 100644
index d6d55a02707..00000000000
--- a/pkgs/tools/misc/mc/mc-4.6.1-bash32-1.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Submitted By: Alexander E. Patrakov
-Date: 2007-01-19
-Initial Package Version: 4.6.1
-Origin: http://bugs.gentoo.org/show_bug.cgi?id=153925
-Upstream Status: aware of the problem
-Description: with bash-3.2, unpatched mc-4.6.1 refuses to go into directories
-containing underscores or other strange characters.
-
---- mc-4.6.1/src/subshell.c.000	2006-05-08 23:11:48.000000000 +0200
-+++ mc-4.6.1/src/subshell.c	2006-10-28 15:40:46.000000000 +0200
-@@ -745,29 +745,13 @@ subshell_name_quote (const char *s)
-     memcpy (d, cmd_start, len);
-     d += len;
- 
--    /*
--     * Print every character in octal format with the leading backslash.
--     * tcsh and zsh may require 4-digit octals, bash < 2.05b doesn't like them.
--     */
--    if (subshell_type == BASH) {
- 	for (; *s; s++) {
--	    /* Must quote numbers, so that they are not glued to octals */
- 	    if (isalpha ((unsigned char) *s)) {
- 		*d++ = (unsigned char) *s;
- 	    } else {
--		sprintf (d, "\\%03o", (unsigned char) *s);
--		d += 4;
--	    }
--	}
--    } else {
--	for (; *s; s++) {
--	    if (isalnum ((unsigned char) *s)) {
--		*d++ = (unsigned char) *s;
--	    } else {
- 		sprintf (d, "\\0%03o", (unsigned char) *s);
- 		d += 5;
- 	    }
--	}
-     }
- 
-     memcpy (d, common_end, sizeof (common_end));
-
diff --git a/pkgs/tools/misc/mc/mc-4.6.1-debian_fixes-1.patch b/pkgs/tools/misc/mc/mc-4.6.1-debian_fixes-1.patch
deleted file mode 100644
index 931b10b7b65..00000000000
--- a/pkgs/tools/misc/mc/mc-4.6.1-debian_fixes-1.patch
+++ /dev/null
@@ -1,12671 +0,0 @@
-Submitted By: Alexander E. Patrakov
-Date: 2007-01-19
-Initial Package Version: 4.6.1
-Origin: Debian
-Upstream Status: partially applied
-Description: This patch adds UTF-8 support to MC, enables recoding
-of FTP filenames, fixes 64-bit issues, mcedit segfaults, moves
-configuration files to /etc/mc, and contains other changes from the
-Debian mc package.
-
-diff -urN mc-4.6.1.orig/doc/mc.1.in mc-4.6.1/doc/mc.1.in
---- mc-4.6.1.orig/doc/mc.1.in	2005-06-08 18:27:06.000000000 +0600
-+++ mc-4.6.1/doc/mc.1.in	2007-01-19 18:33:58.000000000 +0500
-@@ -1377,7 +1377,7 @@
- but only if it is owned by user or root and is not world-writable.
- If no such file found, ~/.mc/menu is tried in the same way,
- and otherwise mc uses the default system-wide menu
--@prefix@/share/mc/mc.menu.
-+/etc/mc/mc.menu.
- .PP
- The format of the menu file is very simple. Lines that start with
- anything but space or tab are considered entries for the menu (in
-@@ -1903,7 +1903,7 @@
- At startup the Midnight Commander will try to load initialization
- information from the ~/.mc/ini file. If this file doesn't exist, it will
- load the information from the system-wide configuration file, located in
--@prefix@/share/mc/mc.ini. If the system-wide configuration file doesn't
-+/etc/mc/mc.ini. If the system-wide configuration file doesn't
- exist, MC uses the default settings.
- .PP
- The
-@@ -3235,7 +3235,7 @@
- .IP
- The help file for the program.
- .PP
--.I @prefix@/share/mc/mc.ext
-+.I /etc/mc/mc.ext
- .IP
- The default system-wide extensions file.
- .PP
-@@ -3244,12 +3244,12 @@
- User's own extension, view configuration and edit configuration
- file.  They override the contents of the system wide files if present.
- .PP
--.I @prefix@/share/mc/mc.ini
-+.I /etc/mc/mc.ini
- .IP
- The default system-wide setup for the Midnight Commander, used only if
- the user doesn't have his own ~/.mc/ini file.
- .PP
--.I @prefix@/share/mc/mc.lib
-+.I /etc/mc/mc.lib
- .IP
- Global settings for the Midnight Commander.  Settings in this file
- affect all users, whether they have ~/.mc/ini or not.  Currently, only
-@@ -3267,7 +3267,7 @@
- .IP
- This file contains the hints displayed by the program.
- .PP
--.I @prefix@/share/mc/mc.menu
-+.I /etc/mc/mc.menu
- .IP
- This file contains the default system-wide applications menu.
- .PP
-diff -urN mc-4.6.1.orig/doc/mcedit.1.in mc-4.6.1/doc/mcedit.1.in
---- mc-4.6.1.orig/doc/mcedit.1.in	2005-06-08 18:27:07.000000000 +0600
-+++ mc-4.6.1/doc/mcedit.1.in	2007-01-19 18:33:58.000000000 +0500
-@@ -464,12 +464,12 @@
- .IP
- The help file for the program.
- .PP
--.I @prefix@/share/mc/mc.ini
-+.I /etc/mc/mc.ini
- .IP
- The default system-wide setup for GNU Midnight Commander, used only if
- the user's own ~/.mc/ini file is missing.
- .PP
--.I @prefix@/share/mc/mc.lib
-+.I /etc/mc/mc.lib
- .IP
- Global settings for the Midnight Commander.  Settings in this file
- affect all users, whether they have ~/.mc/ini or not.
-diff -urN mc-4.6.1.orig/doc/mcview.1.in mc-4.6.1/doc/mcview.1.in
---- mc-4.6.1.orig/doc/mcview.1.in	2005-06-08 18:27:07.000000000 +0600
-+++ mc-4.6.1/doc/mcview.1.in	2007-01-19 18:33:58.000000000 +0500
-@@ -65,12 +65,12 @@
- .IP
- The help file for the program.
- .PP
--.I @prefix@/share/mc/mc.ini
-+.I /etc/mc/mc.ini
- .IP
- The default system-wide setup for GNU Midnight Commander, used only if
- the user's own ~/.mc/ini file is missing.
- .PP
--.I @prefix@/share/mc/mc.lib
-+.I /etc/mc/mc.lib
- .IP
- Global settings for the Midnight Commander.  Settings in this file
- affect all users, whether they have ~/.mc/ini or not.
-diff -urN mc-4.6.1.orig/edit/edit.c mc-4.6.1/edit/edit.c
---- mc-4.6.1.orig/edit/edit.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/edit.c	2007-01-19 18:33:58.000000000 +0500
-@@ -93,7 +93,7 @@
- 
- #ifndef NO_INLINE_GETBYTE
- 
--int edit_get_byte (WEdit * edit, long byte_index)
-+mc_wchar_t edit_get_byte (WEdit * edit, long byte_index)
- {
-     unsigned long p;
-     if (byte_index >= (edit->curs1 + edit->curs2) || byte_index < 0)
-@@ -125,7 +125,7 @@
- 
-     edit->curs1 = 0;
-     edit->curs2 = 0;
--    edit->buffers2[0] = g_malloc (EDIT_BUF_SIZE);
-+    edit->buffers2[0] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- }
- 
- /*
-@@ -152,7 +152,7 @@
-     }
- 
-     if (!edit->buffers2[buf2])
--	edit->buffers2[buf2] = g_malloc (EDIT_BUF_SIZE);
-+	edit->buffers2[buf2] = g_malloc (EDIT_BUF_SIZE  * sizeof(mc_wchar_t));
- 
-     mc_read (file,
- 	     (char *) edit->buffers2[buf2] + EDIT_BUF_SIZE -
-@@ -162,7 +162,7 @@
-     for (buf = buf2 - 1; buf >= 0; buf--) {
- 	/* edit->buffers2[0] is already allocated */
- 	if (!edit->buffers2[buf])
--	    edit->buffers2[buf] = g_malloc (EDIT_BUF_SIZE);
-+	    edit->buffers2[buf] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- 	mc_read (file, (char *) edit->buffers2[buf], EDIT_BUF_SIZE);
-     }
- 
-@@ -242,9 +242,44 @@
- {
-     int c;
-     long i = 0;
--    while ((c = fgetc (f)) >= 0) {
-+#ifndef UTF8
-+    while ((c = fgetc (f)) != EOF) {
- 	edit_insert (edit, c);
- 	i++;
-+#else /* UTF8 */
-+    unsigned char buf[MB_LEN_MAX];
-+    int charpos = 0;
-+    mbstate_t mbs;
-+
-+    while ((c = fgetc (f)) != EOF) {
-+	mc_wchar_t wc;
-+	int size;
-+	int j;
-+
-+	buf[charpos++] = c;
-+
-+        memset (&mbs, 0, sizeof (mbs));
-+	size = mbrtowc(&wc, (char *)buf, charpos, &mbs);
-+
-+	if (size == -2) 
-+	    continue; /* incomplete */
-+
-+	else if (size >= 0) {
-+	    edit_insert (edit, wc);
-+	    i++;
-+	    charpos = 0;
-+	    continue;
-+	}
-+	else {
-+
-+		/* invalid  */
-+#ifdef __STDC_ISO_10646__
-+		for (j=0; j<charpos; j++)
-+		    edit_insert (edit, BINARY_CHAR_OFFSET + (mc_wchar_t)buf[j]);
-+#endif
-+		charpos = 0;
-+	}
-+#endif /* UTF8 */
-     }
-     return i;
- }
-@@ -252,9 +287,32 @@
- long edit_write_stream (WEdit * edit, FILE * f)
- {
-     long i;
-+#ifndef UTF8
-     for (i = 0; i < edit->last_byte; i++)
- 	if (fputc (edit_get_byte (edit, i), f) < 0)
- 	    break;
-+#else /* UTF8 */
-+    for (i = 0; i < edit->last_byte; i++) {
-+	mc_wchar_t wc = edit_get_byte (edit, i);
-+	int res;
-+	char tmpbuf[MB_LEN_MAX];
-+        mbstate_t mbs;
-+
-+        memset (&mbs, 0, sizeof (mbs));
-+
-+#ifdef __STDC_ISO_10646__ 
-+	if (wc >= BINARY_CHAR_OFFSET && wc < (BINARY_CHAR_OFFSET + 256)) {
-+	    res = 1;
-+	    tmpbuf[0] = (char) (wc - BINARY_CHAR_OFFSET);
-+	} else
-+#endif
-+	res = wcrtomb(tmpbuf, wc, &mbs);
-+	if (res > 0) {
-+	    if (fwrite(tmpbuf, res, 1, f) != 1)
-+		break;
-+	}
-+    }
-+#endif /* UTF8 */
-     return i;
- }
- 
-@@ -294,12 +352,46 @@
- 	int i, file, blocklen;
- 	long current = edit->curs1;
- 	unsigned char *buf;
-+#ifdef UTF8
-+	mbstate_t mbs;
-+	int bufstart = 0;
-+
-+	memset (&mbs, 0, sizeof (mbs));
-+#endif /* UTF8 */
- 	if ((file = mc_open (filename, O_RDONLY | O_BINARY)) == -1)
- 	    return 0;
- 	buf = g_malloc (TEMP_BUF_LEN);
-+#ifndef UTF8
- 	while ((blocklen = mc_read (file, (char *) buf, TEMP_BUF_LEN)) > 0) {
- 	    for (i = 0; i < blocklen; i++)
- 		edit_insert (edit, buf[i]);
-+#else /* UTF8 */
-+	while ((blocklen = mc_read (file, (char *) buf + bufstart, TEMP_BUF_LEN - bufstart)) > 0) {
-+	    blocklen += bufstart;
-+	    bufstart = 0;
-+	    for (i = 0; i < blocklen; ) {
-+		mc_wchar_t wc;
-+		int j;
-+	        int size = mbrtowc(&wc, (char *)buf + i, blocklen - i, &mbs);
-+		if (size == -2) { /*incomplete char*/
-+		    bufstart = blocklen - i;
-+		    memcpy(buf, buf+i, bufstart);
-+		    i = blocklen;
-+		    memset (&mbs, 0, sizeof (mbs));
-+		}
-+		else if (size <= 0) {
-+#ifdef __STDC_ISO_10646__
-+		    edit_insert (edit, BINARY_CHAR_OFFSET + (mc_wchar_t)buf[i]);
-+#endif
-+		    memset (&mbs, 0, sizeof (mbs));
-+		    i++; /* skip broken char */
-+		}
-+		else {
-+		    edit_insert (edit, wc);
-+		    i+=size;
-+		}
-+	    }
-+#endif /* UTF8 */
- 	}
- 	edit_cursor_move (edit, current - edit->curs1);
- 	g_free (buf);
-@@ -393,7 +485,11 @@
- static int
- edit_load_file (WEdit *edit)
- {
-+#ifndef UTF8
-     int fast_load = 1;
-+#else /* UTF8 */
-+    int fast_load = 0; /* can't be used with multibyte characters */
-+#endif /* UTF8 */
- 
-     /* Cannot do fast load if a filter is used */
-     if (edit_find_filter (edit->filename) >= 0)
-@@ -540,7 +636,7 @@
-     edit_set_filename (edit, filename);
-     edit->stack_size = START_STACK_SIZE;
-     edit->stack_size_mask = START_STACK_SIZE - 1;
--    edit->undo_stack = g_malloc ((edit->stack_size + 10) * sizeof (long));
-+    edit->undo_stack = g_malloc ((edit->stack_size + 10) * sizeof (struct action));
-     if (edit_load_file (edit)) {
- 	/* edit_load_file already gives an error message */
- 	if (to_free)
-@@ -565,7 +661,9 @@
- 	edit_move_display (edit, line - 1);
- 	edit_move_to_line (edit, line - 1);
-     }
--
-+#ifdef UTF8
-+    edit->charpoint = 0;
-+#endif
-     return edit;
- }
- 
-@@ -693,13 +791,23 @@
- {
-     unsigned long sp = edit->stack_pointer;
-     unsigned long spm1;
--    long *t;
-+  
-+    struct action *t; 
-+    mc_wchar_t ch = 0; 
-+
-+    if (c == CHAR_INSERT || c == CHAR_INSERT_AHEAD) { 
-+      va_list ap; 
-+      va_start (ap, c); 
-+      ch = va_arg (ap, mc_wint_t); 
-+      va_end (ap); 
-+    } 
-+
- /* first enlarge the stack if necessary */
-     if (sp > edit->stack_size - 10) {	/* say */
- 	if (option_max_undo < 256)
- 	    option_max_undo = 256;
- 	if (edit->stack_size < (unsigned long) option_max_undo) {
--	    t = g_realloc (edit->undo_stack, (edit->stack_size * 2 + 10) * sizeof (long));
-+	    t = g_realloc (edit->undo_stack, (edit->stack_size * 2 + 10) * sizeof (struct action));
- 	    if (t) {
- 		edit->undo_stack = t;
- 		edit->stack_size <<= 1;
-@@ -714,7 +822,7 @@
- #ifdef FAST_MOVE_CURSOR
-     if (c == CURS_LEFT_LOTS || c == CURS_RIGHT_LOTS) {
- 	va_list ap;
--	edit->undo_stack[sp] = c == CURS_LEFT_LOTS ? CURS_LEFT : CURS_RIGHT;
-+	edit->undo_stack[sp].flags = c == CURS_LEFT_LOTS ? CURS_LEFT : CURS_RIGHT;
- 	edit->stack_pointer = (edit->stack_pointer + 1) & edit->stack_size_mask;
- 	va_start (ap, c);
- 	c = -(va_arg (ap, int));
-@@ -725,12 +833,14 @@
- 	&& spm1 != edit->stack_bottom
- 	&& ((sp - 2) & edit->stack_size_mask) != edit->stack_bottom) {
- 	int d;
--	if (edit->undo_stack[spm1] < 0) {
--	    d = edit->undo_stack[(sp - 2) & edit->stack_size_mask];
--	    if (d == c) {
--		if (edit->undo_stack[spm1] > -1000000000) {
-+	mc_wchar_t d_ch;
-+	if (edit->undo_stack[spm1].flags < 0) {
-+	    d    = edit->undo_stack[(sp - 2) & edit->stack_size_mask].flags;
-+	    d_ch = edit->undo_stack[(sp - 2) & edit->stack_size_mask].ch;
-+	    if (d == c && d_ch == ch) {
-+		if (edit->undo_stack[spm1].flags > -1000000000) {
- 		    if (c < KEY_PRESS)	/* --> no need to push multiple do-nothings */
--			edit->undo_stack[spm1]--;
-+			edit->undo_stack[spm1].flags--;
- 		    return;
- 		}
- 	    }
-@@ -738,19 +848,20 @@
- #ifndef NO_STACK_CURSMOVE_ANIHILATION
- 	    else if ((c == CURS_LEFT && d == CURS_RIGHT)
- 		     || (c == CURS_RIGHT && d == CURS_LEFT)) {	/* a left then a right anihilate each other */
--		if (edit->undo_stack[spm1] == -2)
-+		if (edit->undo_stack[spm1].flags == -2)
- 		    edit->stack_pointer = spm1;
- 		else
--		    edit->undo_stack[spm1]++;
-+		    edit->undo_stack[spm1].flags++;
- 		return;
- 	    }
- #endif
- 	} else {
--	    d = edit->undo_stack[spm1];
--	    if (d == c) {
-+	    d    = edit->undo_stack[spm1].flags;
-+	    d_ch = edit->undo_stack[spm1].ch;
-+	    if (d == c && d_ch == ch) {
- 		if (c >= KEY_PRESS)
- 		    return;	/* --> no need to push multiple do-nothings */
--		edit->undo_stack[sp] = -2;
-+		edit->undo_stack[sp].flags = -2;
- 		goto check_bottom;
- 	    }
- #ifndef NO_STACK_CURSMOVE_ANIHILATION
-@@ -762,7 +873,9 @@
- #endif
- 	}
-     }
--    edit->undo_stack[sp] = c;
-+    edit->undo_stack[sp].flags = c;
-+    edit->undo_stack[sp].ch = ch;
-+
-   check_bottom:
- 
-     edit->stack_pointer = (edit->stack_pointer + 1) & edit->stack_size_mask;
-@@ -775,10 +888,10 @@
-        (((unsigned long) c + 1) & edit->stack_size_mask) == edit->stack_bottom)
- 	do {
- 	    edit->stack_bottom = (edit->stack_bottom + 1) & edit->stack_size_mask;
--	} while (edit->undo_stack[edit->stack_bottom] < KEY_PRESS && edit->stack_bottom != edit->stack_pointer);
-+	} while (edit->undo_stack[edit->stack_bottom].flags < KEY_PRESS && edit->stack_bottom != edit->stack_pointer);
- 
- /*If a single key produced enough pushes to wrap all the way round then we would notice that the [stack_bottom] does not contain KEY_PRESS. The stack is then initialised: */
--    if (edit->stack_pointer != edit->stack_bottom && edit->undo_stack[edit->stack_bottom] < KEY_PRESS)
-+    if (edit->stack_pointer != edit->stack_bottom && edit->undo_stack[edit->stack_bottom].flags < KEY_PRESS)
- 	edit->stack_bottom = edit->stack_pointer = 0;
- }
- 
-@@ -787,30 +900,30 @@
-    then the file should be as it was when he loaded up. Then set edit->modified to 0.
-  */
- static long
--pop_action (WEdit * edit)
-+pop_action (WEdit * edit, struct action *c)
- {
--    long c;
-     unsigned long sp = edit->stack_pointer;
-     if (sp == edit->stack_bottom) {
--	return STACK_BOTTOM;
-+	c->flags = STACK_BOTTOM;
-+	return c->flags;
-     }
-     sp = (sp - 1) & edit->stack_size_mask;
--    if ((c = edit->undo_stack[sp]) >= 0) {
--/*	edit->undo_stack[sp] = '@'; */
-+    *c = edit->undo_stack[sp];
-+    if (edit->undo_stack[sp].flags >= 0) {
- 	edit->stack_pointer = (edit->stack_pointer - 1) & edit->stack_size_mask;
--	return c;
-+	return c->flags;
-     }
-     if (sp == edit->stack_bottom) {
- 	return STACK_BOTTOM;
-     }
--    c = edit->undo_stack[(sp - 1) & edit->stack_size_mask];
--    if (edit->undo_stack[sp] == -2) {
--/*      edit->undo_stack[sp] = '@'; */
-+    *c = edit->undo_stack[(sp - 1) & edit->stack_size_mask];
-+
-+    if (edit->undo_stack[sp].flags == -2) {
- 	edit->stack_pointer = sp;
-     } else
--	edit->undo_stack[sp]++;
-+	edit->undo_stack[sp].flags++;
- 
--    return c;
-+    return c->flags;
- }
- 
- /* is called whenever a modification is made by one of the four routines below */
-@@ -831,7 +944,7 @@
-  */
- 
- void
--edit_insert (WEdit *edit, int c)
-+edit_insert (WEdit *edit, mc_wchar_t c)
- {
-     /* check if file has grown to large */
-     if (edit->last_byte >= SIZE_LIMIT)
-@@ -869,12 +982,11 @@
-     /* add a new buffer if we've reached the end of the last one */
-     if (!(edit->curs1 & M_EDIT_BUF_SIZE))
- 	edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] =
--	    g_malloc (EDIT_BUF_SIZE);
-+	    g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- 
-     /* perform the insertion */
--    edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE][edit->
--						   curs1 & M_EDIT_BUF_SIZE]
--	= (unsigned char) c;
-+    edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE]
-+		    [edit->curs1 & M_EDIT_BUF_SIZE] = c;
- 
-     /* update file length */
-     edit->last_byte++;
-@@ -885,7 +997,7 @@
- 
- 
- /* same as edit_insert and move left */
--void edit_insert_ahead (WEdit * edit, int c)
-+void edit_insert_ahead (WEdit * edit, mc_wchar_t c)
- {
-     if (edit->last_byte >= SIZE_LIMIT)
- 	return;
-@@ -908,7 +1020,7 @@
-     edit->last_get_rule += (edit->last_get_rule >= edit->curs1);
- 
-     if (!((edit->curs2 + 1) & M_EDIT_BUF_SIZE))
--	edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE);
-+	edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
-     edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - (edit->curs2 & M_EDIT_BUF_SIZE) - 1] = c;
- 
-     edit->last_byte++;
-@@ -918,7 +1030,7 @@
- 
- int edit_delete (WEdit * edit)
- {
--    int p;
-+    mc_wint_t p;
-     if (!edit->curs2)
- 	return 0;
- 
-@@ -942,7 +1054,7 @@
- 	edit->total_lines--;
- 	edit->force |= REDRAW_AFTER_CURSOR;
-     }
--    edit_push_action (edit, p + 256);
-+    edit_push_action (edit, CHAR_INSERT_AHEAD, p);
-     if (edit->curs1 < edit->start_display) {
- 	edit->start_display--;
- 	if (p == '\n')
-@@ -956,7 +1068,7 @@
- static int
- edit_backspace (WEdit * edit)
- {
--    int p;
-+    mc_wint_t p;
-     if (!edit->curs1)
- 	return 0;
- 
-@@ -980,7 +1092,7 @@
- 	edit->total_lines--;
- 	edit->force |= REDRAW_AFTER_CURSOR;
-     }
--    edit_push_action (edit, p);
-+    edit_push_action (edit, CHAR_INSERT, p);
- 
-     if (edit->curs1 < edit->start_display) {
- 	edit->start_display--;
-@@ -993,10 +1105,18 @@
- 
- #ifdef FAST_MOVE_CURSOR
- 
--static void memqcpy (WEdit * edit, unsigned char *dest, unsigned char *src, int n)
-+static void memqcpy (WEdit * edit, mc_wchar_t *dest, mc_wchar_t *src, int n)
- {
-     unsigned long next;
-+#ifndef UTF8
-     while ((next = (unsigned long) memccpy (dest, src, '\n', n))) {
-+#else /* UTF8 */
-+    while (n) {
-+	next = 0;
-+	while (next < n && src[next]!='\n') next++;
-+	if (next < n) next++;
-+        wmemcpy (dest, src, next)
-+#endif /* UTF8 */
- 	edit->curs_line--;
- 	next -= (unsigned long) dest;
- 	n -= next;
-@@ -1009,7 +1129,7 @@
- edit_move_backward_lots (WEdit *edit, long increment)
- {
-     int r, s, t;
--    unsigned char *p;
-+    mc_wchar_t *p;
- 
-     if (increment > edit->curs1)
- 	increment = edit->curs1;
-@@ -1049,7 +1169,7 @@
- 	    edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = p;
- 	else
- 	    edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
--		g_malloc (EDIT_BUF_SIZE);
-+		g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
-     } else {
- 	g_free (p);
-     }
-@@ -1087,7 +1207,7 @@
- 		edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = p;
- 	    else
- 		edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
--		    g_malloc (EDIT_BUF_SIZE);
-+		    g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- 	} else {
- 	    g_free (p);
- 	}
-@@ -1119,7 +1239,7 @@
- 
- 	    c = edit_get_byte (edit, edit->curs1 - 1);
- 	    if (!((edit->curs2 + 1) & M_EDIT_BUF_SIZE))
--		edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE);
-+		edit->buffers2[(edit->curs2 + 1) >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- 	    edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - (edit->curs2 & M_EDIT_BUF_SIZE) - 1] = c;
- 	    edit->curs2++;
- 	    c = edit->buffers1[(edit->curs1 - 1) >> S_EDIT_BUF_SIZE][(edit->curs1 - 1) & M_EDIT_BUF_SIZE];
-@@ -1144,7 +1264,7 @@
- 
- 	    c = edit_get_byte (edit, edit->curs1);
- 	    if (!(edit->curs1 & M_EDIT_BUF_SIZE))
--		edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE);
-+		edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
- 	    edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE][edit->curs1 & M_EDIT_BUF_SIZE] = c;
- 	    edit->curs1++;
- 	    c = edit->buffers2[(edit->curs2 - 1) >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - ((edit->curs2 - 1) & M_EDIT_BUF_SIZE) - 1];
-@@ -1251,7 +1371,7 @@
- 	q = edit->last_byte + 2;
- 
-     for (col = 0, p = current; p < q; p++) {
--	int c;
-+	mc_wchar_t c;
- 	if (cols != -10) {
- 	    if (col == cols)
- 		return p;
-@@ -1269,7 +1389,7 @@
- 	} else if (c < 32 || c == 127)
- 	    col += 2; /* Caret notation for control characters */
- 	else
--	    col++;
-+	    col += wcwidth(c);
-     }
-     return col;
- }
-@@ -1402,7 +1522,7 @@
- is_blank (WEdit *edit, long offset)
- {
-     long s, f;
--    int c;
-+    mc_wchar_t c;
-     s = edit_bol (edit, offset);
-     f = edit_eol (edit, offset) - 1;
-     while (s <= f) {
-@@ -1774,13 +1894,13 @@
- static void
- edit_do_undo (WEdit * edit)
- {
--    long ac;
-+    struct action ac;
-     long count = 0;
- 
-     edit->stack_disable = 1;	/* don't record undo's onto undo stack! */
- 
--    while ((ac = pop_action (edit)) < KEY_PRESS) {
--	switch ((int) ac) {
-+    while (pop_action (edit, &ac) < KEY_PRESS) {
-+	switch ((int) ac.flags) {
- 	case STACK_BOTTOM:
- 	    goto done_undo;
- 	case CURS_RIGHT:
-@@ -1801,31 +1921,33 @@
- 	case COLUMN_OFF:
- 	    column_highlighting = 0;
- 	    break;
-+	case CHAR_INSERT:
-+	    edit_insert (edit, ac.ch);
-+	    break;
-+	case CHAR_INSERT_AHEAD:
-+	    edit_insert_ahead (edit, ac.ch);
-+	    break;
- 	}
--	if (ac >= 256 && ac < 512)
--	    edit_insert_ahead (edit, ac - 256);
--	if (ac >= 0 && ac < 256)
--	    edit_insert (edit, ac);
- 
--	if (ac >= MARK_1 - 2 && ac < MARK_2 - 2) {
--	    edit->mark1 = ac - MARK_1;
-+	if (ac.flags >= MARK_1 - 2 && ac.flags < MARK_2 - 2) {
-+	    edit->mark1 = ac.flags - MARK_1;
- 	    edit->column1 = edit_move_forward3 (edit, edit_bol (edit, edit->mark1), 0, edit->mark1);
--	} else if (ac >= MARK_2 - 2 && ac < KEY_PRESS) {
--	    edit->mark2 = ac - MARK_2;
-+	} else if (ac.flags >= MARK_2 - 2 && ac.flags < KEY_PRESS) {
-+	    edit->mark2 = ac.flags - MARK_2;
- 	    edit->column2 = edit_move_forward3 (edit, edit_bol (edit, edit->mark2), 0, edit->mark2);
- 	}
- 	if (count++)
- 	    edit->force |= REDRAW_PAGE;		/* more than one pop usually means something big */
-     }
- 
--    if (edit->start_display > ac - KEY_PRESS) {
--	edit->start_line -= edit_count_lines (edit, ac - KEY_PRESS, edit->start_display);
-+    if (edit->start_display > ac.flags - KEY_PRESS) {
-+	edit->start_line -= edit_count_lines (edit, ac.flags - KEY_PRESS, edit->start_display);
- 	edit->force |= REDRAW_PAGE;
--    } else if (edit->start_display < ac - KEY_PRESS) {
--	edit->start_line += edit_count_lines (edit, edit->start_display, ac - KEY_PRESS);
-+    } else if (edit->start_display < ac.flags - KEY_PRESS) {
-+	edit->start_line += edit_count_lines (edit, edit->start_display, ac.flags - KEY_PRESS);
- 	edit->force |= REDRAW_PAGE;
-     }
--    edit->start_display = ac - KEY_PRESS;	/* see push and pop above */
-+    edit->start_display = ac.flags - KEY_PRESS;	/* see push and pop above */
-     edit_update_curs_row (edit);
- 
-   done_undo:;
-@@ -2102,7 +2224,7 @@
-  * passed as -1.  Commands are executed, and char_for_insertion is
-  * inserted at the cursor.
-  */
--void edit_execute_key_command (WEdit *edit, int command, int char_for_insertion)
-+void edit_execute_key_command (WEdit *edit, int command, mc_wint_t char_for_insertion)
- {
-     if (command == CK_Begin_Record_Macro) {
- 	edit->macro_i = 0;
-@@ -2137,7 +2259,7 @@
-    all of them. It also does not check for the Undo command.
-  */
- void
--edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
-+edit_execute_cmd (WEdit *edit, int command, mc_wint_t char_for_insertion)
- {
-     edit->force |= REDRAW_LINE;
- 
-@@ -2170,7 +2292,7 @@
-     }
- 
-     /* An ordinary key press */
--    if (char_for_insertion >= 0) {
-+    if (char_for_insertion != (mc_wint_t) -1) {
- 	if (edit->overwrite) {
- 	    if (edit_get_byte (edit, edit->curs1) != '\n')
- 		edit_delete (edit);
-diff -urN mc-4.6.1.orig/edit/editcmd.c mc-4.6.1/edit/editcmd.c
---- mc-4.6.1.orig/edit/editcmd.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/editcmd.c	2007-01-19 18:33:58.000000000 +0500
-@@ -24,7 +24,6 @@
- /* #define PIPE_BLOCKS_SO_READ_BYTE_BY_BYTE */
- 
- #include <config.h>
--#include <ctype.h>
- 
- #include "edit.h"
- #include "editlock.h"
-@@ -46,7 +45,7 @@
- #define edit_get_save_file(f,h) input_expand_dialog (h, _(" Enter file name: "), f)
- 
- struct selection {
--   unsigned char * text;
-+   mc_wchar_t *text;
-    int len;
- };
- 
-@@ -69,12 +68,16 @@
- #define MAX_REPL_LEN 1024
- 
- static int edit_save_cmd (WEdit *edit);
--static unsigned char *edit_get_block (WEdit *edit, long start,
-+static mc_wchar_t *edit_get_block (WEdit *edit, long start,
- 				      long finish, int *l);
- 
--static inline int my_lower_case (int c)
-+static inline mc_wchar_t my_lower_case (mc_wchar_t c)
- {
-+#ifndef UTF8
-     return tolower(c & 0xFF);
-+#else
-+    return towlower(c);
-+#endif    
- }
- 
- static const char *strcasechr (const unsigned char *s, int c)
-@@ -108,11 +111,11 @@
- #endif /* !HAVE_MEMMOVE */
- 
- /* #define itoa MY_itoa  <---- this line is now in edit.h */
--static char *
-+static mc_wchar_t *
- MY_itoa (int i)
- {
--    static char t[14];
--    char *s = t + 13;
-+    static mc_wchar_t t[14];
-+    mc_wchar_t *s = t + 13;
-     int j = i;
-     *s-- = 0;
-     do {
-@@ -196,6 +199,48 @@
-     doupdate();
- }
- 
-+#ifdef UTF8
-+
-+static size_t
-+wchar_write(int fd, mc_wchar_t *buf, size_t len)
-+{
-+    char *tmpbuf = g_malloc(len + MB_LEN_MAX);
-+    mbstate_t mbs;
-+    size_t i;
-+    size_t outlen = 0;
-+    size_t res;
-+
-+    for (i = 0; i < len; i++) {
-+	if (outlen >= len) {
-+	    if ((res = mc_write(fd, tmpbuf, outlen)) != outlen) {
-+		g_free(tmpbuf);
-+		return -1;
-+	    }
-+	    outlen = 0;
-+	}
-+	memset (&mbs, 0, sizeof (mbs));
-+#ifdef __STDC_ISO_10646__ 
-+	if (buf[i] >= BINARY_CHAR_OFFSET && buf[i] < (BINARY_CHAR_OFFSET + 256)) {
-+	    res = 1;
-+	    tmpbuf[outlen] = (char) (buf[i] - BINARY_CHAR_OFFSET);
-+
-+	} else
-+#endif
-+	res = wcrtomb(tmpbuf + outlen, buf[i], &mbs);
-+	if (res > 0) {
-+	    outlen += res;
-+	}
-+    }
-+    if ((res = mc_write(fd, tmpbuf, outlen)) != outlen) {
-+	g_free(tmpbuf);
-+	return -1;
-+    }
-+    g_free(tmpbuf);
-+    return len;
-+}
-+
-+#endif /* UTF8 */
-+
- /*  If 0 (quick save) then  a) create/truncate <filename> file,
- 			    b) save to <filename>;
-     if 1 (safe save) then   a) save to <tempnam>,
-@@ -225,7 +270,7 @@
-     }
- 
-     if (!vfs_file_is_local (filename) ||
--	(fd = mc_open (filename, O_WRONLY | O_BINARY)) == -1) {
-+	(fd = mc_open (filename, O_RDONLY | O_BINARY)) == -1) {
- 	/*
- 	 * The file does not exists yet, so no safe save or
- 	 * backup are necessary.
-@@ -303,32 +348,48 @@
- 	buf = 0;
- 	filelen = edit->last_byte;
- 	while (buf <= (edit->curs1 >> S_EDIT_BUF_SIZE) - 1) {
-+#ifndef UTF8
- 	    if (mc_write (fd, (char *) edit->buffers1[buf], EDIT_BUF_SIZE)
-+#else /* UTF8 */
-+	    if (wchar_write (fd, edit->buffers1[buf], EDIT_BUF_SIZE)
-+#endif /* UTF8 */
- 		!= EDIT_BUF_SIZE) {
- 		mc_close (fd);
- 		goto error_save;
- 	    }
- 	    buf++;
- 	}
-+#ifndef UTF8
- 	if (mc_write
- 	    (fd, (char *) edit->buffers1[buf],
-+#else /* UTF8 */
-+	if (wchar_write
-+	    (fd, edit->buffers1[buf],
-+#endif /* UTF8 */
- 	     edit->curs1 & M_EDIT_BUF_SIZE) !=
- 	    (edit->curs1 & M_EDIT_BUF_SIZE)) {
- 	    filelen = -1;
- 	} else if (edit->curs2) {
- 	    edit->curs2--;
- 	    buf = (edit->curs2 >> S_EDIT_BUF_SIZE);
--	    if (mc_write
--		(fd,
--		 (char *) edit->buffers2[buf] + EDIT_BUF_SIZE -
-+#ifndef UTF8
-+	    if (mc_write(fd, (char *) edit->buffers2[buf] + EDIT_BUF_SIZE -
-+#else /* UTF8 */
-+	    if (wchar_write(fd, edit->buffers2[buf] + EDIT_BUF_SIZE -
-+#endif /* UTF8 */
- 		 (edit->curs2 & M_EDIT_BUF_SIZE) - 1,
- 		 1 + (edit->curs2 & M_EDIT_BUF_SIZE)) !=
- 		1 + (edit->curs2 & M_EDIT_BUF_SIZE)) {
- 		filelen = -1;
- 	    } else {
- 		while (--buf >= 0) {
-+#ifndef UTF8
- 		    if (mc_write
- 			(fd, (char *) edit->buffers2[buf],
-+#else /* UTF8 */
-+		    if (wchar_write
-+			(fd, edit->buffers2[buf],
-+#endif /* UTF8 */
- 			 EDIT_BUF_SIZE) != EDIT_BUF_SIZE) {
- 			filelen = -1;
- 			break;
-@@ -643,13 +704,21 @@
- 	if (!n || n == EOF)
- 	    break;
- 	n = 0;
-+#ifndef UTF8
- 	while (fscanf (f, "%hd %hd, ", &macro[n].command, &macro[n].ch))
-+#else /* UTF8 */
-+	while (fscanf (f, "%hd %lu, ", &macro[n].command, &macro[n].ch))
-+#endif /* UTF8 */
- 	    n++;
- 	fscanf (f, ";\n");
- 	if (s != k) {
- 	    fprintf (g, ("key '%d 0': "), s);
- 	    for (i = 0; i < n; i++)
-+#ifndef UTF8
- 		fprintf (g, "%hd %hd, ", macro[i].command, macro[i].ch);
-+#else /* UTF8 */
-+		fprintf (g, "%hd %lu, ", macro[i].command, macro[i].ch);
-+#endif /* UTF8 */
- 	    fprintf (g, ";\n");
- 	}
-     }
-@@ -685,7 +754,11 @@
- 	if (f) {
- 	    fprintf (f, ("key '%d 0': "), s);
- 	    for (i = 0; i < n; i++)
-+#ifndef UTF8
- 		fprintf (f, "%hd %hd, ", macro[i].command, macro[i].ch);
-+#else /* UTF8 */
-+		fprintf (f, "%hd %lu, ", macro[i].command, macro[i].ch);
-+#endif /* UTF8 */
- 	    fprintf (f, ";\n");
- 	    fclose (f);
- 	    if (saved_macros_loaded) {
-@@ -734,10 +807,18 @@
- 		saved_macro[i++] = s;
- 	    if (!found) {
- 		*n = 0;
-+#ifndef UTF8
- 		while (*n < MAX_MACRO_LENGTH && 2 == fscanf (f, "%hd %hd, ", &macro[*n].command, &macro[*n].ch))
-+#else /* UTF8 */
-+		while (*n < MAX_MACRO_LENGTH && 2 == fscanf (f, "%hd %lu, ", &macro[*n].command, &macro[*n].ch))
-+#endif /* UTF8 */
- 		    (*n)++;
- 	    } else {
-+#ifndef UTF8
- 		while (2 == fscanf (f, "%hd %hd, ", &dummy.command, &dummy.ch));
-+#else /* UTF8 */
-+		while (2 == fscanf (f, "%hd %lu, ", &dummy.command, &dummy.ch));
-+#endif /* UTF8 */
- 	    }
- 	    fscanf (f, ";\n");
- 	    if (s == k)
-@@ -886,7 +967,7 @@
- #define space_width 1
- 
- static void
--edit_insert_column_of_text (WEdit * edit, unsigned char *data, int size, int width)
-+edit_insert_column_of_text (WEdit * edit, mc_wchar_t *data, int size, int width)
- {
-     long cursor;
-     int i, col;
-@@ -934,7 +1015,7 @@
- {
-     long start_mark, end_mark, current = edit->curs1;
-     int size, x;
--    unsigned char *copy_buf;
-+    mc_wchar_t *copy_buf;
- 
-     edit_update_curs_col (edit);
-     x = edit->curs_col;
-@@ -979,7 +1060,7 @@
- {
-     long count;
-     long current;
--    unsigned char *copy_buf;
-+    mc_wchar_t *copy_buf;
-     long start_mark, end_mark;
-     int deleted = 0;
-     int x = 0;
-@@ -1040,7 +1121,7 @@
- 	edit_push_action (edit, COLUMN_ON);
- 	column_highlighting = 0;
-     } else {
--	copy_buf = g_malloc (end_mark - start_mark);
-+	copy_buf = g_malloc ((end_mark - start_mark) * sizeof(mc_wchar_t));
- 	edit_cursor_move (edit, start_mark - edit->curs1);
- 	edit_scroll_screen_over_cursor (edit);
- 	count = start_mark;
-@@ -1371,7 +1452,11 @@
- /* This function is a modification of mc-3.2.10/src/view.c:regexp_view_search() */
- /* returns -3 on error in pattern, -1 on not found, found_len = 0 if either */
- static int
-+#ifndef UTF8
- string_regexp_search (char *pattern, char *string, int len, int match_type,
-+#else /* UTF8 */
-+string_regexp_search (char *pattern, mc_wchar_t *wstring, int match_type,
-+#endif /* UTF8 */
- 		      int match_bol, int icase, int *found_len, void *d)
- {
-     static regex_t r;
-@@ -1380,6 +1465,11 @@
-     regmatch_t *pmatch;
-     static regmatch_t s[1];
- 
-+#ifdef UTF8
-+    char *string;
-+    int i;
-+#endif /* UTF8 */
-+
-     pmatch = (regmatch_t *) d;
-     if (!pmatch)
- 	pmatch = s;
-@@ -1399,13 +1489,51 @@
- 	old_type = match_type;
- 	old_icase = icase;
-     }
-+
-+#ifdef UTF8
-+    string = wchar_to_mbstr(wstring);
-+    if (string == NULL)
-+	return -1;
-+#endif /* UTF8 */
-+
-     if (regexec
- 	(&r, string, d ? NUM_REPL_ARGS : 1, pmatch,
- 	 ((match_bol
- 	   || match_type != match_normal) ? 0 : REG_NOTBOL)) != 0) {
- 	*found_len = 0;
-+
-+#ifdef UTF8
-+	g_free(string);
-+#endif /* UTF8 */
-+
- 	return -1;
-     }
-+
-+#ifdef UTF8
-+    for (i = 0; i < (d ? NUM_REPL_ARGS : 1); i++) {
-+	char tmp;
-+	int new_o;
-+
-+	if (pmatch[i].rm_so < 0)
-+	    continue;
-+	tmp = string[pmatch[i].rm_so];
-+	string[pmatch[i].rm_so] = 0;
-+	new_o = mbstrlen(string);
-+	string[pmatch[i].rm_so] = tmp;
-+	pmatch[i].rm_so = new_o; 
-+
-+	if (pmatch[i].rm_eo < 0)
-+	    continue;
-+	tmp = string[pmatch[i].rm_eo];
-+	string[pmatch[i].rm_eo] = 0;
-+	new_o = mbstrlen(string);
-+	string[pmatch[i].rm_eo] = tmp;
-+	pmatch[i].rm_eo = new_o; 
-+    }
-+
-+    g_free(string);
-+#endif /* UTF8 */
-+
-     *found_len = pmatch[0].rm_eo - pmatch[0].rm_so;
-     return (pmatch[0].rm_so);
- }
-@@ -1413,13 +1541,29 @@
- /* thanks to  Liviu Daia <daia@stoilow.imar.ro>  for getting this
-    (and the above) routines to work properly - paul */
- 
-+#ifndef UTF8
- typedef int (*edit_getbyte_fn) (WEdit *, long);
-+#else /* UTF8 */
-+typedef mc_wchar_t (*edit_getbyte_fn) (WEdit *, long);
-+#endif /* UTF8 */
- 
- static long
-+#ifndef UTF8
- edit_find_string (long start, unsigned char *exp, int *len, long last_byte, edit_getbyte_fn get_byte, void *data, int once_only, void *d)
-+#else /* UTF8 */
-+edit_find_string (long start, unsigned char *exp_mb, int *len, long last_byte, edit_getbyte_fn get_byte, void *data, int once_only, void *d)
-+#endif /* UTF8 */
- {
-     long p, q = 0;
--    long l = strlen ((char *) exp), f = 0;
-+    long f = 0;
-+
-+#ifndef UTF8
-+    long l = strlen ((char *) exp);
-+#else /* UTF8 */
-+    mc_wchar_t *exp = mbstr_to_wchar((char *)exp_mb);
-+    mc_wchar_t *exp_backup = exp;
-+    long l = wcslen(exp);
-+#endif /* UTF8 */
-     int n = 0;
- 
-     for (p = 0; p < l; p++)	/* count conversions... */
-@@ -1428,19 +1572,22 @@
- 		n++;
- 
-     if (replace_scanf || replace_regexp) {
--	int c;
--	unsigned char *buf;
--	unsigned char mbuf[MAX_REPL_LEN * 2 + 3];
-+	mc_wint_t c;
-+	mc_wchar_t *buf;
-+	mc_wchar_t mbuf[MAX_REPL_LEN * 2 + 3];
- 
- 	replace_scanf = (!replace_regexp);	/* can't have both */
- 
- 	buf = mbuf;
- 
- 	if (replace_scanf) {
--	    unsigned char e[MAX_REPL_LEN];
--	    if (n >= NUM_REPL_ARGS)
--		return -3;
--
-+	    mc_wchar_t e[MAX_REPL_LEN];
-+	    if (n >= NUM_REPL_ARGS) {
-+#ifdef UTF8
-+                g_free(exp_backup);
-+#endif /* UTF8 */
-+                return -3;
-+	    }
- 	    if (replace_case) {
- 		for (p = start; p < last_byte && p < start + MAX_REPL_LEN; p++)
- 		    buf[p - start] = (*get_byte) (data, p);
-@@ -1454,20 +1601,36 @@
- 	    }
- 
- 	    buf[(q = p - start)] = 0;
-+#ifndef UTF8
- 	    strcpy ((char *) e, (char *) exp);
- 	    strcat ((char *) e, "%n");
-+#else /* UTF8 */
-+	    wcscpy (e, exp);
-+	    wcscat (e, L"%n");
-+#endif /* UTF8 */
- 	    exp = e;
- 
- 	    while (q) {
- 		*((int *) sargs[n]) = 0;	/* --> here was the problem - now fixed: good */
-+#ifndef UTF8
- 		if (n == sscanf ((char *) buf, (char *) exp, SCANF_ARGS)) {
-+#else /* UTF8 */
-+		if (n == swscanf (buf, exp, SCANF_ARGS)) {
-+#endif /* UTF8 */
- 		    if (*((int *) sargs[n])) {
- 			*len = *((int *) sargs[n]);
-+#ifdef UTF8
-+			g_free(exp_backup);
-+#endif /* UTF8 */
- 			return start;
- 		    }
- 		}
--		if (once_only)
-+		if (once_only) {
-+#ifdef UTF8
-+		    g_free(exp_backup);
-+#endif /* UTF8 */
- 		    return -2;
-+		}
- 		if (q + start < last_byte) {
- 		    if (replace_case) {
- 			buf[q] = (*get_byte) (data, q + start);
-@@ -1481,7 +1644,11 @@
- 		start++;
- 		buf++;		/* move the window along */
- 		if (buf == mbuf + MAX_REPL_LEN) {	/* the window is about to go past the end of array, so... */
-+#ifndef UTF8
- 		    memmove (mbuf, buf, strlen ((char *) buf) + 1);	/* reset it */
-+#else /* UTF8 */
-+		    wmemmove (mbuf, buf, (wcslen (buf) + 1));	/* reset it */
-+#endif /* UTF8 */
- 		    buf = mbuf;
- 		}
- 		q--;
-@@ -1507,10 +1674,17 @@
- 
- 		buf = mbuf;
- 		while (q) {
-+#ifndef UTF8
- 		    found_start = string_regexp_search ((char *) exp, (char *) buf, q, match_normal, match_bol, !replace_case, len, d);
-+#else /* UTF8 */
-+                    found_start = string_regexp_search ((char *) exp_mb, buf, match_normal, match_bol, !replace_case, len, d);
-+#endif /* UTF8 */
- 
- 		    if (found_start <= -2) {	/* regcomp/regexec error */
- 			*len = 0;
-+#ifdef UTF8
-+                        g_free (exp_backup);
-+#endif /* UTF8 */
- 			return -3;
- 		    }
- 		    else if (found_start == -1)	/* not found: try next line */
-@@ -1521,15 +1695,27 @@
- 			match_bol = 0;
- 			continue;
- 		    }
--		    else	/* found */
-+		    else {	/* found */
-+#ifdef UTF8
-+			g_free(exp_backup);
-+#endif /* UTF8 */
- 			return (start + offset - q + found_start);
-+		    }
- 		}
--		if (once_only)
-+		if (once_only) {
-+#ifdef UTF8
-+		    g_free(exp_backup);
-+#endif /* UTF8 */
- 		    return -2;
-+		}
- 
- 		if (buf[q - 1] != '\n') { /* incomplete line: try to recover */
- 		    buf = mbuf + MAX_REPL_LEN / 2;
-+#ifndef UTF8
- 		    q = strlen ((const char *) buf);
-+#else /* UTF8 */
-+		    q = wcslen (buf);
-+#endif /* UTF8 */
- 		    memmove (mbuf, buf, q);
- 		    p = start + q;
- 		    move_win = 1;
-@@ -1539,36 +1725,59 @@
- 	    }
- 	}
-     } else {
-+#ifndef UTF8
-  	*len = strlen ((const char *) exp);
-+#else /* UTF8 */
-+        *len = wcslen (exp);
-+#endif /* UTF8 */
- 	if (replace_case) {
- 	    for (p = start; p <= last_byte - l; p++) {
-- 		if ((*get_byte) (data, p) == (unsigned char)exp[0]) {	/* check if first char matches */
-+                if ((*get_byte) (data, p) == exp[0]) {  /* check if first char matches */
- 		    for (f = 0, q = 0; q < l && f < 1; q++)
-- 			if ((*get_byte) (data, q + p) != (unsigned char)exp[q])
-+                        if ((*get_byte) (data, q + p) != exp[q])
- 			    f = 1;
--		    if (f == 0)
-+                    if (f == 0) {
-+#ifdef UTF8
-+                        g_free (exp_backup);
-+#endif /* UTF8 */
- 			return p;
-+		    }
- 		}
--		if (once_only)
-+                if (once_only) {
-+#ifdef UTF8
-+                    g_free(exp_backup);
-+#endif /* UTF8 */
- 		    return -2;
-+		}
- 	    }
- 	} else {
- 	    for (p = 0; exp[p] != 0; p++)
- 		exp[p] = my_lower_case (exp[p]);
- 
- 	    for (p = start; p <= last_byte - l; p++) {
--		if (my_lower_case ((*get_byte) (data, p)) == (unsigned char)exp[0]) {
-+                if (my_lower_case ((*get_byte) (data, p)) == exp[0]) {
- 		    for (f = 0, q = 0; q < l && f < 1; q++)
--			if (my_lower_case ((*get_byte) (data, q + p)) != (unsigned char)exp[q])
-+                        if (my_lower_case ((*get_byte) (data, q + p)) != exp[q])
- 			    f = 1;
--		    if (f == 0)
-+		    if (f == 0) {
-+#ifdef UTF8
-+                        g_free (exp_backup);
-+#endif /* UTF8 */
- 			return p;
-+		    }
- 		}
--		if (once_only)
-+		if (once_only) {
-+#ifdef UTF8
-+                    g_free (exp_backup);
-+#endif /* UTF8 */
- 		    return -2;
-+		}
- 	    }
- 	}
-     }
-+#ifdef UTF8
-+    g_free (exp_backup);
-+#endif /* UTF8 */
-     return -2;
- }
- 
-@@ -1582,9 +1791,14 @@
- 
-     while ((p = edit_find_string (p, exp, len, last_byte, get_byte, data, once_only, d)) >= 0) {
- 	if (replace_whole) {
-+#ifndef UTF8
- /*If the bordering chars are not in option_whole_chars_search then word is whole */
- 	    if (!strcasechr (option_whole_chars_search, (*get_byte) (data, p - 1))
- 		&& !strcasechr (option_whole_chars_search, (*get_byte) (data, p + *len)))
-+#else /* UTF8 */
-+	    if (!iswalnum((*get_byte) (data, p - 1))
-+		&& !iswalnum((*get_byte) (data, p + *len)))
-+#endif /* UTF8 */
- 		return p;
- 	    if (once_only)
- 		return -2;
-@@ -1616,6 +1830,7 @@
- 
- #define is_digit(x) ((x) >= '0' && (x) <= '9')
- 
-+#ifndef UTF8
- #define snprint(v) { \
- 		*p1++ = *p++; \
- 		*p1 = '\0'; \
-@@ -1623,33 +1838,48 @@
- 		if (n >= (size_t) (e - s)) goto nospc; \
- 		s += n; \
- 	    }
-+#else /* UTF8 */
-+#define snprint(v) { \
-+		*p1++ = *p++; \
-+		*p1 = '\0'; \
-+		n = swprintf(s, e-s, q1,v); \
-+		if (n >= (size_t) (e - s)) goto nospc; \
-+		s += n; \
-+	    }
-+#endif /* UTF8 */
- 
- /* this function uses the sprintf command to do a vprintf */
- /* it takes pointers to arguments instead of the arguments themselves */
- /* The return value is the number of bytes written excluding '\0'
-    if successfull, -1 if the resulting string would be too long and
-    -2 if the format string is errorneous.  */
--static int snprintf_p (char *str, size_t size, const char *fmt,...)
--    __attribute__ ((format (printf, 3, 4)));
--
--static int snprintf_p (char *str, size_t size, const char *fmt,...)
-+static int snprintf_p (mc_wchar_t *str, size_t size, const mc_wchar_t *fmt,...)
- {
-     va_list ap;
-     size_t n;
--    const char *q, *p;
--    char *s = str, *e = str + size;
--    char q1[40];
--    char *p1;
-+    const mc_wchar_t *q, *p;
-+    mc_wchar_t *s = str, *e = str + size;
-+    mc_wchar_t q1[40];
-+
-+    mc_wchar_t *p1;
-     int nargs = 0;
- 
-     va_start (ap, fmt);
-     p = q = fmt;
- 
-+#ifndef UTF8
-     while ((p = strchr (p, '%'))) {
-+#else /* UTF8 */
-+    while ((p = wcschr (p, L'%'))) {
-+#endif /* UTF8 */
- 	n = p - q;
- 	if (n >= (size_t) (e - s))
- 	  goto nospc;
-+#ifndef UTF8
- 	memcpy (s, q, n);	/* copy stuff between format specifiers */
-+#else /* UTF8 */
-+	wmemcpy (s, q, n);	/* copy stuff between format specifiers */
-+#endif /* UTF8 */
- 	s += n;
- 	q = p;
- 	p1 = q1;
-@@ -1677,45 +1907,78 @@
- 	    *p1++ = *p++;
- 	if (*p == '*') {
- 	    p++;
-+#ifndef UTF8
- 	    strcpy (p1, MY_itoa (*va_arg (ap, int *)));	/* replace field width with a number */
- 	    p1 += strlen (p1);
-+#else /* UTF8 */
-+	    wcscpy (p1, MY_itoa (*va_arg (ap, int *)));	/* replace field width with a number */
-+	    p1 += wcslen (p1);
-+#endif /* UTF8 */
- 	} else {
--	    while (is_digit (*p) && p1 < q1 + 20)
-+#ifndef UTF8
-+	    while (is_digit (*p)
-+#else /* UTF8 */
-+	    while (iswdigit (*p)
-+#endif /* UTF8 */
-+		    && p1 < q1 + 20)
- 		*p1++ = *p++;
--	    if (is_digit (*p))
-+#ifndef UTF8
-+	    if (is_digit (*p)) 
-+#else /* UTF8 */
-+	    if (iswdigit (*p))
-+#endif /* UTF8 */
- 		goto err;
- 	}
- 	if (*p == '.')
- 	    *p1++ = *p++;
- 	if (*p == '*') {
- 	    p++;
-+#ifndef UTF8
- 	    strcpy (p1, MY_itoa (*va_arg (ap, int *)));	/* replace precision with a number */
- 	    p1 += strlen (p1);
-+#else /* UTF8 */
-+	    wcscpy (p1, MY_itoa (*va_arg (ap, int *)));	/* replace precision with a number */
-+	    p1 += wcslen (p1);
-+#endif /* UTF8 */
- 	} else {
--	    while (is_digit (*p) && p1 < q1 + 32)
-+#ifndef UTF8
-+	    while (is_digit (*p)
-+#else /* UTF8 */
-+	    while (iswdigit (*p)
-+#endif /* UTF8 */
-+		&& p1 < q1 + 32)
- 		*p1++ = *p++;
--	    if (is_digit (*p))
-+#ifndef UTF8
-+	    if (is_digit (*p)) 
-+#else /* UTF8 */
-+	    if (iswdigit (*p))
-+#endif /* UTF8 */
- 		goto err;
- 	}
- /* flags done, now get argument */
- 	if (*p == 's') {
-+#ifndef UTF8
- 	    snprint (va_arg (ap, char *));
-+#else /* UTF8 */
-+	    *p1++ = 'l';
-+	    snprint (va_arg (ap, mc_wchar_t *));
-+#endif /* UTF8 */
- 	} else if (*p == 'h') {
--	    if (strchr ("diouxX", *p))
-+	    if (*p < 128 && strchr ("diouxX", *p))
- 		snprint (*va_arg (ap, short *));
- 	} else if (*p == 'l') {
- 	    *p1++ = *p++;
--	    if (strchr ("diouxX", *p))
-+	    if (*p < 128 && strchr ("diouxX", *p))
- 		snprint (*va_arg (ap, long *));
--	} else if (strchr ("cdiouxX", *p)) {
-+	} else if (*p < 128 && strchr ("cdiouxX", *p)) {
- 	    snprint (*va_arg (ap, int *));
- 	} else if (*p == 'L') {
- 	    *p1++ = *p++;
--	    if (strchr ("EefgG", *p))
-+	    if (*p < 128 && strchr ("EefgG", *p))
- 		snprint (*va_arg (ap, double *));	/* should be long double */
--	} else if (strchr ("EefgG", *p)) {
-+	} else if (*p < 128 && strchr ("EefgG", *p)) {
- 	    snprint (*va_arg (ap, double *));
--	} else if (strchr ("DOU", *p)) {
-+	} else if (*p < 128 && strchr ("DOU", *p)) {
- 	    snprint (*va_arg (ap, long *));
- 	} else if (*p == 'p') {
- 	    snprint (*va_arg (ap, void **));
-@@ -1724,10 +1987,17 @@
- 	q = p;
-     }
-     va_end (ap);
-+#ifndef UTF8
-     n = strlen (q);
-     if (n >= (size_t) (e - s))
- 	return -1;
-     memcpy (s, q, n + 1);
-+#else /* UTF8 */
-+    n = wcslen (q);
-+    if (n >= (size_t) (e - s))
-+	return -1;
-+    wmemcpy (s, q, n + 1);
-+#endif /* UTF8 */
-     return s + n - str;
- nospc:
-     va_end (ap);
-@@ -1902,8 +2172,11 @@
- 		}
- 	    }
- 	    if (replace_yes) {	/* delete then insert new */
-+#ifdef UTF8
-+		mc_wchar_t *winput2 = mbstr_to_wchar(exp2);
-+#endif /* UTF8 */
- 		if (replace_scanf || replace_regexp) {
--		    char repl_str[MAX_REPL_LEN + 2];
-+		    mc_wchar_t repl_str[MAX_REPL_LEN + 2];
- 		    int ret = 0;
- 
- 		    /* we need to fill in sargs just like with scanf */
-@@ -1912,17 +2185,25 @@
- 			for (k = 1;
- 			     k < NUM_REPL_ARGS && pmatch[k].rm_eo >= 0;
- 			     k++) {
-+#ifndef UTF8
- 			    unsigned char *t;
-+#else /* UTF8 */
-+			    mc_wchar_t *t;
-+#endif
- 
- 			    if (pmatch[k].rm_eo - pmatch[k].rm_so > 255) {
- 				ret = -1;
- 				break;
- 			    }
-+#ifndef UTF8
- 			    t = (unsigned char *) &sargs[k - 1][0];
-+#else /* UTF8 */
-+			    t = (mc_wchar_t *) &sargs[k - 1][0];
-+#endif /* UTF8 */
- 			    for (j = 0;
- 				 j < pmatch[k].rm_eo - pmatch[k].rm_so
- 				 && j < 255; j++, t++)
--				*t = (unsigned char) edit_get_byte (edit,
-+				*t = edit_get_byte (edit,
- 								    edit->
- 								    search_start
- 								    -
-@@ -1939,13 +2220,22 @@
- 			    sargs[k - 1][0] = 0;
- 		    }
- 		    if (!ret)
-+#ifndef UTF8
- 			ret = snprintf_p (repl_str, MAX_REPL_LEN + 2, exp2, PRINTF_ARGS);
-+#else /* UTF8 */
-+                        ret = snprintf_p (repl_str, MAX_REPL_LEN + 2, winput2, PRINTF_ARGS);
-+#endif /* UTF8 */
- 		    if (ret >= 0) {
- 			times_replaced++;
- 			while (i--)
- 			    edit_delete (edit);
-+#ifndef UTF8
- 			while (repl_str[++i])
- 			    edit_insert (edit, repl_str[i]);
-+#else /* UTF8 */
-+                        while (winput2[++i])
-+                            edit_insert (edit, winput2[i]);
-+#endif /* UTF8 */
- 		    } else {
- 			edit_error_dialog (_(" Replace "),
- 					   ret == -2
-@@ -1957,10 +2247,18 @@
- 		    times_replaced++;
- 		    while (i--)
- 			edit_delete (edit);
-+#ifndef UTF8
- 		    while (exp2[++i])
- 			edit_insert (edit, exp2[i]);
-+#else /* UTF8 */
-+                    while (winput2[++i])
-+                        edit_insert (edit, winput2[i]);
-+#endif
- 		}
- 		edit->found_len = i;
-+#ifdef UTF8
-+                g_free (winput2);
-+#endif /* UTF8 */
- 	    }
- 	    /* so that we don't find the same string again */
- 	    if (replace_backwards) {
-@@ -2132,16 +2430,17 @@
- #define TEMP_BUF_LEN 1024
- 
- /* Return a null terminated length of text. Result must be g_free'd */
--static unsigned char *
-+static mc_wchar_t *
- edit_get_block (WEdit *edit, long start, long finish, int *l)
- {
--    unsigned char *s, *r;
--    r = s = g_malloc (finish - start + 1);
-+    mc_wchar_t *s, *r;
-+    r = s = g_malloc ((finish - start + 1) * sizeof(mc_wchar_t));
-     if (column_highlighting) {
- 	*l = 0;
- 	/* copy from buffer, excluding chars that are out of the column 'margins' */
- 	while (start < finish) {
--	    int c, x;
-+	    mc_wchar_t c;
-+	    int x;
- 	    x = edit_move_forward3 (edit, edit_bol (edit, start), 0,
- 				    start);
- 	    c = edit_get_byte (edit, start);
-@@ -2174,11 +2473,15 @@
- 	return 0;
- 
-     if (column_highlighting) {
--	unsigned char *block, *p;
-+	mc_wchar_t *block, *p;
- 	int r;
- 	p = block = edit_get_block (edit, start, finish, &len);
- 	while (len) {
-+#ifndef UTF8
- 	    r = mc_write (file, p, len);
-+#else /* UTF8 */
-+	    r = wchar_write (file, p, len);
-+#endif /* UTF8 */
- 	    if (r < 0)
- 		break;
- 	    p += r;
-@@ -2186,15 +2489,19 @@
- 	}
- 	g_free (block);
-     } else {
--	unsigned char *buf;
-+	mc_wchar_t *buf;
- 	int i = start, end;
- 	len = finish - start;
--	buf = g_malloc (TEMP_BUF_LEN);
-+	buf = g_malloc (TEMP_BUF_LEN * sizeof(mc_wchar_t));
- 	while (start != finish) {
- 	    end = min (finish, start + TEMP_BUF_LEN);
- 	    for (; i < end; i++)
- 		buf[i - start] = edit_get_byte (edit, i);
-+#ifndef UTF8
- 	    len -= mc_write (file, (char *) buf, end - start);
-+#else /* UTF8 */
-+	    len -= wchar_write (file, buf, end - start);
-+#endif /* UTF8 */
- 	    start = end;
- 	}
- 	g_free (buf);
-@@ -2531,17 +2838,20 @@
- 
- /* prints at the cursor */
- /* returns the number of chars printed */
-+#ifndef UTF8
- int edit_print_string (WEdit * e, const char *s)
-+#else /* UTF8 */
-+int edit_print_wstring (WEdit * e, mc_wchar_t *s)
-+#endif /* UTF8 */
- {
-     int i = 0;
-     while (s[i])
--	edit_execute_cmd (e, -1, (unsigned char) s[i++]);
-+	edit_execute_cmd (e, -1, s[i++]);
-     e->force |= REDRAW_COMPLETELY;
-     edit_update_screen (e);
-     return i;
- }
- 
--
- static void pipe_mail (WEdit *edit, char *to, char *subject, char *cc)
- {
-     FILE *p = 0;
-@@ -2635,15 +2945,20 @@
- /* find first character of current word */
- static int edit_find_word_start (WEdit *edit, long *word_start, int *word_len)
- {
--    int i, c, last;
-+    int i;
-+    mc_wint_t c, last;
-     
- /* return if at begin of file */
-     if (edit->curs1 <= 0)
- 	return 0;
- 
--    c = (unsigned char) edit_get_byte (edit, edit->curs1 - 1);
-+    c = edit_get_byte (edit, edit->curs1 - 1);
- /* return if not at end or in word */
-+#ifndef UTF8
-     if (isspace (c) || !(isalnum (c) || c == '_'))
-+#else /* UTF8 */
-+    if (iswspace (c) || !(iswalnum (c) || c == '_'))
-+#endif /* UTF8 */
- 	return 0; 
- 
- /* search start of word to be completed */
-@@ -2653,11 +2968,19 @@
- 	    return 0;
- 	    
- 	last = c;
--	c = (unsigned char) edit_get_byte (edit, edit->curs1 - i);
-+	c = edit_get_byte (edit, edit->curs1 - i);
- 
-+#ifndef UTF8
- 	if (!(isalnum (c) || c == '_')) {
-+#else /* UTF8 */
-+	if (!(iswalnum (c) || c == '_')) {
-+#endif /* UTF8 */
- /* return if word starts with digit */
-+#ifndef UTF8
- 	    if (isdigit (last))
-+#else /* UTF8 */
-+	    if (iswdigit (last))
-+#endif /* UTF8 */
- 		return 0;
- 
- 	    *word_start = edit->curs1 - (i - 1); /* start found */
-@@ -2690,7 +3013,7 @@
- 			  int *num)
- {
-     int len, max_len = 0, i, skip;
--    char *bufpos;
-+    mc_wchar_t *bufpos;
- 
-     /* collect max MAX_WORD_COMPLETIONS completions */
-     while (*num < MAX_WORD_COMPLETIONS) {
-@@ -2711,9 +3034,16 @@
- 	    buffers1[start >> S_EDIT_BUF_SIZE][start & M_EDIT_BUF_SIZE];
- 	skip = 0;
- 	for (i = 0; i < *num; i++) {
-+#ifndef UTF8
- 	    if (strncmp
- 		(&compl[i].text[word_len], &bufpos[word_len],
--		 max (len, compl[i].len) - word_len) == 0) {
-+		 max (len,
-+#else /* UTF8 */
-+            if (wcsncmp
-+                ((wchar_t *) &compl[i].text[word_len],
-+                 (wchar_t *) &bufpos[word_len], max (len,
-+#endif /* UTF8 */
-+                 compl[i].len) - word_len) == 0) {
- 		skip = 1;
- 		break;		/* skip it, already added */
- 	    }
-@@ -2721,7 +3051,7 @@
- 	if (skip)
- 	    continue;
- 
--	compl[*num].text = g_malloc (len + 1);
-+	compl[*num].text = g_malloc ((len + 1) * sizeof(mc_wchar_t));
- 	compl[*num].len = len;
- 	for (i = 0; i < len; i++)
- 	    compl[*num].text[i] = *(bufpos + i);
-@@ -2735,6 +3065,18 @@
-     return max_len;
- }
- 
-+#ifdef UTF8
-+int edit_print_string (WEdit * e, const char *s)
-+{
-+    int i;
-+    mc_wchar_t *ws = mbstr_to_wchar(s);
-+    i = edit_print_wstring (e, ws);
-+    g_free(ws);
-+    return i;
-+}
-+
-+#endif /* UTF8 */
-+
- 
- /* let the user select its preferred completion */
- static void
-@@ -2747,6 +3089,10 @@
-     WListbox *compl_list;
-     int compl_dlg_h;	/* completion dialog height */
-     int compl_dlg_w;	/* completion dialog width */
-+#ifdef UTF8
-+    char *mbtext;
-+#endif /* UTF8 */
-+
- 
-     /* calculate the dialog metrics */
-     compl_dlg_h = num_compl + 2;
-@@ -2782,8 +3128,16 @@
-     add_widget (compl_dlg, compl_list);
- 
-     /* fill the listbox with the completions */
-+#ifndef UTF8
-     for (i = 0; i < num_compl; i++)
- 	listbox_add_item (compl_list, 0, 0, compl[i].text, NULL);
-+#else /* UTF8 */
-+    for (i = 0; i < num_compl; i++) {
-+        mbtext = wchar_to_mbstr(compl[i].text);
-+        listbox_add_item (compl_list, 0, 0, mbtext, NULL);
-+        g_free(mbtext);
-+    }
-+#endif /* UTF8 */
- 
-     /* pop up the dialog */
-     run_dlg (compl_dlg);
-@@ -2791,9 +3145,17 @@
-     /* apply the choosen completion */
-     if (compl_dlg->ret_value == B_ENTER) {
- 	listbox_get_current (compl_list, &curr, NULL);
--	if (curr)
-+	if (curr){
-+#ifndef UTF8
- 	    for (curr += word_len; *curr; curr++)
- 		edit_insert (edit, *curr);
-+#else /* UTF8 */
-+	    mc_wchar_t *wc, *wccurr = mbstr_to_wchar(curr);
-+	    for (wc = wccurr + word_len; *wc; wc++)
-+		edit_insert (edit, *wc);
-+	    g_free(wccurr);
-+#endif /* UTF8 */
-+	}
-     }
- 
-     /* destroy dialog before return */
-@@ -2810,8 +3172,9 @@
- {
-     int word_len = 0, i, num_compl = 0, max_len;
-     long word_start = 0;
--    char *bufpos;
--    char *match_expr;
-+    mc_wchar_t *bufpos;
-+    mc_wchar_t *match_expr;
-+    char *mbmatch_expr;
-     struct selection compl[MAX_WORD_COMPLETIONS];	/* completions */
- 
-     /* don't want to disturb another search */
-@@ -2828,16 +3191,32 @@
-     /* prepare match expression */
-     bufpos = &edit->buffers1[word_start >> S_EDIT_BUF_SIZE]
- 	[word_start & M_EDIT_BUF_SIZE];
-+
-+    match_expr = g_malloc((word_len + 14) * sizeof(mc_wchar_t));
-+#ifndef UTF8
-     match_expr = g_strdup_printf ("%.*s[a-zA-Z_0-9]+", word_len, bufpos);
-+#else /* UTF8 */
-+    wcsncpy (match_expr, bufpos, word_len);
-+    match_expr[word_len] = '\0';
-+    wcscat (match_expr, L"[a-zA-Z_0-9]+");
-+#endif /* UTF8 */
- 
-     /* init search: backward, regexp, whole word, case sensitive */
-     edit_set_search_parameters (0, 1, 1, 1, 1);
- 
-     /* collect the possible completions              */
-     /* start search from curs1 down to begin of file */
-+#ifndef UTF8
-     max_len =
- 	edit_collect_completions (edit, word_start, word_len, match_expr,
- 				  (struct selection *) &compl, &num_compl);
-+#else /* UTF8 */
-+    mbmatch_expr = wchar_to_mbstr(match_expr);
-+    max_len =
-+	edit_collect_completions (edit, word_start, word_len, mbmatch_expr,
-+				  (struct selection *) &compl, &num_compl);
-+    g_free(mbmatch_expr);
-+#endif /* UTF8 */
- 
-     if (num_compl > 0) {
- 	/* insert completed word if there is only one match */
-diff -urN mc-4.6.1.orig/edit/editdraw.c mc-4.6.1/edit/editdraw.c
---- mc-4.6.1.orig/edit/editdraw.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/editdraw.c	2007-01-19 18:33:59.000000000 +0500
-@@ -48,7 +48,7 @@
- 
- static void status_string (WEdit * edit, char *s, int w)
- {
--    char byte_str[16];
-+    char byte_str[32];
- 
-     /*
-      * If we are at the end of file, print <EOF>,
-@@ -56,11 +56,16 @@
-      * as decimal and as hex.
-      */
-     if (edit->curs1 < edit->last_byte) {
--	unsigned char cur_byte = edit_get_byte (edit, edit->curs1);
-+        mc_wchar_t cur_byte = edit_get_byte (edit, edit->curs1);
-+#ifndef UTF8
- 	g_snprintf (byte_str, sizeof (byte_str), "%c %3d 0x%02X",
- 		    is_printable (cur_byte) ? cur_byte : '.',
--		    (int) cur_byte,
--		    (unsigned) cur_byte);
-+#else /* UTF8 */
-+        g_snprintf (byte_str, sizeof(byte_str), "%lc %3d 0x%02X",
-+                    iswprint(cur_byte) ? cur_byte : '.',
-+#endif /* UTF8 */
-+                    (int) cur_byte,
-+                    (unsigned) cur_byte);
-     } else {
- 	strcpy (byte_str, "<EOF>");
-     }
-@@ -183,11 +188,16 @@
- #define lowlevel_set_color(x) attrset(MY_COLOR_PAIR(color))
- #endif
- 
-+struct line_s {
-+    mc_wchar_t ch;
-+    unsigned int style;
-+};
-+
- static void
- print_to_widget (WEdit *edit, long row, int start_col, int start_col_real,
--		 long end_col, unsigned int line[])
-+		 long end_col, struct line_s line[])
- {
--    unsigned int *p;
-+    struct line_s *p;
- 
-     int x = start_col_real + EDIT_TEXT_HORIZONTAL_OFFSET;
-     int x1 = start_col + EDIT_TEXT_HORIZONTAL_OFFSET;
-@@ -201,9 +211,9 @@
-     edit_move (x1 + FONT_OFFSET_X, y + FONT_OFFSET_Y);
-     p = line;
- 
--    while (*p) {
-+    while (p->ch) {
- 	int style;
--	int textchar;
-+	mc_wchar_t textchar;
- 	int color;
- 
- 	if (cols_to_skip) {
-@@ -212,9 +222,9 @@
- 	    continue;
- 	}
- 
--	style = *p & 0xFF00;
--	textchar = *p & 0xFF;
--	color = *p >> 16;
-+	style = p->style & 0xFF00;
-+	textchar = p->ch;
-+	color = p->style >> 16;
- 
- 	if (style & MOD_ABNORMAL) {
- 	    /* Non-printable - use black background */
-@@ -228,8 +238,11 @@
- 	} else {
- 	    lowlevel_set_color (color);
- 	}
--
-+#ifdef UTF8
-+	SLsmg_write_nwchars(&textchar, 1);
-+#else
- 	addch (textchar);
-+#endif
- 	p++;
-     }
- }
-@@ -239,11 +252,11 @@
- edit_draw_this_line (WEdit *edit, long b, long row, long start_col,
- 		     long end_col)
- {
--    static unsigned int line[MAX_LINE_LEN];
--    unsigned int *p = line;
-+    struct line_s line[MAX_LINE_LEN];
-+    struct line_s *p = line;
-     long m1 = 0, m2 = 0, q, c1, c2;
-     int col, start_col_real;
--    unsigned int c;
-+    mc_wint_t c;
-     int color;
-     int i, book_mark = -1;
- 
-@@ -265,66 +278,96 @@
- 
- 	if (row <= edit->total_lines - edit->start_line) {
- 	    while (col <= end_col - edit->start_col) {
--		*p = 0;
-+		p->ch = 0;
-+		p->style = 0;
- 		if (q == edit->curs1)
--		    *p |= MOD_CURSOR;
-+		    p->style |= MOD_CURSOR;
- 		if (q >= m1 && q < m2) {
- 		    if (column_highlighting) {
- 			int x;
- 			x = edit_move_forward3 (edit, b, 0, q);
- 			if (x >= c1 && x < c2)
--			    *p |= MOD_MARKED;
-+			    p->style |= MOD_MARKED;
- 		    } else
--			*p |= MOD_MARKED;
-+			p->style |= MOD_MARKED;
- 		}
- 		if (q == edit->bracket)
--		    *p |= MOD_BOLD;
-+		    p->style |= MOD_BOLD;
- 		if (q >= edit->found_start
- 		    && q < edit->found_start + edit->found_len)
--		    *p |= MOD_BOLD;
-+		    p->style |= MOD_BOLD;
- 		c = edit_get_byte (edit, q);
- /* we don't use bg for mc - fg contains both */
- 		if (book_mark == -1) {
- 		    edit_get_syntax_color (edit, q, &color);
--		    *p |= color << 16;
-+		    p->style |= color << 16;
- 		} else {
--		    *p |= book_mark << 16;
-+		    p->style |= book_mark << 16;
- 		}
- 		q++;
- 		switch (c) {
- 		case '\n':
- 		    col = end_col - edit->start_col + 1;	/* quit */
--		    *(p++) |= ' ';
-+		    p->ch = ' ';
-+		    p++;
- 		    break;
- 		case '\t':
- 		    i = TAB_SIZE - ((int) col % TAB_SIZE);
--		    *p |= ' ';
--		    c = *(p++) & ~MOD_CURSOR;
-+		    p->ch = ' ';
-+		    c = p->style & ~MOD_CURSOR;
-+		    p++;
- 		    col += i;
--		    while (--i)
--			*(p++) = c;
-+		    while (--i) {
-+			p->ch = ' '; p->style = c;
-+			p++;
-+		    }
- 		    break;
- 		default:
- 		    c = convert_to_display_c (c);
- 
- 		    /* Caret notation for control characters */
- 		    if (c < 32) {
--			*(p++) = '^' | MOD_ABNORMAL;
--			*(p++) = (c + 0x40) | MOD_ABNORMAL;
-+		        p->ch = '^';
-+			p->style = MOD_ABNORMAL;
-+			p++;
-+		        p->ch = c + 0x40;
-+			p->style = MOD_ABNORMAL;
- 			col += 2;
- 			break;
- 		    }
- 		    if (c == 127) {
--			*(p++) = '^' | MOD_ABNORMAL;
--			*(p++) = '?' | MOD_ABNORMAL;
-+		        p->ch = '^';
-+			p->style = MOD_ABNORMAL;
-+			p++;
-+		        p->ch = '?';
-+			p->style = MOD_ABNORMAL;
-+			p++;
- 			col += 2;
- 			break;
- 		    }
- 
--		    if (is_printable (c)) {
--			*(p++) |= c;
-+#ifndef UTF8
-+		    if (is_printable (c)
-+#else /* UTF8 */
-+		    if (iswprint (c)
-+#ifdef __STDC_ISO_10646__ 
-+			&& (c < BINARY_CHAR_OFFSET || c >= (BINARY_CHAR_OFFSET + 256))
-+#endif
-+#endif /* UTF8 */
-+			) {
-+			p->ch = c;
-+			p++;
-+			
-+#ifdef UTF8
-+			i = wcwidth(c);
-+			if (i > 1) {
-+			    col += i - 1;
-+			}
-+#endif /* UTF8 */
- 		    } else {
--			*(p++) = '.' | MOD_ABNORMAL;
-+		        p->ch = '.';
-+			p->style = MOD_ABNORMAL;
-+			p++;
- 		    }
- 		    col++;
- 		    break;
-@@ -334,7 +377,7 @@
-     } else {
- 	start_col_real = start_col = 0;
-     }
--    *p = 0;
-+    p->ch = 0;
- 
-     print_to_widget (edit, row, start_col, start_col_real, end_col, line);
- }
-diff -urN mc-4.6.1.orig/edit/edit.h mc-4.6.1/edit/edit.h
---- mc-4.6.1.orig/edit/edit.h	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/edit.h	2007-01-19 18:33:58.000000000 +0500
-@@ -39,6 +39,27 @@
- 
- #include "../src/global.h"
- 
-+#include "src/tty.h"
-+
-+#ifdef UTF8
-+#include <wchar.h>
-+#include <wctype.h>
-+
-+#define mc_wchar_t wchar_t
-+#define mc_wint_t wint_t
-+
-+#else
-+
-+#define mc_wchar_t unsigned char
-+#define mc_wint_t int
-+
-+#endif
-+
-+
-+/* unicode private use area */
-+#define BINARY_CHAR_OFFSET 0xFFE00
-+
-+
- #define N_menus 5
- 
- #define SEARCH_DIALOG_OPTION_NO_SCANF	1
-@@ -99,6 +120,8 @@
- #define START_STACK_SIZE 32
- 
- /* Some codes that may be pushed onto or returned from the undo stack */
-+#define CHAR_INSERT 65
-+#define CHAR_INSERT_AHEAD 66
- #define CURS_LEFT 601
- #define CURS_RIGHT 602
- #define DELCHAR 603
-@@ -118,7 +141,7 @@
- 
- struct macro {
-     short command;
--    short ch;
-+    mc_wchar_t ch;
- };
- 
- struct WEdit;
-@@ -132,26 +155,8 @@
- void menu_save_mode_cmd (void);
- int edit_raw_key_query (const char *heading, const char *query, int cancel);
- int edit_file (const char *_file, int line);
--int edit_translate_key (WEdit *edit, long x_key, int *cmd, int *ch);
--
--#ifndef NO_INLINE_GETBYTE
--int edit_get_byte (WEdit * edit, long byte_index);
--#else
--static inline int edit_get_byte (WEdit * edit, long byte_index)
--{
--    unsigned long p;
--    if (byte_index >= (edit->curs1 + edit->curs2) || byte_index < 0)
--	return '\n';
--
--    if (byte_index >= edit->curs1) {
--	p = edit->curs1 + edit->curs2 - byte_index - 1;
--	return edit->buffers2[p >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - (p & M_EDIT_BUF_SIZE) - 1];
--    } else {
--	return edit->buffers1[byte_index >> S_EDIT_BUF_SIZE][byte_index & M_EDIT_BUF_SIZE];
--    }
--}
--#endif
--
-+int edit_translate_key (WEdit *edit, long x_key, int *cmd, mc_wint_t *ch);
-+mc_wchar_t edit_get_byte (WEdit * edit, long byte_index);
- int edit_count_lines (WEdit * edit, long current, int upto);
- long edit_move_forward (WEdit * edit, long current, int lines, long upto);
- long edit_move_forward3 (WEdit * edit, long current, int cols, long upto);
-@@ -176,11 +181,11 @@
- void edit_delete_line (WEdit * edit);
- 
- int edit_delete (WEdit * edit);
--void edit_insert (WEdit * edit, int c);
-+void edit_insert (WEdit * edit, mc_wchar_t c);
- int edit_cursor_move (WEdit * edit, long increment);
- void edit_push_action (WEdit * edit, long c, ...);
- void edit_push_key_press (WEdit * edit);
--void edit_insert_ahead (WEdit * edit, int c);
-+void edit_insert_ahead (WEdit * edit, mc_wchar_t c);
- long edit_write_stream (WEdit * edit, FILE * f);
- char *edit_get_write_filter (const char *writename, const char *filename);
- int edit_save_confirm_cmd (WEdit * edit);
-@@ -212,7 +217,7 @@
- int eval_marks (WEdit * edit, long *start_mark, long *end_mark);
- void edit_status (WEdit * edit);
- void edit_execute_key_command (WEdit *edit, int command,
--			       int char_for_insertion);
-+			       mc_wint_t char_for_insertion);
- void edit_update_screen (WEdit * edit);
- int edit_print_string (WEdit * e, const char *s);
- void edit_move_to_line (WEdit * e, long line);
-@@ -256,7 +261,7 @@
- void format_paragraph (WEdit *edit, int force);
- 
- /* either command or char_for_insertion must be passed as -1 */
--void edit_execute_cmd (WEdit *edit, int command, int char_for_insertion);
-+void edit_execute_cmd (WEdit *edit, int command, mc_wint_t char_for_insertion);
- 
- #define get_sys_error(s) (s)
- 
-diff -urN mc-4.6.1.orig/edit/editkeys.c mc-4.6.1/edit/editkeys.c
---- mc-4.6.1.orig/edit/editkeys.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/editkeys.c	2007-01-19 18:33:59.000000000 +0500
-@@ -162,10 +162,10 @@
-  * 'command' is one of the editor commands from editcmddef.h.
-  */
- int
--edit_translate_key (WEdit *edit, long x_key, int *cmd, int *ch)
-+edit_translate_key (WEdit *edit, long x_key, int *cmd, mc_wint_t *ch)
- {
-     int command = CK_Insert_Char;
--    int char_for_insertion = -1;
-+    mc_wint_t char_for_insertion = -1;
-     int i = 0;
-     static const long *key_map;
- 
-@@ -205,7 +205,7 @@
- 
- #ifdef HAVE_CHARSET
-     if (x_key == XCTRL ('t')) {
--	do_select_codepage ();
-+	do_select_codepage (_(" Choose codepage "));
- 
- 	edit->force = REDRAW_COMPLETELY;
- 	command = CK_Refresh;
-@@ -242,9 +242,30 @@
-     /* an ordinary insertable character */
-     if (x_key < 256) {
- 	int c = convert_from_input_c (x_key);
--
-+#ifdef UTF8
-+	mbstate_t mbs;
-+	int res;
-+	mc_wchar_t wc;
-+    
-+	memset (&mbs, 0, sizeof (mbs));
-+
-+	if (edit->charpoint >= MB_CUR_MAX) edit->charpoint = 0;
-+
-+	edit->charbuf[edit->charpoint++] = c;
-+
-+	res = mbrtowc(&wc, (char *)edit->charbuf, edit->charpoint, &mbs);
-+	if (res < 0) {
-+	    if (res != -2) edit->charpoint = 0; /* broken multibyte char, skip */
-+    	    return 0;
-+        }
-+	edit->charpoint = 0;
-+
-+	if (iswprint (wc)) {
-+	    char_for_insertion = wc;
-+#else 
- 	if (is_printable (c)) {
- 	    char_for_insertion = c;
-+#endif /* UTF8 */
- 	    goto fin;
- 	}
-     }
-@@ -285,7 +306,7 @@
-     *cmd = command;
-     *ch = char_for_insertion;
- 
--    if (command == CK_Insert_Char && char_for_insertion == -1) {
-+    if (command == CK_Insert_Char && char_for_insertion == (mc_wint_t)-1) {
- 	/* unchanged, key has no function here */
- 	return 0;
-     }
-diff -urN mc-4.6.1.orig/edit/editwidget.c mc-4.6.1/edit/editwidget.c
---- mc-4.6.1.orig/edit/editwidget.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/editwidget.c	2007-01-19 18:33:58.000000000 +0500
-@@ -337,7 +337,8 @@
- 
-     case WIDGET_KEY:
- 	{
--	    int cmd, ch;
-+	    int cmd;
-+	    mc_wint_t ch;
- 
- 	    /* first check alt-f, alt-e, alt-s, etc for drop menus */
- 	    if (edit_drop_hotkey_menu (e, parm))
-diff -urN mc-4.6.1.orig/edit/edit-widget.h mc-4.6.1/edit/edit-widget.h
---- mc-4.6.1.orig/edit/edit-widget.h	2003-10-29 13:54:47.000000000 +0500
-+++ mc-4.6.1/edit/edit-widget.h	2007-01-19 18:33:58.000000000 +0500
-@@ -24,6 +24,11 @@
-     unsigned char border;
- };
- 
-+struct action {
-+    mc_wchar_t ch;
-+    long flags;
-+};
-+
- struct WEdit {
-     Widget widget;
- 
-@@ -36,8 +41,17 @@
-     /* dynamic buffers and cursor position for editor: */
-     long curs1;			/* position of the cursor from the beginning of the file. */
-     long curs2;			/* position from the end of the file */
-+#ifndef UTF8
-     unsigned char *buffers1[MAXBUFF + 1];	/* all data up to curs1 */
-     unsigned char *buffers2[MAXBUFF + 1];	/* all data from end of file down to curs2 */
-+#else /* UTF8 */
-+    mc_wchar_t *buffers1[MAXBUFF + 1];        /* all data up to curs1 */
-+    mc_wchar_t *buffers2[MAXBUFF + 1];        /* all data from end of file down to curs2 */
-+
-+    unsigned char charbuf[MB_LEN_MAX];
-+    int charpoint;
-+#endif /* UTF8 */
-+
- 
-     /* search variables */
-     long search_start;		/* First character to start searching from */
-@@ -81,7 +95,7 @@
- 
-     /* undo stack and pointers */
-     unsigned long stack_pointer;
--    long *undo_stack;
-+    struct action *undo_stack;
-     unsigned long stack_size;
-     unsigned long stack_size_mask;
-     unsigned long stack_bottom;
-@@ -92,6 +106,7 @@
-     /* syntax higlighting */
-     struct _syntax_marker *syntax_marker;
-     struct context_rule **rules;
-+    size_t rules_count;		/* number of rules that are defined */
-     long last_get_rule;
-     struct syntax_rule rule;
-     char *syntax_type;		/* description of syntax highlighting type being used */
-diff -urN mc-4.6.1.orig/edit/syntax.c mc-4.6.1/edit/syntax.c
---- mc-4.6.1.orig/edit/syntax.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/syntax.c	2007-01-19 18:33:58.000000000 +0500
-@@ -662,6 +662,7 @@
-     strcpy (whole_right, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
- 
-     r = edit->rules = g_malloc (alloc_contexts * sizeof (struct context_rule *));
-+    edit->rules_count = 0;
- 
-     if (!edit->defines)
- 	edit->defines = g_tree_new ((GCompareFunc) strcmp);
-@@ -892,6 +893,7 @@
-     if (num_contexts == -1) {
- 	return line;
-     }
-+    edit->rules_count = num_contexts;
- 
-     {
- 	char *first_chars, *p;
-@@ -916,17 +918,18 @@
- 
- void edit_free_syntax_rules (WEdit * edit)
- {
--    int i, j;
-+    size_t i, j;
-     if (!edit)
- 	return;
-     if (edit->defines)
- 	destroy_defines (&edit->defines);
-     if (!edit->rules)
- 	return;
--    edit_get_rule (edit, -1);
-+    if (edit->rules_count > 0)
-+	edit_get_rule (edit, -1);
-     syntax_g_free (edit->syntax_type);
-     edit->syntax_type = 0;
--    for (i = 0; edit->rules[i]; i++) {
-+    for (i = 0; i < edit->rules_count; i++) {
- 	if (edit->rules[i]->keyword) {
- 	    for (j = 0; edit->rules[i]->keyword[j]; j++) {
- 		syntax_g_free (edit->rules[i]->keyword[j]->keyword);
-diff -urN mc-4.6.1.orig/edit/wordproc.c mc-4.6.1/edit/wordproc.c
---- mc-4.6.1.orig/edit/wordproc.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/edit/wordproc.c	2007-01-19 18:33:58.000000000 +0500
-@@ -24,7 +24,12 @@
- 
- #define tab_width option_tab_spacing
- 
-+#ifndef UTF8
- #define NO_FORMAT_CHARS_START "-+*\\,.;:&>"
-+#else /* UTF8 */
-+#define NO_FORMAT_CHARS_START L"-+*\\,.;:&>"
-+#endif /* UTF8 */
-+
- #define FONT_MEAN_WIDTH 1
- 
- static long
-@@ -41,14 +46,21 @@
- 	p = edit_move_forward (edit, p, line - l, 0);
- 
-     p = edit_bol (edit, p);
-+
-+#ifndef UTF8
-     while (strchr ("\t ", edit_get_byte (edit, p)))
-+#else /* UTF8 */
-+    while (wcschr (L"\t ", edit_get_byte (edit, p)))
-+#endif /* UTF8 */
-+
- 	p++;
-     return p;
- }
- 
- static int bad_line_start (WEdit * edit, long p)
- {
--    int c;
-+    mc_wint_t c;
-+
-     c = edit_get_byte (edit, p);
-     if (c == '.') {		/* `...' is acceptable */
- 	if (edit_get_byte (edit, p + 1) == '.')
-@@ -62,7 +74,13 @@
- 		return 0;	/* `---' is acceptable */
- 	return 1;
-     }
-+    
-+#ifndef UTF8
-     if (strchr (NO_FORMAT_CHARS_START, c))
-+#else /* UTF8 */
-+    if (wcschr (NO_FORMAT_CHARS_START, c))
-+#endif /* UTF8 */
-+
- 	return 1;
-     return 0;
- }
-@@ -115,33 +133,37 @@
- 					i - edit->curs_line, 0));
- }
- 
--static unsigned char *
-+static mc_wchar_t *
- get_paragraph (WEdit *edit, long p, long q, int indent, int *size)
- {
--    unsigned char *s, *t;
-+    mc_wchar_t *s, *t;
- #if 0
--    t = g_malloc ((q - p) + 2 * (q - p) / option_word_wrap_line_length +
--		  10);
-+    t = g_malloc (((q - p) + 2 * (q - p) / option_word_wrap_line_length +
-+		  10) * sizeof(mc_wchar_t));
- #else
--    t = g_malloc (2 * (q - p) + 100);
-+    t = g_malloc ((2 * (q - p) + 100) * sizeof(mc_wchar_t));
- #endif
-     if (!t)
- 	return 0;
-     for (s = t; p < q; p++, s++) {
- 	if (indent)
- 	    if (edit_get_byte (edit, p - 1) == '\n')
-+#ifndef UTF8
- 		while (strchr ("\t ", edit_get_byte (edit, p)))
-+#else /* UTF8 */
-+		while (wcschr (L"\t ", edit_get_byte (edit, p)))
-+#endif /* UTF8 */
- 		    p++;
- 	*s = edit_get_byte (edit, p);
-     }
--    *size = (unsigned long) s - (unsigned long) t;
-+    *size = s - t;
-     t[*size] = '\n';
-     return t;
- }
- 
--static void strip_newlines (unsigned char *t, int size)
-+static void strip_newlines (mc_wchar_t *t, int size)
- {
--    unsigned char *p = t;
-+    mc_wchar_t *p = t;
-     while (size--) {
- 	*p = *p == '\n' ? ' ' : *p;
- 	p++;
-@@ -158,7 +180,7 @@
- {
-     return x += tab_width - x % tab_width;
- }
--static int line_pixel_length (unsigned char *t, long b, int l)
-+static int line_pixel_length (mc_wchar_t *t, long b, int l)
- {
-     int x = 0, c, xn = 0;
-     for (;;) {
-@@ -182,7 +204,7 @@
- }
- 
- /* find the start of a word */
--static int next_word_start (unsigned char *t, int q, int size)
-+static int next_word_start (mc_wchar_t *t, int q, int size)
- {
-     int i;
-     for (i = q;; i++) {
-@@ -203,7 +225,7 @@
- }
- 
- /* find the start of a word */
--static int word_start (unsigned char *t, int q, int size)
-+static int word_start (mc_wchar_t *t, int q, int size)
- {
-     int i = q;
-     if (t[q] == ' ' || t[q] == '\t')
-@@ -222,7 +244,7 @@
- }
- 
- /* replaces ' ' with '\n' to properly format a paragraph */
--static void format_this (unsigned char *t, int size, int indent)
-+static void format_this (mc_wchar_t *t, int size, int indent)
- {
-     int q = 0, ww;
-     strip_newlines (t, size);
-@@ -250,7 +272,7 @@
-     }
- }
- 
--static void replace_at (WEdit * edit, long q, int c)
-+static void replace_at (WEdit * edit, long q, mc_wint_t c)
- {
-     edit_cursor_move (edit, q - edit->curs1);
-     edit_delete (edit);
-@@ -258,18 +280,27 @@
- }
- 
- /* replaces a block of text */
--static void put_paragraph (WEdit * edit, unsigned char *t, long p, long q, int indent, int size)
-+static void put_paragraph (WEdit * edit, mc_wchar_t *t, long p, long q, int indent, int size)
- {
-     long cursor;
--    int i, c = 0;
-+    int i;
-+    mc_wchar_t c = 0;
-     cursor = edit->curs1;
-     if (indent)
-+#ifndef UTF8
- 	while (strchr ("\t ", edit_get_byte (edit, p)))
-+#else /* UTF8 */
-+        while (wcschr (L"\t ", edit_get_byte (edit, p)))
-+#endif /* UTF8 */
- 	    p++;
-     for (i = 0; i < size; i++, p++) {
- 	if (i && indent) {
- 	    if (t[i - 1] == '\n' && c == '\n') {
-+#ifndef UTF8
- 		while (strchr ("\t ", edit_get_byte (edit, p)))
-+#else /* UTF8 */
-+                while (wcschr (L"\t ", edit_get_byte (edit, p)))
-+#endif /* UTF8 */
- 		    p++;
- 	    } else if (t[i - 1] == '\n') {
- 		long curs;
-@@ -281,7 +312,11 @@
- 		p = edit->curs1;
- 	    } else if (c == '\n') {
- 		edit_cursor_move (edit, p - edit->curs1);
-+#ifndef UTF8
- 		while (strchr ("\t ", edit_get_byte (edit, p))) {
-+#else /* UTF8 */
-+		while (wcschr (L"\t ", edit_get_byte (edit, p))) {
-+#endif /* UTF8 */
- 		    edit_delete (edit);
- 		    if (cursor > edit->curs1)
- 			cursor--;
-@@ -314,7 +349,7 @@
- {
-     long p, q;
-     int size;
--    unsigned char *t;
-+    mc_wchar_t *t;
-     int indent = 0;
-     if (option_word_wrap_line_length < 2)
- 	return;
-@@ -324,17 +359,25 @@
-     q = end_paragraph (edit, force);
-     indent = test_indent (edit, p, q);
-     t = get_paragraph (edit, p, q, indent, &size);
--    if (!t)
-+    if (!t) 
- 	return;
-     if (!force) {
- 	int i;
-+#ifndef UTF8
- 	if (strchr (NO_FORMAT_CHARS_START, *t)) {
-+#else /* UTF8 */
-+	if (wcschr (NO_FORMAT_CHARS_START, *t)) {
-+#endif /* UTF8 */
- 	    g_free (t);
- 	    return;
- 	}
- 	for (i = 0; i < size - 1; i++) {
- 	    if (t[i] == '\n') {
-+#ifndef UTF8
- 		if (strchr (NO_FORMAT_CHARS_START "\t ", t[i + 1])) {
-+#else /* UTF8 */
-+		if (wcschr (NO_FORMAT_CHARS_START "\t", t[i + 1])) {
-+#endif /* UTF8 */
- 		    g_free (t);
- 		    return;
- 		}
-diff -urN mc-4.6.1.orig/lib/mc.menu mc-4.6.1/lib/mc.menu
---- mc-4.6.1.orig/lib/mc.menu	2004-08-17 14:31:16.000000000 +0600
-+++ mc-4.6.1/lib/mc.menu	2007-01-19 18:33:58.000000000 +0500
-@@ -15,7 +15,7 @@
- 
- 0       Edit a bug report and send it to root
- 	I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
--	${EDITOR-vi} $I
-+	${EDITOR-editor} $I
- 	test -r $I && mail root < $I
- 	rm -f $I
- 
-@@ -330,3 +330,7 @@
- o       Open next a free console
-         open -s -- sh
- 
-+=+ f \.dsc$ & t r
-+x       Extract the contents of a Debian source package
-+        dpkg-source -x %f
-+
-diff -urN mc-4.6.1.orig/po/de.po mc-4.6.1/po/de.po
---- mc-4.6.1.orig/po/de.po	2005-07-23 22:53:27.000000000 +0600
-+++ mc-4.6.1/po/de.po	2007-01-19 18:33:58.000000000 +0500
-@@ -1412,7 +1412,7 @@
- #: src/cmd.c:988
- #, c-format
- msgid " edit symlink: %s "
--msgstr " symbolschen Link barbeiten: %s"
-+msgstr " symbolschen Link bearbeiten: %s"
- 
- #: src/cmd.c:999
- #, c-format
-@@ -1562,7 +1562,7 @@
- " Cannot create temporary command file \n"
- " %s "
- msgstr ""
--" Kann temporre Befehlsdaei nicht anlegen \n"
-+" Kann temporre Befehlsdatei nicht anlegen \n"
- " %s "
- 
- #: src/ext.c:117 src/user.c:606
-@@ -1670,7 +1670,7 @@
- " Cannot stat source file \"%s\" \n"
- " %s "
- msgstr ""
--" Kann Quelldaei \"%s\" nicht untersuchen \n"
-+" Kann Quelldatei \"%s\" nicht untersuchen \n"
- " %s "
- 
- #: src/file.c:517 src/file.c:1058
-@@ -2576,7 +2576,7 @@
- #: src/learn.c:115
- #, c-format
- msgid " You have entered \"%s\""
--msgstr " Sie haben \"%s\" einggeben"
-+msgstr " Sie haben \"%s\" eingegeben"
- 
- #. TRANSLATORS: This label appears near learned keys.  Keep it short.
- #: src/learn.c:164
-@@ -2668,7 +2668,7 @@
- 
- #: src/main.c:811 src/main.c:835
- msgid "S&hell link..."
--msgstr "Shell-Verbindung..."
-+msgstr "S&hell-Verbindung..."
- 
- #: src/main.c:813 src/main.c:837
- msgid "SM&B link..."
-@@ -4200,7 +4200,7 @@
- #: vfs/ftpfs.c:684
- #, c-format
- msgid "ftpfs: connection to server failed: %s"
--msgstr "ftpfs: Verbindung zum Server fehlgeschlgen: %s"
-+msgstr "ftpfs: Verbindung zum Server fehlgeschlagen: %s"
- 
- #: vfs/ftpfs.c:725
- #, c-format
-diff -urN mc-4.6.1.orig/po/it.po mc-4.6.1/po/it.po
---- mc-4.6.1.orig/po/it.po	2005-07-23 22:53:28.000000000 +0600
-+++ mc-4.6.1/po/it.po	2007-01-19 18:33:58.000000000 +0500
-@@ -2098,7 +2098,7 @@
- 
- #: src/filegui.c:524
- msgid "A&ppend"
--msgstr "Atta&cca"
-+msgstr "atta&Cca"
- 
- #: src/filegui.c:527
- msgid "Overwrite this target?"
-diff -urN mc-4.6.1.orig/po/ru.po mc-4.6.1/po/ru.po
---- mc-4.6.1.orig/po/ru.po	2005-07-23 22:53:30.000000000 +0600
-+++ mc-4.6.1/po/ru.po	2007-01-19 18:33:59.000000000 +0500
-@@ -4503,3 +4503,32 @@
- #: vfs/vfs.c:894
- msgid "Changes to file lost"
- msgstr "   "
-+
-+#: messages for recode patch
-+msgid "Panel &codepage"
-+msgstr " "
-+
-+msgid " Choose codepage "
-+msgstr "  "
-+
-+msgid " Choose panel codepage "
-+msgstr "    "
-+
-+msgid " Choose default FTP codepage "
-+msgstr "   FTP   "
-+
-+msgid "FTP default codepage:"
-+msgstr " FTP  :"
-+
-+msgid "Recode file names:"
-+msgstr " :"
-+
-+msgid "Recoding works only with COPY/MOVE operation"
-+msgstr "     /"
-+
-+msgid " Choose \"FROM\" codepage for COPY/MOVE operaion "
-+msgstr"      / "
-+
-+msgid " Choose \"TO\" codepage for COPY/MOVE operaion "
-+msgstr"      / "
-+
-diff -urN mc-4.6.1.orig/po/vi.po mc-4.6.1/po/vi.po
---- mc-4.6.1.orig/po/vi.po	1970-01-01 05:00:00.000000000 +0500
-+++ mc-4.6.1/po/vi.po	2007-01-19 18:33:58.000000000 +0500
-@@ -0,0 +1,4456 @@
-+# Vietnamese translation of Midnight Commander
-+# Copyright (C) 1998-2003, 2005 Free Software Foundation, Inc.
-+# First translator(s): Phan Vinh Thinh <teppi@vnlinux.org>, 2005.
-+#
-+#
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: mc 4.6.1\n"
-+"Report-Msgid-Bugs-To: \n"
-+"POT-Creation-Date: 2003-12-24 12:16-0500\n"
-+"PO-Revision-Date: 2005-03-29 01:20+0300\n"
-+"Last-Translator: Phan Vinh Thinh <teppi@vnlinux.org>\n"
-+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"X-Generator: KBabel 1.9.1\n"
-+
-+#: edit/edit.c:146 edit/edit.c:277 edit/edit.c:285 edit/edit.c:333
-+#: edit/edit.c:348 edit/edit.c:359 edit/edit.c:375 edit/edit.c:2665
-+#: edit/editcmd.c:282 edit/editcmd.c:290 edit/editcmd.c:1719 src/wtools.c:120
-+#: src/wtools.c:275
-+msgid "Error"
-+msgstr "Lỗi"
-+
-+#: edit/edit.c:149 edit/edit.c:336
-+msgid " Cannot open file for reading: "
-+msgstr " Không thể mở tập tin để đọc: "
-+
-+#: edit/edit.c:279
-+msgid " Error reading from pipe: "
-+msgstr " Lỗi đọc từ đường ống (pipe): "
-+
-+#: edit/edit.c:288
-+msgid " Cannot open pipe for reading: "
-+msgstr " Không thể mở đường ống để đọc: "
-+
-+#: edit/edit.c:351
-+msgid " Cannot get size/permissions info for file: "
-+msgstr " Không lấy được thông tin kích thước/quyền hạn của tập tin: "
-+
-+#: edit/edit.c:360
-+msgid " Not an ordinary file: "
-+msgstr " Tập tin không thông thường: "
-+
-+#: edit/edit.c:376
-+msgid " File is too large: "
-+msgstr " Tập tin quá lớn: "
-+
-+#: edit/edit.c:2665
-+msgid "Macro recursion is too deep"
-+msgstr "Đệ qui của macro quá sâu"
-+
-+#: edit/edit.h:262
-+msgid "&Dismiss"
-+msgstr "Đó&ng"
-+
-+#: edit/edit.h:264 edit/editcmd.c:382 edit/editcmd.c:1228 edit/editcmd.c:1310
-+#: edit/editcmd.c:2569 edit/editmenu.c:37 edit/editoptions.c:71
-+#: src/boxes.c:139 src/boxes.c:276 src/boxes.c:372 src/boxes.c:464
-+#: src/boxes.c:590 src/boxes.c:713 src/boxes.c:835 src/boxes.c:945
-+#: src/boxes.c:1013 src/filegui.c:763 src/find.c:184 src/layout.c:348
-+#: src/option.c:113 src/subshell.c:323 src/view.c:2107 src/wtools.c:441
-+msgid "&OK"
-+msgstr "Đồng ý &="
-+
-+#: edit/editcmd.c:45 edit/editcmd.c:46
-+msgid " Enter file name: "
-+msgstr " Hãy nhập tên tập tin: "
-+
-+#: edit/editcmd.c:283
-+msgid " Error writing to pipe: "
-+msgstr " Lỗi ghi vào đường ống: "
-+
-+#: edit/editcmd.c:293
-+msgid " Cannot open pipe for writing: "
-+msgstr " Không thể mở đường ống để ghi: "
-+
-+#: edit/editcmd.c:375
-+msgid "Quick save "
-+msgstr "&Lưu nhanh"
-+
-+#: edit/editcmd.c:376
-+msgid "Safe save "
-+msgstr "Lưu &an toàn"
-+
-+#: edit/editcmd.c:377
-+msgid "Do backups -->"
-+msgstr "&Sao lưu -->"
-+
-+#: edit/editcmd.c:380 edit/editcmd.c:1169 edit/editcmd.c:1226
-+#: edit/editcmd.c:1308 edit/editcmd.c:2567 edit/editoptions.c:68
-+#: src/achown.c:68 src/boxes.c:140 src/boxes.c:277 src/boxes.c:370
-+#: src/boxes.c:462 src/boxes.c:588 src/boxes.c:711 src/boxes.c:833
-+#: src/boxes.c:1013 src/chmod.c:96 src/chown.c:72 src/cmd.c:856
-+#: src/filegui.c:745 src/find.c:184 src/hotlist.c:121 src/hotlist.c:523
-+#: src/hotlist.c:830 src/hotlist.c:926 src/layout.c:349 src/learn.c:58
-+#: src/option.c:114 src/panelize.c:66 src/view.c:441 src/view.c:2104
-+#: src/wtools.c:46 src/wtools.c:439
-+msgid "&Cancel"
-+msgstr "Đóng hộp thoại &-"
-+
-+#: edit/editcmd.c:386
-+msgid "Extension:"
-+msgstr "&Mở rộng:"
-+
-+#: edit/editcmd.c:392
-+msgid " Edit Save Mode "
-+msgstr " Chế độ ghi nhớ "
-+
-+#: edit/editcmd.c:465 edit/editcmd.c:524
-+msgid " Save As "
-+msgstr " Ghi như "
-+
-+#: edit/editcmd.c:482 edit/editcmd.c:804 edit/editcmd.c:841
-+#: edit/editcmd.c:1000 edit/editcmd.c:1113 src/file.c:599 src/help.c:318
-+#: src/main.c:424 src/screen.c:1415 src/selcodepage.c:105 src/subshell.c:319
-+#: src/subshell.c:653 src/utilunix.c:401 src/utilunix.c:405 src/utilunix.c:427
-+#: vfs/mcfs.c:138
-+msgid "Warning"
-+msgstr "Cảnh báo"
-+
-+#: edit/editcmd.c:483
-+msgid " A file already exists with this name. "
-+msgstr " Tập tin có tên như vậy đã tồn tại. "
-+
-+#: edit/editcmd.c:484
-+msgid "Overwrite"
-+msgstr "Ghi chèn"
-+
-+#: edit/editcmd.c:484 edit/editcmd.c:569 edit/editcmd.c:768 edit/editcmd.c:804
-+#: edit/editcmd.c:844 edit/editcmd.c:1003 edit/editcmd.c:1116
-+msgid "Cancel"
-+msgstr "Hủy bỏ"
-+
-+#: edit/editcmd.c:526 edit/editcmd.c:2293 src/view.c:440
-+msgid " Cannot save file. "
-+msgstr " Không thể ghi nhớ tập tin. "
-+
-+#: edit/editcmd.c:626 edit/editcmd.c:634 edit/editcmd.c:659 edit/editcmd.c:706
-+msgid " Delete macro "
-+msgstr " Xóa macro "
-+
-+#: edit/editcmd.c:628
-+msgid " Cannot open temp file "
-+msgstr " Không thể mở tập tin tạm thời "
-+
-+#: edit/editcmd.c:636 edit/editcmd.c:697 edit/editcmd.c:754
-+msgid " Cannot open macro file "
-+msgstr " Không thể mở tập tin chứa các macro "
-+
-+#: edit/editcmd.c:660
-+msgid " Cannot overwrite macro file "
-+msgstr " Không thể ghi chèn lên tập tin chứa các macro "
-+
-+#: edit/editcmd.c:676 edit/editcmd.c:697
-+msgid " Save macro "
-+msgstr " Ghi nhớ macro "
-+
-+#: edit/editcmd.c:678
-+msgid " Press the macro's new hotkey: "
-+msgstr " Hãy nhấn phím tắt mới của macro: "
-+
-+#: edit/editcmd.c:707 edit/editkeys.c:195 edit/editkeys.c:225
-+msgid " Press macro hotkey: "
-+msgstr " Hãy nhấn phím tắt của macro: "
-+
-+#: edit/editcmd.c:753
-+msgid " Load macro "
-+msgstr " Nạp macro "
-+
-+#: edit/editcmd.c:766
-+msgid " Confirm save file? : "
-+msgstr " Phê chuẩn việc ghi nhớ tập tin?: "
-+
-+#: edit/editcmd.c:768 src/view.c:439
-+msgid " Save file "
-+msgstr " Ghi nhớ tập tin "
-+
-+#: edit/editcmd.c:768 edit/editwidget.c:288 src/view.c:2220
-+msgid "Save"
-+msgstr "Ghinhớ"
-+
-+#: edit/editcmd.c:804 edit/editcmd.c:842
-+msgid ""
-+" Current text was modified without a file save. \n"
-+" Continue discards these changes. "
-+msgstr ""
-+" Văn bản hiện thời đã thay đổi và chưa được ghi nhớ. \n"
-+" Tiếp tục thao tác sẽ làm mất những thay đổi này. "
-+
-+#: edit/editcmd.c:804 edit/editcmd.c:843 edit/editcmd.c:1003
-+#: edit/editcmd.c:1116
-+msgid "Continue"
-+msgstr "Tiếp tục"
-+
-+#: edit/editcmd.c:850
-+msgid " Load "
-+msgstr " Nạp "
-+
-+#: edit/editcmd.c:1002 edit/editcmd.c:1115
-+msgid " Block is large, you may not be able to undo this action. "
-+msgstr " Khối quá lớn, có thể bạn sẽ không hủy bỏ được bước này. "
-+
-+#: edit/editcmd.c:1171
-+msgid "O&ne"
-+msgstr "&Một"
-+
-+#: edit/editcmd.c:1173 src/file.c:2210 src/filegui.c:521
-+msgid "A&ll"
-+msgstr "&Tất cả"
-+
-+#: edit/editcmd.c:1175 src/file.c:2147 src/filegui.c:210
-+msgid "&Skip"
-+msgstr "&Bỏ qua"
-+
-+#: edit/editcmd.c:1177
-+msgid "&Replace"
-+msgstr "&Thay thế"
-+
-+#: edit/editcmd.c:1184 edit/editcmd.c:1191
-+msgid " Replace with: "
-+msgstr " Thay thế bằng: "
-+
-+#: edit/editcmd.c:1196
-+msgid " Confirm replace "
-+msgstr " Phê chuẩn thay thế "
-+
-+#: edit/editcmd.c:1230 edit/editcmd.c:1312
-+msgid "scanf &Expression"
-+msgstr "biểu thức &Scanf"
-+
-+#: edit/editcmd.c:1232
-+msgid "replace &All"
-+msgstr "&Thay thế tất cả"
-+
-+#: edit/editcmd.c:1234
-+msgid "pr&Ompt on replace"
-+msgstr "&Hỏi trước khi thay"
-+
-+#: edit/editcmd.c:1236 edit/editcmd.c:1314 src/view.c:2110
-+msgid "&Backwards"
-+msgstr "&Tìm ngược lại"
-+
-+#: edit/editcmd.c:1238 edit/editcmd.c:1316
-+msgid "&Regular expression"
-+msgstr "&Biểu thức chính quy"
-+
-+#: edit/editcmd.c:1240 edit/editcmd.c:1318
-+msgid "&Whole words only"
-+msgstr "&Chỉ những từ đầy đủ"
-+
-+#: edit/editcmd.c:1242 edit/editcmd.c:1320 src/find.c:176
-+msgid "case &Sensitive"
-+msgstr "có tính &Kiểu chữ"
-+
-+#: edit/editcmd.c:1246
-+msgid " Enter replacement argument order eg. 3,2,1,4 "
-+msgstr " Hãy nhập thứ tự của tham số thay thế, ví dụ 3,2,1,4 "
-+
-+#: edit/editcmd.c:1250
-+msgid " Enter replacement string:"
-+msgstr " Nhập chuỗi thay thế:"
-+
-+#: edit/editcmd.c:1254 edit/editcmd.c:1324 src/view.c:2115
-+msgid " Enter search string:"
-+msgstr " Nhập chuỗi tìm kiếm:"
-+
-+#: edit/editcmd.c:1273 edit/editcmd.c:1925 edit/editcmd.c:1949
-+msgid " Replace "
-+msgstr " Thay thế "
-+
-+#: edit/editcmd.c:1338 edit/editcmd.c:2036 edit/editcmd.c:2038
-+#: edit/editcmd.c:2066 edit/editwidget.c:293 src/view.c:1594 src/view.c:1673
-+#: src/view.c:1826 src/view.c:1838 src/view.c:2060 src/view.c:2113
-+#: src/view.c:2120 src/view.c:2236
-+msgid "Search"
-+msgstr "Tìm"
-+
-+#: edit/editcmd.c:1719
-+msgid " Invalid regular expression, or scanf expression with to many conversions "
-+msgstr " Biểu thức chính quy không đúng, hoặc biểu thức scanf có quá nhiều biến đổi "
-+
-+#: edit/editcmd.c:1927
-+msgid " Error in replacement format string. "
-+msgstr " Lỗi trong định dạng chuỗi thay thế. "
-+
-+#: edit/editcmd.c:1957
-+#, c-format
-+msgid " %ld replacements made. "
-+msgstr " %ld thay thế được thực hiện. "
-+
-+#: edit/editcmd.c:1960 edit/editcmd.c:2038 edit/editcmd.c:2066 src/view.c:1673
-+#: src/view.c:1838
-+msgid " Search string not found "
-+msgstr " Không tìm thấy chuỗi tìm kiếm "
-+
-+#: edit/editcmd.c:2036
-+#, c-format
-+msgid " %d finds made, %d bookmarks added "
-+msgstr " tìm thấy %d , thêm %d thẻ đánh dấu (bookmark) "
-+
-+#: edit/editcmd.c:2088 edit/editwidget.c:296 src/help.c:826 src/main.c:1208
-+#: src/view.c:456 src/view.c:2215 src/view.c:2246
-+msgid "Quit"
-+msgstr "Thoát"
-+
-+#: edit/editcmd.c:2088 src/view.c:457
-+msgid " File was modified, Save with exit? "
-+msgstr "Tập tin đã thay đổi, ghi nhớ khi thoát? "
-+
-+#: edit/editcmd.c:2089 src/view.c:458
-+msgid "Cancel quit"
-+msgstr "Không thoát"
-+
-+#: edit/editcmd.c:2089 src/cmd.c:195 src/file.c:1837 src/file.c:2209
-+#: src/filegui.c:526 src/hotlist.c:1049 src/main.c:471 src/screen.c:1952
-+#: src/subshell.c:654 src/tree.c:708 src/view.c:458 vfs/mcfs.c:143
-+msgid "&Yes"
-+msgstr "&Có"
-+
-+#: edit/editcmd.c:2089 src/cmd.c:195 src/file.c:1837 src/file.c:2209
-+#: src/filegui.c:525 src/hotlist.c:1049 src/main.c:471 src/screen.c:1953
-+#: src/subshell.c:654 src/tree.c:708 src/view.c:458 vfs/mcfs.c:143
-+msgid "&No"
-+msgstr "&Không"
-+
-+#: edit/editcmd.c:2202
-+msgid " Copy to clipboard "
-+msgstr "Sao chép vào bộ đệm "
-+
-+#: edit/editcmd.c:2202 edit/editcmd.c:2215
-+msgid " Unable to save to file. "
-+msgstr "Không ghi nhớ được tập tin. "
-+
-+#: edit/editcmd.c:2215
-+msgid " Cut to clipboard "
-+msgstr "Cắt vào bộ đệm "
-+
-+#: edit/editcmd.c:2243 src/view.c:2005
-+msgid " Goto line "
-+msgstr "Chuyển tới dòng "
-+
-+#: edit/editcmd.c:2243
-+msgid " Enter line: "
-+msgstr "Hãy nhập số thứ tự dòng: "
-+
-+#: edit/editcmd.c:2278 edit/editcmd.c:2291
-+msgid " Save Block "
-+msgstr "Ghi nhớ khối "
-+
-+#: edit/editcmd.c:2307 edit/editcmd.c:2320
-+msgid " Insert File "
-+msgstr "Chèn tập tin "
-+
-+#: edit/editcmd.c:2322
-+msgid " Cannot insert file. "
-+msgstr "Không chèn được tập tin. "
-+
-+#: edit/editcmd.c:2339
-+msgid " Sort block "
-+msgstr "Sắp xếp khối "
-+
-+#: edit/editcmd.c:2339 edit/editcmd.c:2465
-+msgid " You must first highlight a block of text. "
-+msgstr "Đầu tiên bạn phải chọn một khối văn bản. "
-+
-+#: edit/editcmd.c:2346
-+msgid " Run Sort "
-+msgstr "Thực hiện sắp xếp "
-+
-+#: edit/editcmd.c:2347
-+msgid " Enter sort options (see manpage) separated by whitespace: "
-+msgstr "Nhập tùy chọn sắp xếp (xem trang man), phân cách nhau bởi khoảng trắng: "
-+
-+#: edit/editcmd.c:2358 edit/editcmd.c:2363
-+msgid " Sort "
-+msgstr "Sắp xếp "
-+
-+#: edit/editcmd.c:2359
-+msgid " Cannot execute sort command "
-+msgstr "Không thể thực hiện câu lệnh sort "
-+
-+#: edit/editcmd.c:2364
-+msgid " Sort returned non-zero: "
-+msgstr "Sắp xếp trả lại giá trị khác không: "
-+
-+#: edit/editcmd.c:2388
-+msgid "Paste output of external command"
-+msgstr "Dán kết quả của lệnh ngoại trú"
-+
-+#: edit/editcmd.c:2389
-+msgid "Enter shell command(s):"
-+msgstr "Nhập (các) câu lệnh shell:"
-+
-+#: edit/editcmd.c:2398
-+msgid "External command"
-+msgstr "Lệnh ngoại trú"
-+
-+#: edit/editcmd.c:2399
-+msgid "Cannot execute command"
-+msgstr "Không thực hiện được câu lệnh"
-+
-+#: edit/editcmd.c:2433
-+msgid "Error creating script:"
-+msgstr "Lỗi tạo script:"
-+
-+#: edit/editcmd.c:2441
-+msgid "Error reading script:"
-+msgstr "Lỗi đọc script:"
-+
-+#: edit/editcmd.c:2450
-+msgid "Error closing script:"
-+msgstr "Lỗi đóng script:"
-+
-+#: edit/editcmd.c:2456
-+msgid "Script created:"
-+msgstr "Đã tạo script:"
-+
-+#: edit/editcmd.c:2463
-+msgid "Process block"
-+msgstr "Xử lý khối"
-+
-+#: edit/editcmd.c:2562
-+msgid " Mail "
-+msgstr " Thư "
-+
-+#: edit/editcmd.c:2573
-+msgid " Copies to"
-+msgstr " Sao chép tới"
-+
-+#: edit/editcmd.c:2577
-+msgid " Subject"
-+msgstr " Tên thư"
-+
-+#: edit/editcmd.c:2581
-+msgid " To"
-+msgstr " Người nhận"
-+
-+#: edit/editcmd.c:2583
-+msgid " mail -s <subject> -c <cc> <to>"
-+msgstr " mail -s <Tên thư> -c <cc> <Người nhận>"
-+
-+#: edit/editkeys.c:180
-+msgid " Emacs key: "
-+msgstr "Phím Emacs: "
-+
-+#: edit/editkeys.c:194 edit/editkeys.c:225
-+msgid " Execute Macro "
-+msgstr "Thực hiện Macro "
-+
-+#: edit/editkeys.c:217
-+msgid " Insert Literal "
-+msgstr " Chèn văn bản thuần túy "
-+
-+#: edit/editkeys.c:218
-+msgid " Press any key: "
-+msgstr " Nhấn phím bất kỳ: "
-+
-+#: edit/editlock.c:148
-+#, c-format
-+msgid ""
-+"File \"%s\" is already being edited\n"
-+"User: %s\n"
-+"Process ID: %d"
-+msgstr ""
-+"Tập tin \"%s\" đang được soạn thảo\n"
-+"Ngưòi dùng: %s\n"
-+"ID tiến trình: %d"
-+
-+#: edit/editlock.c:153
-+msgid "File locked"
-+msgstr "Tập tin bị khóa"
-+
-+#: edit/editlock.c:153
-+msgid "&Grab lock"
-+msgstr "&Chiếm đoạt khóa"
-+
-+#: edit/editlock.c:154
-+msgid "&Ignore lock"
-+msgstr "&Lời đi khóa"
-+
-+#: edit/editmenu.c:55
-+msgid " About "
-+msgstr " Về chương trình "
-+
-+#: edit/editmenu.c:56
-+msgid ""
-+"\n"
-+"                Cooledit  v3.11.5\n"
-+"\n"
-+" Copyright (C) 1996 the Free Software Foundation\n"
-+"\n"
-+"       A user friendly text editor written\n"
-+"           for the Midnight Commander.\n"
-+msgstr ""
-+"\n"
-+"                     Cooledit  v3.11.5\n"
-+"\n"
-+"       Copyright (C) 1996 the Free Software Foundation\n"
-+"\n"
-+" Trình soạn thảo với giao diện người dùng thân thiện.\n"
-+"               Được viết cho Midnight Commander.\n"
-+
-+#: edit/editmenu.c:283 edit/editmenu.c:301
-+msgid "&Open file..."
-+msgstr "&Mở tập tin..."
-+
-+#: edit/editmenu.c:284
-+msgid "&New              C-n"
-+msgstr "&Tập tin mới             C-n"
-+
-+#: edit/editmenu.c:286 edit/editmenu.c:304
-+msgid "&Save              F2"
-+msgstr "&Ghi nhớ                  F2"
-+
-+#: edit/editmenu.c:287 edit/editmenu.c:305
-+msgid "Save &as...       F12"
-+msgstr "Ghi &như...              F12"
-+
-+#: edit/editmenu.c:289 edit/editmenu.c:307
-+msgid "&Insert file...   F15"
-+msgstr "&Chèn tập tin...         F15"
-+
-+#: edit/editmenu.c:290
-+msgid "Copy to &file...  C-f"
-+msgstr "Ché&p vào tập tin...    C-f"
-+
-+#: edit/editmenu.c:292 edit/editmenu.c:310
-+msgid "&User menu...     F11"
-+msgstr "Trình đơn người &dùng... F11"
-+
-+#: edit/editmenu.c:294 edit/editmenu.c:312
-+msgid "A&bout...            "
-+msgstr "&Về chương trình...         "
-+
-+#: edit/editmenu.c:296 edit/editmenu.c:314
-+msgid "&Quit             F10"
-+msgstr "T&hoát                   F10"
-+
-+#: edit/editmenu.c:302
-+msgid "&New            C-x k"
-+msgstr "&Tập tin mới           C-x k"
-+
-+#: edit/editmenu.c:308
-+msgid "Copy to &file...     "
-+msgstr "S&ao chép vào tập tin...    "
-+
-+#: edit/editmenu.c:319
-+msgid "&Toggle Mark       F3"
-+msgstr "&Bật/tắt bôi đen           F3"
-+
-+#: edit/editmenu.c:320
-+msgid "&Mark Columns    S-F3"
-+msgstr "Bôi đen &cột             S-F3"
-+
-+#: edit/editmenu.c:322
-+msgid "Toggle &ins/overw Ins"
-+msgstr "Chế độ chèn/&thay thế     Ins"
-+
-+#: edit/editmenu.c:324
-+msgid "&Copy              F5"
-+msgstr "&Sao chép                  F5"
-+
-+#: edit/editmenu.c:325
-+msgid "&Move              F6"
-+msgstr "&Di chuyển                 F6"
-+
-+#: edit/editmenu.c:326
-+msgid "&Delete            F8"
-+msgstr "&Xóa                       F8"
-+
-+#: edit/editmenu.c:328
-+msgid "&Undo             C-u"
-+msgstr "&Hủy bước                 C-u"
-+
-+#: edit/editmenu.c:330
-+msgid "&Beginning     C-PgUp"
-+msgstr "Đầ&u tập tin           C-PgUp"
-+
-+#: edit/editmenu.c:331
-+msgid "&End           C-PgDn"
-+msgstr "Cuố&i tập tin          C-PgDn"
-+
-+#: edit/editmenu.c:338
-+msgid "&Search...         F7"
-+msgstr "Tìm &kiếm...               F7"
-+
-+#: edit/editmenu.c:339
-+msgid "Search &again     F17"
-+msgstr "&Tìm kiếm lại lần nữa     F17"
-+
-+#: edit/editmenu.c:340
-+msgid "&Replace...        F4"
-+msgstr "Th&ay thế...               F4"
-+
-+#: edit/editmenu.c:347 edit/editmenu.c:371
-+msgid "&Go to line...            M-l"
-+msgstr "&Chuyển tới dòng...             M-l"
-+
-+#: edit/editmenu.c:348 edit/editmenu.c:372
-+msgid "Go to matching &bracket   M-b"
-+msgstr "Chuyển &tới dấu ngoặc tạo cặp    M-b"
-+
-+#: edit/editmenu.c:350 edit/editmenu.c:374
-+msgid "Insert &literal...       C-q"
-+msgstr "Chèn &văn bản thuần túy...       C-q"
-+
-+#: edit/editmenu.c:352 edit/editmenu.c:376
-+msgid "&Refresh screen          C-l"
-+msgstr "&Làm mới màn hình                C-l"
-+
-+#: edit/editmenu.c:354 edit/editmenu.c:378
-+msgid "&Start record macro      C-r"
-+msgstr "&Bắt đầu ghi macro               C-r"
-+
-+#: edit/editmenu.c:355 edit/editmenu.c:379
-+msgid "&Finish record macro...  C-r"
-+msgstr "&Kết thúc ghi macro...           C-r"
-+
-+#: edit/editmenu.c:356
-+msgid "&Execute macro...   C-a, KEY"
-+msgstr "Chạy &macro...              C-a, KEY"
-+
-+#: edit/editmenu.c:357 edit/editmenu.c:381
-+msgid "Delete macr&o...            "
-+msgstr "&Xóa macro...                       "
-+
-+#: edit/editmenu.c:359 edit/editmenu.c:383
-+msgid "Insert &date/time           "
-+msgstr "Chèn &ngày/giờ                      "
-+
-+#: edit/editmenu.c:361 edit/editmenu.c:385
-+msgid "Format p&aragraph        M-p"
-+msgstr "Định &dạng đoạn văn              M-p"
-+
-+#: edit/editmenu.c:362
-+msgid "'ispell' s&pell check    C-p"
-+msgstr "Kiểm tra chính tả '&ispell'      C-p"
-+
-+#: edit/editmenu.c:363 edit/editmenu.c:387
-+msgid "Sor&t...                 M-t"
-+msgstr "&Sắp xếp...                      M-t"
-+
-+#: edit/editmenu.c:364 edit/editmenu.c:388
-+msgid "Paste o&utput of...      M-u"
-+msgstr "Dán &kết quả của lệnh...         M-u"
-+
-+#: edit/editmenu.c:365 edit/editmenu.c:389
-+msgid "E&xternal Formatter      F19"
-+msgstr "T&rình định dạng ngoài           F19"
-+
-+#: edit/editmenu.c:366 edit/editmenu.c:390
-+msgid "&Mail...                    "
-+msgstr "T&hư điện tử...                     "
-+
-+#: edit/editmenu.c:380
-+msgid "&Execute macro... C-x e, KEY"
-+msgstr "Thực hiện &macro...       C-x e, KEY"
-+
-+#: edit/editmenu.c:386
-+msgid "'ispell' s&pell check    M-$"
-+msgstr "Kiểm tra chính tả '&ispell'      M-$"
-+
-+#: edit/editmenu.c:395
-+msgid "&General...  "
-+msgstr "Ch&ung...         "
-+
-+#: edit/editmenu.c:396
-+msgid "&Save mode..."
-+msgstr "&Chế độ ghi nhớ..."
-+
-+#: edit/editmenu.c:397 src/main.c:909
-+msgid "learn &Keys..."
-+msgstr "&Tạo phím tắt...  "
-+
-+#: edit/editmenu.c:408 edit/editmenu.c:422 src/chmod.c:146 src/chown.c:119
-+msgid " File "
-+msgstr " Tập tin "
-+
-+#: edit/editmenu.c:410 edit/editmenu.c:424
-+msgid " Edit "
-+msgstr " Soạn thảo "
-+
-+#: edit/editmenu.c:412 edit/editmenu.c:426
-+msgid " Sear/Repl "
-+msgstr " Tìm kiếm/Thay thế "
-+
-+#: edit/editmenu.c:414 edit/editmenu.c:428
-+msgid " Command "
-+msgstr " Câu lệnh "
-+
-+#: edit/editmenu.c:416 edit/editmenu.c:430
-+msgid " Options "
-+msgstr " Tùy chọn "
-+
-+#: edit/editoptions.c:36
-+msgid "Intuitive"
-+msgstr "T&rực giác"
-+
-+#: edit/editoptions.c:36
-+msgid "Emacs"
-+msgstr "&Emacs"
-+
-+#: edit/editoptions.c:39
-+msgid "None"
-+msgstr "&Không"
-+
-+#: edit/editoptions.c:39
-+msgid "Dynamic paragraphing"
-+msgstr "Định &dạng đoạn văn động"
-+
-+#: edit/editoptions.c:39
-+msgid "Type writer wrap"
-+msgstr "Tự độ&ng chuyển dòng"
-+
-+#: edit/editoptions.c:75
-+msgid "Word wrap line length: "
-+msgstr "Vị trí chuyển dòng: "
-+
-+#: edit/editoptions.c:81
-+msgid "Tab spacing: "
-+msgstr "Độ rộng tab: "
-+
-+#: edit/editoptions.c:88
-+msgid "Synta&x highlighting"
-+msgstr "&Chiếu sáng cú pháp"
-+
-+#: edit/editoptions.c:91
-+msgid "Save file &position"
-+msgstr "&Ghi nhớ vị trí trong tập tin"
-+
-+#: edit/editoptions.c:94
-+msgid "Confir&m before saving"
-+msgstr "&Hỏi lại trước khi ghi nhớ"
-+
-+#: edit/editoptions.c:97
-+msgid "Fill tabs with &spaces"
-+msgstr "&Làm đầy tab bằng khoảng trắng"
-+
-+#: edit/editoptions.c:100
-+msgid "&Return does autoindent"
-+msgstr "&Enter tự động thụt dòng"
-+
-+#: edit/editoptions.c:103
-+msgid "&Backspace through tabs"
-+msgstr "&Backpace xóa hết tab"
-+
-+#: edit/editoptions.c:106
-+msgid "&Fake half tabs"
-+msgstr "&Tạo một nửa tab"
-+
-+#: edit/editoptions.c:112
-+msgid "Wrap mode"
-+msgstr "Chế độ chuyển dòng"
-+
-+#: edit/editoptions.c:119
-+msgid "Key emulation"
-+msgstr "Giả tạo phím"
-+
-+#: edit/editoptions.c:124
-+msgid " Editor options "
-+msgstr " Cấu hình trình soạn thảo "
-+
-+#: edit/editwidget.c:287 src/help.c:793 src/help.c:814 src/main.c:1205
-+#: src/screen.c:2184 src/tree.c:970 src/view.c:2213
-+msgid "Help"
-+msgstr "Giúpđỡ"
-+
-+#: edit/editwidget.c:289
-+msgid "Mark"
-+msgstr "Bôiđen"
-+
-+#: edit/editwidget.c:290
-+msgid "Replac"
-+msgstr "Thayth"
-+
-+#: edit/editwidget.c:291 src/file.c:803 src/screen.c:2188 src/tree.c:975
-+msgid "Copy"
-+msgstr "Cópi  "
-+
-+#: edit/editwidget.c:292
-+msgid "Move"
-+msgstr "Chuyển"
-+
-+#: edit/editwidget.c:294 src/screen.c:2191
-+msgid "Delete"
-+msgstr "Xóa   "
-+
-+#: edit/editwidget.c:295 src/main.c:1207
-+msgid "PullDn"
-+msgstr "GọiTĐ "
-+
-+#: edit/syntax.c:1100 edit/syntax.c:1107
-+msgid " Load syntax file "
-+msgstr " Nạp tập tin cú pháp "
-+
-+#: edit/syntax.c:1101 src/help.c:764 src/user.c:711
-+#, c-format
-+msgid ""
-+" Cannot open file %s \n"
-+" %s "
-+msgstr ""
-+" Không mở được tập tin %s \n"
-+" %s "
-+
-+#: edit/syntax.c:1108
-+#, c-format
-+msgid " Error in file %s on line %d "
-+msgstr " Lỗi trong tập tin %s trên dòng %d "
-+
-+#: src/achown.c:69 src/chmod.c:97 src/chown.c:73
-+msgid "&Set"
-+msgstr "Đồ&ng ý"
-+
-+#: src/achown.c:70
-+msgid "S&kip"
-+msgstr "&Bỏ qua"
-+
-+#: src/achown.c:71 src/chmod.c:101 src/chown.c:76
-+msgid "Set &all"
-+msgstr "Đặt &tất cả"
-+
-+#: src/achown.c:250 src/achown.c:338 src/achown.c:345
-+msgid "owner"
-+msgstr "sở hữu"
-+
-+#: src/achown.c:250 src/achown.c:340 src/achown.c:347
-+msgid "group"
-+msgstr "nhóm"
-+
-+#: src/achown.c:342
-+msgid "other"
-+msgstr "khác"
-+
-+#: src/achown.c:350
-+msgid "On"
-+msgstr "Trên"
-+
-+#: src/achown.c:352
-+msgid "Flag"
-+msgstr "Cờ"
-+
-+#: src/achown.c:354
-+msgid "Mode"
-+msgstr "Chếđộ"
-+
-+#: src/achown.c:358
-+#, c-format
-+msgid "%6d of %d"
-+msgstr "%6d của %d"
-+
-+#: src/achown.c:549
-+msgid " Chown advanced command "
-+msgstr " Câu lệnh chown mở rộng"
-+
-+#: src/achown.c:607 src/achown.c:623 src/achown.c:669 src/chmod.c:241
-+#: src/chmod.c:311
-+#, c-format
-+msgid ""
-+" Cannot chmod \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không chmod được \"%s\" \n"
-+" %s "
-+
-+#: src/achown.c:612 src/achown.c:627 src/achown.c:673 src/chown.c:214
-+#: src/chown.c:322
-+#, c-format
-+msgid ""
-+" Cannot chown \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thay thế được chủ sở hữu \"%s\" \n"
-+" %s "
-+
-+#: src/background.c:205 src/file.c:2145
-+msgid " Background process error "
-+msgstr " Lỗi của tiến trình nền sau "
-+
-+#: src/background.c:211
-+msgid " Unknown error in child "
-+msgstr " Lỗi không rõ trong tiến trình con "
-+
-+#: src/background.c:219
-+msgid " Child died unexpectedly "
-+msgstr " Tiến trình con bất đắc kỳ tử "
-+
-+#: src/background.c:226
-+msgid " Background protocol error "
-+msgstr " Lỗi giao thức nền sau "
-+
-+#: src/background.c:227
-+msgid ""
-+" Background process sent us a request for more arguments \n"
-+" than we can handle. \n"
-+msgstr ""
-+" Tiến trình nền sau yêu cầu nhiều tham số hơn, \n"
-+" số chúng ta có thể điều khiển. \n"
-+
-+#: src/boxes.c:75
-+msgid "&Full file list"
-+msgstr "&Danh sách đầy đủ"
-+
-+#: src/boxes.c:76
-+msgid "&Brief file list"
-+msgstr "&Thu gọn"
-+
-+#: src/boxes.c:77
-+msgid "&Long file list"
-+msgstr "&Mở rộng"
-+
-+#: src/boxes.c:78
-+msgid "&User defined:"
-+msgstr "&Người dùng tự xác định:"
-+
-+#: src/boxes.c:136
-+msgid "Listing mode"
-+msgstr "Dạng danh sách"
-+
-+#: src/boxes.c:138
-+msgid "user &Mini status"
-+msgstr "t&Rạng thái mini"
-+
-+#: src/boxes.c:278
-+msgid "&Reverse"
-+msgstr "&Ngược lại"
-+
-+#: src/boxes.c:279
-+msgid "case sensi&tive"
-+msgstr "tính đến kiể&U chữ"
-+
-+#: src/boxes.c:280
-+msgid "Sort order"
-+msgstr "Thứ tự sắp xếp"
-+
-+#: src/boxes.c:375
-+msgid " confirm &Exit "
-+msgstr " trước khi th&Oát "
-+
-+#: src/boxes.c:377
-+msgid " confirm e&Xecute "
-+msgstr " trước &Khi thực hiện "
-+
-+#: src/boxes.c:379
-+msgid " confirm o&Verwrite "
-+msgstr " &Trước khi ghi chèn "
-+
-+#: src/boxes.c:381
-+msgid " confirm &Delete "
-+msgstr " hỏi lại trước khi &Xóa "
-+
-+#: src/boxes.c:387 src/cmd.c:194
-+msgid " Confirmation "
-+msgstr " Hỏi xác nhận "
-+
-+#: src/boxes.c:459
-+msgid "Full 8 bits output"
-+msgstr "Đầu ra 8 bit đầy đủ"
-+
-+#: src/boxes.c:459
-+msgid "ISO 8859-1"
-+msgstr "ISO.8859-1"
-+
-+#: src/boxes.c:459
-+msgid "7 bits"
-+msgstr "7 bit"
-+
-+#: src/boxes.c:466 src/boxes.c:594
-+msgid "F&ull 8 bits input"
-+msgstr "Đầ&u vào 8 bit đầy đủ"
-+
-+#: src/boxes.c:474 src/boxes.c:575
-+msgid " Display bits "
-+msgstr " Ký tự hiển thị "
-+
-+#: src/boxes.c:556 src/boxes.c:581 src/selcodepage.c:70
-+msgid "Other 8 bit"
-+msgstr "8 bit khác"
-+
-+#: src/boxes.c:578
-+msgid "Input / display codepage:"
-+msgstr "Bảng mã đầu vào / hiển thị:"
-+
-+#: src/boxes.c:597
-+msgid "&Select"
-+msgstr "&Lựa chọn"
-+
-+#: src/boxes.c:716
-+msgid "Use &passive mode"
-+msgstr "Sử &dụng chế độ thụ động"
-+
-+#: src/boxes.c:718
-+msgid "&Use ~/.netrc"
-+msgstr "&Sử dụng ~/.netrc"
-+
-+#: src/boxes.c:722
-+msgid "&Always use ftp proxy"
-+msgstr "&Luôn luôn sử dụng ftp proxy"
-+
-+#: src/boxes.c:724
-+msgid "sec"
-+msgstr "giây"
-+
-+#: src/boxes.c:728
-+msgid "ftpfs directory cache timeout:"
-+msgstr "Thời gian chờ của cache thư mục ftp:"
-+
-+#: src/boxes.c:732
-+msgid "ftp anonymous password:"
-+msgstr "Mật khẩu ftp nặc danh:"
-+
-+#: src/boxes.c:739
-+msgid "Timeout for freeing VFSs:"
-+msgstr "Thời gian chờ giải phóng VFS:"
-+
-+#: src/boxes.c:745
-+msgid " Virtual File System Setting "
-+msgstr " Thiết lập hệ thống tập tin ảo "
-+
-+#: src/boxes.c:799
-+msgid "Quick cd"
-+msgstr "cd nhanh"
-+
-+#: src/boxes.c:802
-+msgid "cd"
-+msgstr "cd"
-+
-+#: src/boxes.c:837
-+msgid "Symbolic link filename:"
-+msgstr "Tên của liên kết mềm:"
-+
-+#: src/boxes.c:841
-+msgid "Existing filename (filename symlink will point to):"
-+msgstr "Tên tập tin đã có (liên kết mềm sẽ chỉ đến):"
-+
-+#: src/boxes.c:848
-+msgid "Symbolic link"
-+msgstr "Liên kết mềm"
-+
-+#: src/boxes.c:881
-+msgid "Running "
-+msgstr "Đang chạy "
-+
-+#: src/boxes.c:882 src/find.c:721
-+msgid "Stopped"
-+msgstr "Đã dừng"
-+
-+#: src/boxes.c:942
-+msgid "&Stop"
-+msgstr "&Dừng"
-+
-+#: src/boxes.c:943
-+msgid "&Resume"
-+msgstr "&Phục hồi"
-+
-+#: src/boxes.c:944
-+msgid "&Kill"
-+msgstr "&Diệt"
-+
-+#: src/boxes.c:981
-+msgid "Background Jobs"
-+msgstr " Công việc nền sau"
-+
-+#: src/boxes.c:1012
-+msgid "Domain:"
-+msgstr "Miền (domain):"
-+
-+#: src/boxes.c:1012
-+msgid "Username:"
-+msgstr "Tên người dùng:"
-+
-+#: src/boxes.c:1012
-+msgid "Password:"
-+msgstr "Mật khẩu:"
-+
-+#: src/boxes.c:1063
-+#, c-format
-+msgid "Password for \\\\%s\\%s"
-+msgstr "Mật khẩu cho \\\\%s\\%s"
-+
-+#: src/charsets.c:51 vfs/extfs.c:1260 vfs/sfs.c:318
-+#, c-format
-+msgid "Warning: file %s not found\n"
-+msgstr "Cảnh báo: không tìm thấy tập tin %s\n"
-+
-+#: src/charsets.c:198 src/charsets.c:212
-+#, c-format
-+msgid "Cannot translate from %s to %s"
-+msgstr "Không chuyển được bảng mã từ %s thành %s"
-+
-+#: src/chmod.c:77
-+msgid "execute/search by others"
-+msgstr "người khác có quyền chạy/tìm"
-+
-+#: src/chmod.c:78
-+msgid "write by others"
-+msgstr "người khác có quyền ghi nhớ"
-+
-+#: src/chmod.c:79
-+msgid "read by others"
-+msgstr "người khác có quyền đọc"
-+
-+#: src/chmod.c:80
-+msgid "execute/search by group"
-+msgstr "nhóm có quyền chạy/tìm kiếm"
-+
-+#: src/chmod.c:81
-+msgid "write by group"
-+msgstr "nhóm có quyền ghi nhớ"
-+
-+#: src/chmod.c:82
-+msgid "read by group"
-+msgstr "nhóm có quyền đọc"
-+
-+#: src/chmod.c:83
-+msgid "execute/search by owner"
-+msgstr "chủ sở hữu có quyền chạy/tìm"
-+
-+#: src/chmod.c:84
-+msgid "write by owner"
-+msgstr "chủ sở hữu có quyền ghi nhớ"
-+
-+#: src/chmod.c:85
-+msgid "read by owner"
-+msgstr "chủ sở hữu có quyền đọc"
-+
-+#: src/chmod.c:86
-+msgid "sticky bit"
-+msgstr "bit dính (sticky)"
-+
-+#: src/chmod.c:87
-+msgid "set group ID on execution"
-+msgstr "đặt ID nhóm khi chạy"
-+
-+#: src/chmod.c:88
-+msgid "set user ID on execution"
-+msgstr "đặt ID người dùng khi chạy"
-+
-+#: src/chmod.c:98
-+msgid "C&lear marked"
-+msgstr "&Xóa đánh dấu"
-+
-+#: src/chmod.c:99
-+msgid "S&et marked"
-+msgstr "Đá&nh dấu"
-+
-+#: src/chmod.c:100
-+msgid "&Marked all"
-+msgstr "Đánh &dấu tất cả"
-+
-+#: src/chmod.c:124 src/screen.c:405
-+msgid "Name"
-+msgstr "Tên"
-+
-+#: src/chmod.c:126
-+msgid "Permissions (Octal)"
-+msgstr "Quyền hạn (Hệ tám)"
-+
-+#: src/chmod.c:128
-+msgid "Owner name"
-+msgstr "Tên chủ sở hữu"
-+
-+#: src/chmod.c:130
-+msgid "Group name"
-+msgstr "Tên nhóm"
-+
-+#: src/chmod.c:133
-+msgid "Use SPACE to change"
-+msgstr "Dùng PHÍM TRẮNG để thay đổi"
-+
-+#: src/chmod.c:135
-+msgid "an option, ARROW KEYS"
-+msgstr "tùy chọn, PHÍM MŨI TÊN"
-+
-+#: src/chmod.c:137
-+msgid "to move between options"
-+msgstr "để di chuyển giữa các tùy chọn"
-+
-+#: src/chmod.c:139
-+msgid "and T or INS to mark"
-+msgstr "và T hoặc INS để đánh dấu"
-+
-+#: src/chmod.c:144 src/chown.c:111
-+msgid " Permission "
-+msgstr " Quyền truy cập "
-+
-+#: src/chmod.c:196
-+msgid "Chmod command"
-+msgstr " Câu lệnh chmod "
-+
-+#: src/chown.c:74
-+msgid "Set &users"
-+msgstr "Đặt &người dùng"
-+
-+#: src/chown.c:75
-+msgid "Set &groups"
-+msgstr "Đặt &nhóm"
-+
-+#: src/chown.c:103
-+msgid " Name "
-+msgstr " Tên "
-+
-+#: src/chown.c:105
-+msgid " Owner name "
-+msgstr " Tên chủ sở hữu "
-+
-+#: src/chown.c:107 src/chown.c:117
-+msgid " Group name "
-+msgstr " Tên nhóm "
-+
-+#: src/chown.c:109
-+msgid " Size "
-+msgstr " Kích thước "
-+
-+#: src/chown.c:115
-+msgid " User name "
-+msgstr " Tên người dùng "
-+
-+#: src/chown.c:158
-+msgid " Chown command "
-+msgstr " Câu lệnh chown "
-+
-+#: src/chown.c:178
-+msgid "<Unknown user>"
-+msgstr "<không rõ người dùng>"
-+
-+#: src/chown.c:179
-+msgid "<Unknown group>"
-+msgstr "<không rõ nhóm>"
-+
-+#: src/cmd.c:194
-+msgid "Files tagged, want to cd?"
-+msgstr "Đã đánh dấu các tập tin, chuyển thư mục?"
-+
-+#: src/cmd.c:200 src/cmd.c:670 src/cmd.c:727 src/main.c:681 src/screen.c:1933
-+msgid "Cannot change directory"
-+msgstr "Không thay đổi được thư mục"
-+
-+#: src/cmd.c:233
-+msgid " View file "
-+msgstr " Xem tập tin "
-+
-+#: src/cmd.c:233
-+msgid " Filename:"
-+msgstr " Tên tập tin:"
-+
-+#: src/cmd.c:255
-+msgid " Filtered view "
-+msgstr " Lọc rồi xem "
-+
-+#: src/cmd.c:256
-+msgid " Filter command and arguments:"
-+msgstr " Lệnh lọc và tham số:"
-+
-+#: src/cmd.c:355
-+msgid "Create a new Directory"
-+msgstr "Tạo thư mục mới"
-+
-+#: src/cmd.c:356
-+msgid " Enter directory name:"
-+msgstr " Hãy nhập tên thư mục:"
-+
-+#: src/cmd.c:428
-+msgid " Filter "
-+msgstr " Đầu lọc "
-+
-+#: src/cmd.c:429
-+msgid " Set expression for filtering filenames"
-+msgstr " Đặt biểu thức để lọc tên tập tin (nhấn F1 để xem trợ giúp)"
-+
-+#: src/cmd.c:482
-+msgid " Select "
-+msgstr " Chọn "
-+
-+#: src/cmd.c:510 src/cmd.c:555 src/find.c:147
-+msgid "  Malformed regular expression  "
-+msgstr "  Biểu thức chính quy không đúng  "
-+
-+#: src/cmd.c:528
-+msgid " Unselect "
-+msgstr " Bỏ chọn "
-+
-+#: src/cmd.c:596
-+msgid "Extension file edit"
-+msgstr "Soạn thảo phần mở rộng tập tin"
-+
-+#: src/cmd.c:597
-+msgid " Which extension file you want to edit? "
-+msgstr " Soạn thảo phần mở rộng tập tin nào? "
-+
-+#: src/cmd.c:598 src/cmd.c:701
-+msgid "&User"
-+msgstr "&Người dùng"
-+
-+#: src/cmd.c:598 src/cmd.c:627 src/cmd.c:701
-+msgid "&System Wide"
-+msgstr "&Hệ thống"
-+
-+#: src/cmd.c:624
-+msgid " Menu edit "
-+msgstr " Soạn thảo tập tin trình đơn "
-+
-+#: src/cmd.c:625
-+msgid " Which menu file do you want to edit? "
-+msgstr " Soạn thảo tập tin trình đơn nào? "
-+
-+#: src/cmd.c:627
-+msgid "&Local"
-+msgstr "&Nội bộ máy"
-+
-+#: src/cmd.c:627
-+msgid "&Home"
-+msgstr "&Cá nhân"
-+
-+#: src/cmd.c:699
-+msgid "Syntax file edit"
-+msgstr "Soạn thảo tập tin cú pháp"
-+
-+#: src/cmd.c:700
-+msgid " Which syntax file you want to edit? "
-+msgstr " Soạn thảo tập tin cú pháp nào? "
-+
-+#: src/cmd.c:854
-+msgid " Compare directories "
-+msgstr " So sánh thư mục "
-+
-+#: src/cmd.c:855
-+msgid " Select compare method: "
-+msgstr " Chọn phương pháp so sánh: "
-+
-+#: src/cmd.c:855
-+msgid "&Quick"
-+msgstr "&Nhanh"
-+
-+#: src/cmd.c:856
-+msgid "&Size only"
-+msgstr "&Chỉ theo kích thước"
-+
-+#: src/cmd.c:856
-+msgid "&Thorough"
-+msgstr "&Theo từng byte"
-+
-+#: src/cmd.c:869
-+msgid " Both panels should be in the listing mode to use this command "
-+msgstr "Để thực hiện câu lệnh này cả hai bảng phải ở trong chế độ danh sách "
-+
-+#: src/cmd.c:885
-+msgid " The command history is empty "
-+msgstr " Lịch sử dòng lệnh rỗng "
-+
-+#: src/cmd.c:889
-+msgid " Command history "
-+msgstr " Lịch sử dòng lệnh "
-+
-+#: src/cmd.c:925
-+msgid ""
-+" Not an xterm or Linux console; \n"
-+" the panels cannot be toggled. "
-+msgstr ""
-+" Đây không phải là xterm hay kênh giao tác Linux; \n"
-+" bảng sẽ không thể bị tắt. "
-+
-+#: src/cmd.c:939
-+#, c-format
-+msgid "Link %s to:"
-+msgstr "Tạo liên kết tới %s:"
-+
-+#: src/cmd.c:940
-+msgid " Link "
-+msgstr " Liên kết "
-+
-+#: src/cmd.c:950
-+#, c-format
-+msgid " link: %s "
-+msgstr " liên kết: %s "
-+
-+#: src/cmd.c:978
-+#, c-format
-+msgid " symlink: %s "
-+msgstr " liên kết mềm: %s "
-+
-+#: src/cmd.c:1012
-+#, c-format
-+msgid " Symlink `%s' points to: "
-+msgstr " Liên kết mềm %s chỉ tới: "
-+
-+#: src/cmd.c:1017
-+msgid " Edit symlink "
-+msgstr " Sửa liên kết mềm "
-+
-+#: src/cmd.c:1022
-+#, c-format
-+msgid " edit symlink, unable to remove %s: %s "
-+msgstr " sửa liên kết mềm, không thể xóa %s: %s "
-+
-+#: src/cmd.c:1026
-+#, c-format
-+msgid " edit symlink: %s "
-+msgstr " sửa liên kết mềm: %s "
-+
-+#: src/cmd.c:1037
-+#, c-format
-+msgid "`%s' is not a symbolic link"
-+msgstr "`%s' không phải là một liên kết mềm"
-+
-+#: src/cmd.c:1155
-+#, c-format
-+msgid " Cannot chdir to %s "
-+msgstr " Không thể chdir vào %s "
-+
-+#: src/cmd.c:1164
-+msgid " Enter machine name (F1 for details): "
-+msgstr " Hãy nhập tên máy (nhấn F1 để biết chi tiết): "
-+
-+#: src/cmd.c:1169 src/widget.c:1051
-+msgid " Link to a remote machine "
-+msgstr " Kiết nối tới máy ở xa "
-+
-+#: src/cmd.c:1176 src/widget.c:1052
-+msgid " FTP to machine "
-+msgstr " FTP tới máy ở xa "
-+
-+#: src/cmd.c:1182
-+msgid " Shell link to machine "
-+msgstr " Kết nối shell tới máy ở xa"
-+
-+#: src/cmd.c:1189 src/widget.c:1053
-+msgid " SMB link to machine "
-+msgstr " Kết nối SMB tới máy ở xa"
-+
-+#: src/cmd.c:1198
-+msgid " Undelete files on an ext2 file system "
-+msgstr " Phục hồi tập tin trên hệ thống tập tin ext2 sau khi xóa "
-+
-+#: src/cmd.c:1199
-+msgid ""
-+" Enter device (without /dev/) to undelete\n"
-+"   files on: (F1 for details)"
-+msgstr ""
-+" Nhập tên thiết bị (không có /dev/), để\n"
-+" phục hồi tập tin của nó: (nhấn F1 để biết chi tiết)"
-+
-+#: src/cmd.c:1249
-+msgid " Setup saved to ~/"
-+msgstr " Tham số ghi nhớ trong ~/"
-+
-+#: src/cmd.c:1251
-+msgid " Setup "
-+msgstr " Cấu hình "
-+
-+#: src/command.c:177 src/screen.c:2174 src/tree.c:823
-+#, c-format
-+msgid ""
-+" Cannot chdir to \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không chdir được tới \"%s\" \n"
-+" %s "
-+
-+#: src/command.c:210 src/user.c:694
-+msgid " Cannot execute commands on non-local filesystems"
-+msgstr " Chỉ có thể thực hiện câu lệnh trên hệ thống tập tin nội bộ"
-+
-+#: src/command.c:219 src/execute.c:183
-+msgid " The shell is already running a command "
-+msgstr " shell đang chạy một câu lệnh"
-+
-+#: src/dir.c:49
-+msgid "&Unsorted"
-+msgstr "không &Sắp xếp"
-+
-+#: src/dir.c:50
-+msgid "&Name"
-+msgstr "th&Eo tên"
-+
-+#: src/dir.c:51
-+msgid "&Extension"
-+msgstr "&Phần mở rộng"
-+
-+#: src/dir.c:52
-+msgid "&Modify time"
-+msgstr "&Thời gian sửa đổi"
-+
-+#: src/dir.c:53
-+msgid "&Access time"
-+msgstr "thời &Gian truy cập"
-+
-+#: src/dir.c:54
-+msgid "&Change time"
-+msgstr "thời gi&An thay đổi"
-+
-+#: src/dir.c:55
-+msgid "&Size"
-+msgstr "&Kích thước"
-+
-+#: src/dir.c:56
-+msgid "&Inode"
-+msgstr "&Chỉ mục inode"
-+
-+#: src/dir.c:59
-+msgid "&Type"
-+msgstr "&Loại"
-+
-+#: src/dir.c:60
-+msgid "&Links"
-+msgstr "&Liên kết"
-+
-+#: src/dir.c:61
-+msgid "N&GID"
-+msgstr "N&GID"
-+
-+#: src/dir.c:62
-+msgid "N&UID"
-+msgstr "N&UID"
-+
-+#: src/dir.c:63
-+msgid "&Owner"
-+msgstr "&Chủ sở hữu"
-+
-+#: src/dir.c:64
-+msgid "&Group"
-+msgstr "&Nhóm"
-+
-+#: src/dir.c:475 src/dir.c:577
-+msgid "Cannot read directory contents"
-+msgstr "Không đọc được nội dung thư mục"
-+
-+#: src/execute.c:133 src/utilunix.c:380
-+msgid "Press any key to continue..."
-+msgstr "Để tiếp tục nhấn phím bất kỳ..."
-+
-+#: src/execute.c:235
-+msgid "Type `exit' to return to the Midnight Commander"
-+msgstr "Hãy gõ \"exit\" để quay trở lại Midnight Commander"
-+
-+#: src/execute.c:343
-+#, c-format
-+msgid " Cannot fetch a local copy of %s "
-+msgstr " Không thể lấy được bản sao nội bộ của %s "
-+
-+#: src/ext.c:106 src/user.c:566
-+#, c-format
-+msgid ""
-+" Cannot create temporary command file \n"
-+" %s "
-+msgstr ""
-+" Không tạo được tập tin câu lệnh tạm thời\n"
-+" %s "
-+
-+#: src/ext.c:119 src/user.c:589
-+msgid " Parameter "
-+msgstr " Tham số "
-+
-+#: src/ext.c:462 src/ext.c:481
-+msgid " file error "
-+msgstr " lỗi tập tin "
-+
-+#: src/ext.c:464 src/ext.c:483
-+msgid "Format of the "
-+msgstr "Định dạng của "
-+
-+#: src/ext.c:465
-+msgid ""
-+"mc.ext file has changed\n"
-+"with version 3.0. It seems that installation\n"
-+"failed. Please fetch a fresh new copy from the\n"
-+"Midnight Commander package."
-+msgstr ""
-+"Tập tin mc.ext đã thay đổi\n"
-+"từ phiên bản 3.0. Rất có thể có sự cố khi cài đặt.\n"
-+"Xin hãy lấy bản sao mới nhất từ gói  \n"
-+"Midnight Commander."
-+
-+#: src/ext.c:484
-+msgid ""
-+" file has changed\n"
-+"with version 3.0. You may want either to\n"
-+"copy it from "
-+msgstr ""
-+" tập tin đã thay đổi\n"
-+"trong phiên bản 3.0. Có thể nên sao\n"
-+"chép nó từ "
-+
-+#: src/ext.c:487
-+msgid ""
-+"mc.ext or use that\n"
-+"file as an example of how to write it.\n"
-+msgstr ""
-+"mc.ext, hoặc sử dụng tập tin này làm\n"
-+"ví dụ để biết cách viết.\n"
-+
-+#: src/ext.c:490
-+msgid "mc.ext will be used for this moment."
-+msgstr "mc.ext sẽ được sử dụng trong thời điểm này."
-+
-+#: src/file.c:122 src/tree.c:593
-+msgid " Copy "
-+msgstr " Sao chép "
-+
-+#: src/file.c:123 src/tree.c:634
-+msgid " Move "
-+msgstr " Di chuyển "
-+
-+#: src/file.c:124 src/tree.c:708
-+msgid " Delete "
-+msgstr " Xóa "
-+
-+#: src/file.c:217
-+msgid " Invalid target mask "
-+msgstr " Dấu hiệu đích đến không đúng "
-+
-+#: src/file.c:316
-+msgid " Cannot make the hardlink "
-+msgstr " Không thể tạo liên kết cứng "
-+
-+#: src/file.c:359
-+#, c-format
-+msgid ""
-+" Cannot read source link \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể đọc liên kết nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:370
-+msgid ""
-+" Cannot make stable symlinks across non-local filesystems: \n"
-+"\n"
-+" Option Stable Symlinks will be disabled "
-+msgstr ""
-+" Không tạo được liên kết mềm bền vững giữa các hệ thống tập tin không phải nội bộ:\n"
-+"\n"
-+" Tùy chọn \"Liên kết mềm Bền vững\" sẽ bị tắt "
-+
-+#: src/file.c:419
-+#, c-format
-+msgid ""
-+" Cannot create target symlink \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Khônt tạo được liên kết mềm đích \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:493
-+#, c-format
-+msgid ""
-+" Cannot overwrite directory \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể ghi chèn lên thư mục \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:504
-+#, c-format
-+msgid ""
-+" Cannot stat source file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không lấy được tính chất (stat) của tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:514 src/file.c:1115
-+#, c-format
-+msgid " `%s' and `%s' are the same file "
-+msgstr " `%s' và `%s' là một tập tin "
-+
-+#: src/file.c:552
-+#, c-format
-+msgid ""
-+" Cannot create special file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không tạo được tập tin đặc biệt \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:564 src/file.c:813
-+#, c-format
-+msgid ""
-+" Cannot chown target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thay đổi được chủ sở hữu của tập tin đích đến \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:575 src/file.c:830
-+#, c-format
-+msgid ""
-+" Cannot chmod target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thay đổi được quyền hạn (chmod) của tập tin đích đến \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:589
-+#, c-format
-+msgid ""
-+" Cannot open source file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không mở được tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:600
-+msgid " Reget failed, about to overwrite file "
-+msgstr " Lấy phần còn lại của tập tin không thành công, tập tin sẽ bị ghi đè "
-+
-+#: src/file.c:607
-+#, c-format
-+msgid ""
-+" Cannot fstat source file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không lấy được tính chất (fstat) tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:631
-+#, c-format
-+msgid ""
-+" Cannot create target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không tạo được tập tin đích \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:646
-+#, c-format
-+msgid ""
-+" Cannot fstat target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không lấy được tính chất (fstat) tập tin đích \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:680
-+#, c-format
-+msgid ""
-+" Cannot read source file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không đọc được tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:715
-+#, c-format
-+msgid ""
-+" Cannot write target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không ghi nhớ được tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:733
-+msgid "(stalled)"
-+msgstr "(bị nhốt)"
-+
-+#: src/file.c:780
-+#, c-format
-+msgid ""
-+" Cannot close source file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không đóng được tập tin nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:791
-+#, c-format
-+msgid ""
-+" Cannot close target file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không đóng được tập tin đính \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:804
-+msgid "Incomplete file was retrieved. Keep it?"
-+msgstr "Nhận được tập tin không đầy đủ. Giữ tập tin?"
-+
-+#: src/file.c:805
-+msgid "&Delete"
-+msgstr "&Xóa"
-+
-+#: src/file.c:805
-+msgid "&Keep"
-+msgstr "&Giữ"
-+
-+#: src/file.c:873
-+#, c-format
-+msgid ""
-+" Cannot stat source directory \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không lấy được thông tin (stat) thư mục nguồn \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:900
-+#, c-format
-+msgid ""
-+" Source directory \"%s\" is not a directory \n"
-+" %s "
-+msgstr ""
-+" Thư mục nguồn \"%s\" không phải là một thư mục \n"
-+" %s "
-+
-+#: src/file.c:910
-+#, c-format
-+msgid ""
-+" Cannot copy cyclic symbolic link \n"
-+" `%s' "
-+msgstr ""
-+" Không sao chép được liên kết mềm vòng lặp \n"
-+" `%s' "
-+
-+#: src/file.c:945 src/file.c:1985 src/tree.c:648
-+#, c-format
-+msgid ""
-+" Destination \"%s\" must be a directory \n"
-+" %s "
-+msgstr ""
-+" Nơi đến \"%s\" phải là một thư mục \n"
-+" %s "
-+
-+#: src/file.c:975
-+#, c-format
-+msgid ""
-+" Cannot create target directory \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không tạo được thư mục đích đến \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:994
-+#, c-format
-+msgid ""
-+" Cannot chown target directory \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thay đổi được chủ sở hữu (chown) của thư mục đích đến \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1096
-+#, c-format
-+msgid ""
-+" Cannot stat file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không nhận được tính chất (stat) của tập tin \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1122
-+#, c-format
-+msgid " Cannot overwrite directory `%s' "
-+msgstr " Không thể ghi đè lên thư mục `%s' "
-+
-+#: src/file.c:1157
-+#, c-format
-+msgid ""
-+" Cannot move file \"%s\" to \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể di chuyển tập tin \"%s\" vào \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1181
-+#, c-format
-+msgid ""
-+" Cannot remove file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể xóa tập tin \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1233
-+#, c-format
-+msgid " `%s' and `%s' are the same directory "
-+msgstr " %s và %s - là một thư mục "
-+
-+#: src/file.c:1252
-+#, c-format
-+msgid " Cannot overwrite directory \"%s\" %s "
-+msgstr " Không thể ghi đè lên thư mục \"%s\" %s "
-+
-+#: src/file.c:1256
-+#, c-format
-+msgid " Cannot overwrite file \"%s\" %s "
-+msgstr " Không thể ghi đè tập tin \"%s\" %s "
-+
-+#: src/file.c:1282
-+#, c-format
-+msgid ""
-+" Cannot move directory \"%s\" to \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể di chuyển thư mục \"%s\" vào \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1352
-+#, c-format
-+msgid ""
-+" Cannot delete file \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể xóa tập tin \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1412 src/file.c:1481 src/file.c:1509
-+#, c-format
-+msgid ""
-+" Cannot remove directory \"%s\" \n"
-+" %s "
-+msgstr ""
-+" Không thể xóa thư mục \"%s\" \n"
-+" %s "
-+
-+#: src/file.c:1657
-+msgid "1Copy"
-+msgstr "1Sao chép"
-+
-+#: src/file.c:1657
-+msgid "1Move"
-+msgstr "1Di chuyển"
-+
-+#: src/file.c:1657
-+msgid "1Delete"
-+msgstr "1Xóa"
-+
-+#: src/file.c:1672
-+#, no-c-format
-+msgid "%o %f \"%s\"%m"
-+msgstr "%o %f \"%s\"%m"
-+
-+# msgfmt warnings/errors must be ignored. mc parse this pattern itself.
-+#: src/file.c:1674
-+#, no-c-format
-+msgid "%o %d %f%m"
-+msgstr "%o (%d cái) %f%m"
-+
-+#: src/file.c:1676 vfs/fish.c:561
-+msgid "file"
-+msgstr "tập tin"
-+
-+#: src/file.c:1676
-+msgid "files"
-+msgstr "các tập tin"
-+
-+#: src/file.c:1676
-+msgid "directory"
-+msgstr "thư mục"
-+
-+#: src/file.c:1676
-+msgid "directories"
-+msgstr "Các thư mục"
-+
-+#: src/file.c:1677
-+msgid "files/directories"
-+msgstr "tập tin/thư mục"
-+
-+#: src/file.c:1677
-+msgid " with source mask:"
-+msgstr " với nhãn ban đầu:"
-+
-+#: src/file.c:1677
-+msgid " to:"
-+msgstr " vào:"
-+
-+#: src/file.c:1821
-+msgid " Cannot operate on \"..\"! "
-+msgstr " Không thể thao tác trên \"..\"! "
-+
-+#: src/file.c:1877
-+msgid " Sorry, I could not put the job in background "
-+msgstr " Xin lỗi, không thể đặt công việc nào vào chế độ nền sau "
-+
-+#: src/file.c:2147 src/view.c:441
-+msgid "&Retry"
-+msgstr "&Thử lại"
-+
-+#: src/file.c:2148 src/file.c:2211 src/filegui.c:207 src/filegui.c:517
-+msgid "&Abort"
-+msgstr "&Dừng"
-+
-+#: src/file.c:2200
-+msgid ""
-+"\n"
-+"   Directory not empty.   \n"
-+"   Delete it recursively? "
-+msgstr ""
-+"\n"
-+"   Thư mục không rỗng.    \n"
-+"   Xóa toàn bộ (đệ quy)? "
-+
-+#: src/file.c:2202
-+msgid ""
-+"\n"
-+"   Background process: Directory not empty \n"
-+"   Delete it recursively? "
-+msgstr ""
-+"\n"
-+"   Tiến trình nền sau: Thư mục không rỗng \n"
-+"   Xóa toàn bộ (đệ quy)? "
-+
-+#: src/file.c:2204
-+msgid " Delete: "
-+msgstr " Xóa: "
-+
-+#: src/file.c:2210 src/filegui.c:519
-+msgid "Non&e"
-+msgstr "&Không"
-+
-+#: src/filegui.c:324
-+#, c-format
-+msgid "ETA %d:%02d.%02d"
-+msgstr "Còn lại %d:%02d.%02d"
-+
-+#: src/filegui.c:347
-+#, c-format
-+msgid "%.2f MB/s"
-+msgstr "%.2f МB/giây"
-+
-+#: src/filegui.c:350
-+#, c-format
-+msgid "%.2f KB/s"
-+msgstr "%.2f KB/giây"
-+
-+#: src/filegui.c:353
-+#, c-format
-+msgid "%ld B/s"
-+msgstr "%ld B/giây"
-+
-+#: src/filegui.c:376
-+msgid "File"
-+msgstr "Tập tin"
-+
-+#: src/filegui.c:399
-+msgid "Count"
-+msgstr "Đếm"
-+
-+#: src/filegui.c:420
-+msgid "Bytes"
-+msgstr "Byte"
-+
-+#: src/filegui.c:453
-+msgid "Source"
-+msgstr "Nguồn"
-+
-+#: src/filegui.c:476
-+msgid "Target"
-+msgstr "Đích"
-+
-+#: src/filegui.c:498
-+msgid "Deleting"
-+msgstr "Đang xóa"
-+
-+#: src/filegui.c:516
-+#, c-format
-+msgid "Target file \"%s\" already exists!"
-+msgstr "Tập tin đích \"%s\" đã tồn tại!"
-+
-+#: src/filegui.c:518
-+msgid "If &size differs"
-+msgstr "&Nếu kích thước khác nhau"
-+
-+#: src/filegui.c:520
-+msgid "&Update"
-+msgstr "&Cập nhật"
-+
-+#: src/filegui.c:522
-+msgid "Overwrite all targets?"
-+msgstr "Khi đè lên mọi tập tin đích?"
-+
-+#: src/filegui.c:523
-+msgid "&Reget"
-+msgstr "&Lấy lại"
-+
-+#: src/filegui.c:524
-+msgid "A&ppend"
-+msgstr "&Thêm vào cuối"
-+
-+#: src/filegui.c:527
-+msgid "Overwrite this target?"
-+msgstr "Khi đè lên tập tin này?"
-+
-+#: src/filegui.c:528
-+#, c-format
-+msgid "Target date: %s, size %d"
-+msgstr "Thời gian sửa đổi của tập tin đích: %s, kích thước %d"
-+
-+#: src/filegui.c:529
-+#, c-format
-+msgid "Source date: %s, size %d"
-+msgstr "Thời gian sửa đổi của tập tin nguồn: %s, kích thước %d"
-+
-+#: src/filegui.c:604
-+msgid " File exists "
-+msgstr " Tập tin tồn tại "
-+
-+#: src/filegui.c:606
-+msgid " Background process: File exists "
-+msgstr " Tiến trình nền sau: tập tin tồn tại "
-+
-+#: src/filegui.c:728
-+msgid "preserve &Attributes"
-+msgstr "&Ghi nhớ thuộc tính"
-+
-+#: src/filegui.c:730
-+msgid "follow &Links"
-+msgstr "đi theo &Liên kết"
-+
-+#: src/filegui.c:732
-+msgid "to:"
-+msgstr "vào:"
-+
-+#: src/filegui.c:733
-+msgid "&Using shell patterns"
-+msgstr "&Sử dụng mẫu (pattern) của shell"
-+
-+#: src/filegui.c:754
-+msgid "&Background"
-+msgstr "&Trong nền sau"
-+
-+#: src/filegui.c:764
-+msgid "&Stable Symlinks"
-+msgstr "liên kết &Bền vững"
-+
-+#: src/filegui.c:766
-+msgid "&Dive into subdir if exists"
-+msgstr "&Vào thư mục con, nếu có"
-+
-+#: src/filegui.c:938
-+#, c-format
-+msgid ""
-+"Invalid source pattern `%s' \n"
-+" %s "
-+msgstr ""
-+"Mẫu không đúng `%s' \n"
-+" %s "
-+
-+#: src/find.c:99
-+msgid "&Suspend"
-+msgstr "&Hoãn"
-+
-+#: src/find.c:100
-+msgid "Con&tinue"
-+msgstr "&Tiếp tục"
-+
-+#: src/find.c:101
-+msgid "&Chdir"
-+msgstr "&Chuyển thư mục"
-+
-+#: src/find.c:102
-+msgid "&Again"
-+msgstr "&Lặp lại"
-+
-+#: src/find.c:103 src/subshell.c:323
-+msgid "&Quit"
-+msgstr "&Thoát"
-+
-+#: src/find.c:104 src/panelize.c:69
-+msgid "Pane&lize"
-+msgstr "&Bảng"
-+
-+#: src/find.c:105
-+msgid "&View - F3"
-+msgstr "X&em - F3"
-+
-+#: src/find.c:106
-+msgid "&Edit - F4"
-+msgstr "&Soạn thảo - F4"
-+
-+#: src/find.c:183
-+msgid "Start at:"
-+msgstr "Bắt đầu từ:"
-+
-+#: src/find.c:183
-+msgid "Filename:"
-+msgstr "Tên tập tin:"
-+
-+#: src/find.c:183
-+msgid "Content: "
-+msgstr "Nội dung: "
-+
-+#: src/find.c:184 src/main.c:795 src/main.c:819
-+msgid "&Tree"
-+msgstr "&Cây thư mục"
-+
-+#: src/find.c:232 src/find.c:792
-+msgid "Find File"
-+msgstr "Tìm tập tin"
-+
-+#: src/find.c:464
-+#, c-format
-+msgid "Grepping in %s"
-+msgstr "Tìm trong %s"
-+
-+#: src/find.c:538
-+msgid "Finished"
-+msgstr "Kết thúc"
-+
-+#: src/find.c:565 src/view.c:1594
-+#, c-format
-+msgid "Searching %s"
-+msgstr "Tìm %s"
-+
-+#: src/find.c:721 src/find.c:818
-+msgid "Searching"
-+msgstr "Tìm"
-+
-+#: src/help.c:279
-+msgid " Help file format error\n"
-+msgstr " Lỗi định dạng tập tin trợ giúp\n"
-+
-+#: src/help.c:318
-+msgid " Internal bug: Double start of link area "
-+msgstr " Lỗi (bug) nội bộ: vùng liên kết có hai đầu "
-+
-+#: src/help.c:554 src/help.c:778
-+#, c-format
-+msgid " Cannot find node %s in help file "
-+msgstr " Không tìm thấy nút %s trong tập tin trợ giúp "
-+
-+#: src/help.c:816
-+msgid "Index"
-+msgstr "Chỉ mục"
-+
-+#: src/help.c:818
-+msgid "Prev"
-+msgstr "Quay lại"
-+
-+#: src/hotlist.c:115
-+msgid "&Move"
-+msgstr "&Di chuyển"
-+
-+#: src/hotlist.c:116 src/panelize.c:68
-+msgid "&Remove"
-+msgstr "&Xóa"
-+
-+#: src/hotlist.c:117 src/hotlist.c:834 src/hotlist.c:930
-+msgid "&Append"
-+msgstr "&Thêm vào"
-+
-+#: src/hotlist.c:118 src/hotlist.c:832 src/hotlist.c:928
-+msgid "&Insert"
-+msgstr "c&Hèn"
-+
-+#: src/hotlist.c:119
-+msgid "New &Entry"
-+msgstr "tạo &Mục mới"
-+
-+#: src/hotlist.c:120
-+msgid "New &Group"
-+msgstr "&Nhóm mới"
-+
-+#: src/hotlist.c:122
-+msgid "&Up"
-+msgstr "&Lên"
-+
-+#: src/hotlist.c:123
-+msgid "&Add current"
-+msgstr "&Thêm hiện thời"
-+
-+#: src/hotlist.c:125
-+msgid "&Refresh"
-+msgstr "&Làm mới"
-+
-+#: src/hotlist.c:126
-+msgid "Fr&ee VFSs now"
-+msgstr "&Giải phóng"
-+
-+#: src/hotlist.c:128
-+msgid "Change &To"
-+msgstr "&Chuyển tới"
-+
-+#: src/hotlist.c:177
-+msgid "Subgroup - press ENTER to see list"
-+msgstr "Nhóm con - nhấn ENTER để xem danh sách"
-+
-+#: src/hotlist.c:609
-+msgid "Active VFS directories"
-+msgstr "Thư mục VFS hoạt động"
-+
-+#: src/hotlist.c:612
-+msgid "Directory hotlist"
-+msgstr "Danh sách thư mục thường dùng"
-+
-+#: src/hotlist.c:640
-+msgid " Directory path "
-+msgstr " Đường dẫn tới thư mục "
-+
-+#: src/hotlist.c:643 src/hotlist.c:692
-+msgid " Directory label "
-+msgstr " Nhãn thư mục"
-+
-+#: src/hotlist.c:668
-+#, c-format
-+msgid "Moving %s"
-+msgstr "Di chuyển %s"
-+
-+#: src/hotlist.c:907
-+msgid "New hotlist entry"
-+msgstr " Thêm bản ghi vào tra cứu"
-+
-+#: src/hotlist.c:907
-+msgid "Directory label"
-+msgstr " Tên nhãn thư mục"
-+
-+#: src/hotlist.c:907
-+msgid "Directory path"
-+msgstr " Đường dẫn tới thư mục"
-+
-+#: src/hotlist.c:987
-+msgid " New hotlist group "
-+msgstr " Thêm nhóm vào tra cứu "
-+
-+#: src/hotlist.c:987
-+msgid "Name of new group"
-+msgstr " Tên nhóm mới"
-+
-+#: src/hotlist.c:1002
-+#, c-format
-+msgid "Label for \"%s\":"
-+msgstr " Tên nhãn cho \"%s\":"
-+
-+#: src/hotlist.c:1006
-+msgid " Add to hotlist "
-+msgstr " Thêm vào tra cứu "
-+
-+#: src/hotlist.c:1043
-+msgid " Remove: "
-+msgstr " Xóa: "
-+
-+#: src/hotlist.c:1047
-+msgid ""
-+"\n"
-+" Group not empty.\n"
-+" Remove it?"
-+msgstr ""
-+"\n"
-+" Nhóm không rỗng.\n"
-+" Xóa nó?"
-+
-+#: src/hotlist.c:1391
-+msgid " Top level group "
-+msgstr "Nhóm cấp độ cao nhất "
-+
-+#: src/hotlist.c:1414
-+msgid "MC was unable to write ~/"
-+msgstr "MC không thể ghi nhớ ~/"
-+
-+#: src/hotlist.c:1415
-+msgid " file, your old hotlist entries were not deleted"
-+msgstr " tập tin, tra cứu thư mục cũ chưa bị xóa"
-+
-+#: src/hotlist.c:1417
-+msgid " Hotlist Load "
-+msgstr " Nạp tra cứu "
-+
-+#: src/info.c:74
-+#, c-format
-+msgid "Midnight Commander %s"
-+msgstr "Midnight Commander %s"
-+
-+#: src/info.c:91
-+#, c-format
-+msgid "File:       %s"
-+msgstr "Tập tin:       %s"
-+
-+#: src/info.c:103
-+#, c-format
-+msgid "Free nodes: %d (%d%%) of %d"
-+msgstr "Nút tự do: %d (%d%%) trong tổng số %d"
-+
-+#: src/info.c:109
-+msgid "No node information"
-+msgstr "Không có thông tin về nút (node)"
-+
-+#: src/info.c:117
-+#, c-format
-+msgid "Free space: %s (%d%%) of %s"
-+msgstr "Chỗ trống:    %s (%d%%) của %s"
-+
-+#: src/info.c:121
-+msgid "No space information"
-+msgstr "Không có thông tin về khoảng trống"
-+
-+#: src/info.c:125
-+#, c-format
-+msgid "Type:      %s "
-+msgstr "Loại:         %s "
-+
-+#: src/info.c:125
-+msgid "non-local vfs"
-+msgstr "không phải vfs cục bộ"
-+
-+#: src/info.c:131
-+#, c-format
-+msgid "Device:    %s"
-+msgstr "Thiết bị:     %s"
-+
-+#: src/info.c:135
-+#, c-format
-+msgid "Filesystem: %s"
-+msgstr "Hệ thống tập tin: %s"
-+
-+#: src/info.c:140
-+#, c-format
-+msgid "Accessed:  %s"
-+msgstr "Truy cập:     %s"
-+
-+#: src/info.c:144
-+#, c-format
-+msgid "Modified:  %s"
-+msgstr "Sửa đổi:      %s"
-+
-+#: src/info.c:148
-+#, c-format
-+msgid "Created:   %s"
-+msgstr "Tạo ra:       %s"
-+
-+#: src/info.c:163
-+#, c-format
-+msgid "Size:      %s"
-+msgstr "Kích thước:   %s"
-+
-+#: src/info.c:166
-+#, c-format
-+msgid " (%d block)"
-+msgstr " (%d khối)"
-+
-+#: src/info.c:166
-+#, c-format
-+msgid " (%d blocks)"
-+msgstr " (%d khối)"
-+
-+#: src/info.c:172
-+#, c-format
-+msgid "Owner:     %s/%s"
-+msgstr "Chủ sở hữu:   %s/%s"
-+
-+#: src/info.c:177
-+#, c-format
-+msgid "Links:     %d"
-+msgstr "Liên kết:     %d"
-+
-+#: src/info.c:181
-+#, c-format
-+msgid "Mode:      %s (%04o)"
-+msgstr "Quyền hạn:    %s (%04o)"
-+
-+#: src/info.c:186
-+#, c-format
-+msgid "Location:  %Xh:%Xh"
-+msgstr "Vị trí:       %Xh:%Xh"
-+
-+#: src/info.c:196
-+msgid "File:       None"
-+msgstr "Tập tin:      Không có"
-+
-+#: src/layout.c:151
-+msgid "&Vertical"
-+msgstr "&Thẳng đứng"
-+
-+#: src/layout.c:152
-+msgid "&Horizontal"
-+msgstr "&Nằm ngang"
-+
-+#: src/layout.c:162
-+msgid "&Xterm window title"
-+msgstr "tiê&U đề cửa sổ xterm"
-+
-+#: src/layout.c:163
-+msgid "h&Intbar visible"
-+msgstr "dòng &Gợi ý"
-+
-+#: src/layout.c:164
-+msgid "&Keybar visible"
-+msgstr "&Hiển thị thanh phím tắt"
-+
-+#: src/layout.c:165
-+msgid "command &Prompt"
-+msgstr "&Dòng lệnh"
-+
-+#: src/layout.c:166
-+msgid "show &Mini status"
-+msgstr "hiện trạng thái m&Ini"
-+
-+#: src/layout.c:167
-+msgid "menu&Bar visible"
-+msgstr "thAnh trình đơn"
-+
-+#: src/layout.c:168
-+msgid "&Equal split"
-+msgstr "&Kích thước bằng nhau"
-+
-+#: src/layout.c:169
-+msgid "pe&Rmissions"
-+msgstr "&Quyền truy cập"
-+
-+#: src/layout.c:170
-+msgid "&File types"
-+msgstr "&Loại tập tin"
-+
-+#: src/layout.c:350 src/learn.c:59 src/learn.c:174 src/option.c:115
-+msgid "&Save"
-+msgstr "Ghi nhớ &+"
-+
-+#: src/layout.c:358
-+msgid " Panel split "
-+msgstr " Chia bảng "
-+
-+#: src/layout.c:359
-+msgid " Highlight... "
-+msgstr " Chiếu sáng... "
-+
-+#: src/layout.c:360 src/option.c:125
-+msgid " Other options "
-+msgstr " Cấu hình khác "
-+
-+#: src/layout.c:361
-+msgid "output lines"
-+msgstr "dòng kết quả"
-+
-+#: src/layout.c:423
-+msgid "Layout"
-+msgstr "Vẻ ngoài"
-+
-+#: src/learn.c:73
-+msgid "Learn keys"
-+msgstr "Tạo phím tắt"
-+
-+#: src/learn.c:79
-+msgid " Teach me a key "
-+msgstr " Dạy tôi một phím "
-+
-+#: src/learn.c:80
-+#, c-format
-+msgid ""
-+"Please press the %s\n"
-+"and then wait until this message disappears.\n"
-+"\n"
-+"Then, press it again to see if OK appears\n"
-+"next to its button.\n"
-+"\n"
-+"If you want to escape, press a single Escape key\n"
-+"and wait as well."
-+msgstr ""
-+"Xin hãy nhấn lên %s\n"
-+"và đợi cho thông báo này biến mất.\n"
-+"\n"
-+"Sau đó hãy nhấn một lần nữa để chắc chắn là ở bên phải\n"
-+"của tên xuất hiện \"OK\".\n"
-+"\n"
-+"Nếu bạn muốn dừng việc dạy phím, thì hãy nhấn\n"
-+"phím Esc và cũng cần đợi một chút."
-+
-+#: src/learn.c:114
-+msgid " Cannot accept this key "
-+msgstr " Không thể chấp nhận phím này "
-+
-+#: src/learn.c:115
-+#, c-format
-+msgid " You have entered \"%s\""
-+msgstr " Đã nhập vào \"%s\""
-+
-+#. TRANSLATORS: This label appears near learned keys.  Keep it short.
-+#: src/learn.c:164
-+msgid "OK"
-+msgstr "OK"
-+
-+#: src/learn.c:172
-+msgid ""
-+"It seems that all your keys already\n"
-+"work fine. That's great."
-+msgstr ""
-+"Có vẻ như tất cả các phím của bạn\n"
-+"làm việc tốt. Thật là tuyệt."
-+
-+#: src/learn.c:174
-+msgid "&Discard"
-+msgstr "&Vứt bỏ"
-+
-+#: src/learn.c:179
-+msgid ""
-+"Great! You have a complete terminal database!\n"
-+"All your keys work well."
-+msgstr ""
-+"Tuyệt! Chúng ta có một cơ sở dữ liệu mô tả terminal đầy đủ!\n"
-+"Tất cả các phím đều làm việc tốt."
-+
-+#: src/learn.c:287
-+msgid "Press all the keys mentioned here. After you have done it, check"
-+msgstr "Hãy nhấn tất cả những phím liệt kê ở trên. Sau khi nhấn xong, hãy kiểm tra"
-+
-+#: src/learn.c:291
-+msgid "which keys are not marked with OK.  Press space on the missing"
-+msgstr "xem những phím nào không có dấu hiệu \"OK\".  Nhấn phím space trên những"
-+
-+#: src/learn.c:295
-+msgid "key, or click with the mouse to define it. Move around with Tab."
-+msgstr "phím bị thiếu, hoặc nhấn chuột để xác định. Di chuyển bằng Tab."
-+
-+#: src/main.c:425
-+msgid ""
-+" The Commander can't change to the directory that \n"
-+" the subshell claims you are in.  Perhaps you have \n"
-+" deleted your working directory, or given yourself \n"
-+" extra access permissions with the \"su\" command? "
-+msgstr ""
-+" MC không thể chuyển vào thư mục, mà tiến trình shell \n"
-+" con thông báo. Rất có thể, bạn đã xóa thư mục làm việc \n"
-+" hoặc thêm cho mình quyền truy cập mở rộng bằng câu \n"
-+" lệnh \"su\"? "
-+
-+#: src/main.c:469 src/screen.c:1951
-+msgid " The Midnight Commander "
-+msgstr " Midnight Commander "
-+
-+#: src/main.c:470
-+msgid " Do you really want to quit the Midnight Commander? "
-+msgstr " Thực sự muốn thoát Midnight Commander? "
-+
-+#: src/main.c:792 src/main.c:816
-+msgid "&Listing mode..."
-+msgstr "&Dạng danh sách..."
-+
-+#: src/main.c:793 src/main.c:817
-+msgid "&Quick view     C-x q"
-+msgstr "&Xem nhanh     C-x q"
-+
-+#: src/main.c:794 src/main.c:818
-+msgid "&Info           C-x i"
-+msgstr "&Thông tin     C-x i"
-+
-+#: src/main.c:797 src/main.c:821
-+msgid "&Sort order..."
-+msgstr "t&Hứ tự sắp xếp..."
-+
-+#: src/main.c:799 src/main.c:823
-+msgid "&Filter..."
-+msgstr "&Lọc tập tin..."
-+
-+#: src/main.c:803 src/main.c:827
-+msgid "&Network link..."
-+msgstr "&Kết nối mạng..."
-+
-+#: src/main.c:805 src/main.c:829
-+msgid "FT&P link..."
-+msgstr "kết nối &FTP..."
-+
-+#: src/main.c:806 src/main.c:830
-+msgid "S&hell link..."
-+msgstr "kết nối &Shell..."
-+
-+#: src/main.c:808 src/main.c:832
-+msgid "SM&B link..."
-+msgstr "kết nối SM&B..."
-+
-+#: src/main.c:812 src/main.c:836
-+msgid "&Rescan         C-r"
-+msgstr "&Quét lại        C-r"
-+
-+#: src/main.c:840
-+msgid "&User menu          F2"
-+msgstr "&Trình đơn người dùng   F2"
-+
-+#: src/main.c:841
-+msgid "&View               F3"
-+msgstr "&Xem                    F3"
-+
-+#: src/main.c:842
-+msgid "Vie&w file...         "
-+msgstr "x&Em tập tin...       "
-+
-+#: src/main.c:843
-+msgid "&Filtered view     M-!"
-+msgstr "xe&M đã lọc            M-!"
-+
-+#: src/main.c:844
-+msgid "&Edit               F4"
-+msgstr "&Soạn thảo              F4"
-+
-+#: src/main.c:845
-+msgid "&Copy               F5"
-+msgstr "sao &Chép               F5"
-+
-+#: src/main.c:846
-+msgid "c&Hmod           C-x c"
-+msgstr "c&Hmod               C-x c"
-+
-+#: src/main.c:847
-+msgid "&Link            C-x l"
-+msgstr "&Liên kết cứng       C-x l"
-+
-+#: src/main.c:848
-+msgid "&SymLink         C-x s"
-+msgstr "liên &Kết mềm        C-x s"
-+
-+#: src/main.c:849
-+msgid "edit s&Ymlink  C-x C-s"
-+msgstr "sử&A liên kết mềm  C-x C-s"
-+
-+#: src/main.c:850
-+msgid "ch&Own           C-x o"
-+msgstr "cho&Wn               C-x o"
-+
-+#: src/main.c:851
-+msgid "&Advanced chown       "
-+msgstr "chown &Nâng cao      "
-+
-+#: src/main.c:852
-+msgid "&Rename/Move        F6"
-+msgstr "Đổi tên/&Di chuyển      F6"
-+
-+#: src/main.c:853
-+msgid "&Mkdir              F7"
-+msgstr "mkdi&R                  F7"
-+
-+#: src/main.c:854
-+msgid "&Delete             F8"
-+msgstr "xó&A                    F8"
-+
-+#: src/main.c:855
-+msgid "&Quick cd          M-c"
-+msgstr "cd nhanh &>           M-c"
-+
-+#: src/main.c:857
-+msgid "select &Group      M-+"
-+msgstr "Chọn Nhóm &+           M-+"
-+
-+#: src/main.c:858
-+msgid "u&Nselect group    M-\\"
-+msgstr "&Bỏ chọn nhóm          M-\\"
-+
-+#: src/main.c:859
-+msgid "reverse selec&Tion M-*"
-+msgstr "Chọn ngược lạ&I        M-*"
-+
-+#: src/main.c:861
-+msgid "e&Xit              F10"
-+msgstr "Th&Oát                 F10"
-+
-+#: src/main.c:869
-+msgid "&Directory tree"
-+msgstr "cây thư &Mục"
-+
-+#: src/main.c:870
-+msgid "&Find file            M-?"
-+msgstr "&Tìm tập tin                   M-?"
-+
-+#: src/main.c:871
-+msgid "s&Wap panels          C-u"
-+msgstr "đổi chỗ h&Ai bảng              C-u"
-+
-+#: src/main.c:872
-+msgid "switch &Panels on/off C-o"
-+msgstr "&Bật/tắt bảng                  C-o"
-+
-+#: src/main.c:873
-+msgid "&Compare directories  C-x d"
-+msgstr "&So sánh thư mục             C-x d"
-+
-+#: src/main.c:874
-+msgid "e&Xternal panelize    C-x !"
-+msgstr "bản&G ngoài                  C-x !"
-+
-+#: src/main.c:875
-+msgid "show directory s&Izes"
-+msgstr "&Hiển thị kích thước thư mục"
-+
-+#: src/main.c:877
-+msgid "command &History"
-+msgstr "&Lịch sử câu lệnh"
-+
-+#: src/main.c:878
-+msgid "di&Rectory hotlist    C-\\"
-+msgstr "Thư mục thường dùng &*         C-\\"
-+
-+#: src/main.c:880
-+msgid "&Active VFS list      C-x a"
-+msgstr "&Danh sách VFS hoạt động     C-x a"
-+
-+#: src/main.c:883
-+msgid "&Background jobs      C-x j"
-+msgstr "&Công việc nền sau           C-x j"
-+
-+#: src/main.c:887
-+msgid "&Undelete files (ext2fs only)"
-+msgstr "&Phục hồi tập tin đã xóa (chỉ ext2fs)"
-+
-+#: src/main.c:890
-+msgid "&Listing format edit"
-+msgstr "&Soạn thảo định dạng danh sách"
-+
-+#: src/main.c:895
-+msgid "Edit &extension file"
-+msgstr "soạn thảo tập tin phần mở &Rộng"
-+
-+#: src/main.c:896
-+msgid "Edit &menu file"
-+msgstr "soạ&N thảo tập tin trình đơn"
-+
-+#: src/main.c:898
-+msgid "Edit edi&tor menu file"
-+msgstr "sửa trình đơn của trình s&Oạn thảo"
-+
-+#: src/main.c:899
-+msgid "Edit &syntax file"
-+msgstr "sửa tập tin cú &Pháp"
-+
-+#: src/main.c:905
-+msgid "&Configuration..."
-+msgstr "&Cấu hình..."
-+
-+#: src/main.c:906
-+msgid "&Layout..."
-+msgstr "&Vẻ ngoài..."
-+
-+#: src/main.c:907
-+msgid "c&Onfirmation..."
-+msgstr "&Xác nhận..."
-+
-+#: src/main.c:908
-+msgid "&Display bits..."
-+msgstr "bit &Hiển thị..."
-+
-+#: src/main.c:911
-+msgid "&Virtual FS..."
-+msgstr "&FS ảo..."
-+
-+#: src/main.c:914
-+msgid "&Save setup"
-+msgstr "&Ghi nhớ cấu hình"
-+
-+#: src/main.c:925
-+msgid " &Above "
-+msgstr " Ở &trên "
-+
-+#: src/main.c:925
-+msgid " &Left "
-+msgstr " &Bảng trái "
-+
-+#: src/main.c:929
-+msgid " &File "
-+msgstr " &Tập tin "
-+
-+#: src/main.c:932
-+msgid " &Command "
-+msgstr " &Câu lệnh "
-+
-+#: src/main.c:935
-+msgid " &Options "
-+msgstr " &Cấu hình "
-+
-+#: src/main.c:938
-+msgid " &Below "
-+msgstr " Ở &dưới "
-+
-+#: src/main.c:938
-+msgid " &Right "
-+msgstr " Bảng &phải "
-+
-+#: src/main.c:981
-+msgid " Information "
-+msgstr " Thông tin "
-+
-+#: src/main.c:983
-+msgid ""
-+" Using the fast reload option may not reflect the exact \n"
-+" directory contents. In this case you'll need to do a   \n"
-+" manual reload of the directory. See the man page for   \n"
-+" the details.                                           "
-+msgstr ""
-+" Sử dụng tùy chọn nạp lại nhanh có thể không phản ánh   \n"
-+" đúng nội dung hiện thời của thư mục. Trong trường hợp  \n"
-+" này cần nạp lại thư mục một cách thủ công. Hãy xem     \n"
-+" trang hướng dẫn sử dụng man để biết them chi tiết.     "
-+
-+#: src/main.c:1206 src/screen.c:2185
-+msgid "Menu"
-+msgstr "Trđơn "
-+
-+#: src/main.c:1340
-+msgid "The TERM environment variable is unset!\n"
-+msgstr "Biến môi trườn TERM chưa được xác định!\n"
-+
-+#: src/main.c:1642 src/textconf.c:116
-+#, c-format
-+msgid "GNU Midnight Commander %s\n"
-+msgstr "GNU Midnight Commander %s\n"
-+
-+#: src/main.c:1848
-+msgid "[flags] [this_dir] [other_panel_dir]\n"
-+msgstr "[cờ] [thư_mục_này] [thư_mục_bảng_còn_lại]\n"
-+
-+#: src/main.c:1852
-+msgid "+number"
-+msgstr "+số"
-+
-+#: src/main.c:1853
-+msgid "Set initial line number for the internal editor"
-+msgstr "Đặt số dòng ban đầu cho trình soạn thảo nội bộ"
-+
-+#: src/main.c:1855
-+msgid ""
-+"\n"
-+"Please send any bug reports (including the output of `mc -V')\n"
-+"to mc-devel@gnome.org\n"
-+msgstr ""
-+"\n"
-+"Xin hãy gửi bất kỳ báo cáo lỗi (bug) nào (gồm cả kết quả của lệnh `mc -V')\n"
-+"tới mc-devel@gnome.org\n"
-+
-+#: src/main.c:1870
-+msgid ""
-+"--colors KEYWORD={FORE},{BACK}\n"
-+"\n"
-+"{FORE} and {BACK} can be omitted, and the default will be used\n"
-+"\n"
-+"Keywords:\n"
-+"   Global:       errors, reverse, gauge, input\n"
-+"   File display: normal, selected, marked, markselect\n"
-+"   Dialog boxes: dnormal, dfocus, dhotnormal, dhotfocus\n"
-+"   Menus:        menu, menuhot, menusel, menuhotsel\n"
-+"   Help:         helpnormal, helpitalic, helplink, helpslink\n"
-+"   File types:   directory, executable, link, stalelink, device, special, "
-+"core\n"
-+"\n"
-+"Colors:\n"
-+"   black, gray, red, brightred, green, brightgreen, brown,\n"
-+"   yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
-+"   brightcyan, lightgray and white\n"
-+"\n"
-+msgstr ""
-+"--colors TỪ_KHÓA={VĂN BẢN},{NỀN}\n"
-+"\n"
-+"có thể bỏ qua {VĂN BẢN} và {NỀN}, và sử dụng giá trị theo mặc định\n"
-+"\n"
-+"Từ khóa:\n"
-+"   Toàn cầu:         errors, reverse, gauge, input\n"
-+"   Hiển thị tập tin: normal, selected, marked, markselect\n"
-+"   Hộp thoại:        dnormal, dfocus, dhotnormal, dhotfocus\n"
-+"   Trình đơn:        menu, menuhot, menusel, menuhotsel\n"
-+"   Trợ giúp:         helpnormal, helpitalic, helplink, helpslink\n"
-+"   Dạng tập tin:     directory, executable, link, stalelink, device, special, core\n"
-+"\n"
-+"Màu sắc:\n"
-+"   black, gray, red, brightred, green, brightgreen, brown,\n"
-+"   yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
-+"   brightcyan, lightgray, white\n"
-+"\n"
-+
-+#: src/main.c:1945
-+msgid "Displays this help message"
-+msgstr "Hiển thị thông báo trợ giúp này"
-+
-+#: src/main.c:1947
-+msgid "Displays the current version"
-+msgstr "Hiển thị số phiên bản hiện thời"
-+
-+#: src/main.c:1951
-+msgid "Forces xterm features"
-+msgstr "Bắt buộc dùng tính năng của xterm"
-+
-+#: src/main.c:1953
-+msgid "Disable mouse support in text version"
-+msgstr "Bỏ hỗ trợ chuột trong phiên bản văn bản (text)"
-+
-+#: src/main.c:1956
-+msgid "Tries to use termcap instead of terminfo"
-+msgstr "Thử sử dụng termcap thay cho terminfo"
-+
-+#: src/main.c:1959
-+msgid "Resets soft keys on HP terminals"
-+msgstr "Đặt lại phím phần mềm trên các terminal HP"
-+
-+#: src/main.c:1961
-+msgid "To run on slow terminals"
-+msgstr "Để chạy trên các terminal chậm"
-+
-+#: src/main.c:1963
-+msgid "Use stickchars to draw"
-+msgstr "Sử dụng ký tự thẳng đứng để vẽ"
-+
-+#: src/main.c:1967
-+msgid "Requests to run in black and white"
-+msgstr "Yêu cầu chạy trong chế độ đen trắng"
-+
-+#: src/main.c:1969
-+msgid "Request to run in color mode"
-+msgstr "Yêu cầu chạy trong chế độ màu"
-+
-+#: src/main.c:1971
-+msgid "Specifies a color configuration"
-+msgstr "Xác định cấu hình màu sắc"
-+
-+#: src/main.c:1973
-+msgid "Displays a help screen on how to change the color scheme"
-+msgstr "Hiển thị cửa sổ trợ giúp cách thay đổi bộ phối hợp màu"
-+
-+#: src/main.c:1978
-+msgid "Log ftp dialog to specified file"
-+msgstr "Ghi hội thoại FTP vào một tập tin"
-+
-+#: src/main.c:1981
-+msgid "Set debug level"
-+msgstr "Đặt mức độ tìm sửa lỗi (debug)"
-+
-+#: src/main.c:1987
-+msgid "Print data directory"
-+msgstr "In ra tên thư mục dữ liệu"
-+
-+#: src/main.c:1989
-+msgid "Print last working directory to specified file"
-+msgstr "Ghi thư mục làm việc cuối cùng vào tập tin chỉ ra"
-+
-+#: src/main.c:1994
-+msgid "Enables subshell support (default)"
-+msgstr "Bật hỗ trợ shell con (mặc định)"
-+
-+#: src/main.c:1996
-+msgid "Disables subshell support"
-+msgstr "Tắt hỗ trợ shell con"
-+
-+#: src/main.c:2001
-+msgid "Launches the file viewer on a file"
-+msgstr "Xem tập tin"
-+
-+#: src/main.c:2004
-+msgid "Edits one file"
-+msgstr "Soạn thảo tập tin"
-+
-+#: src/main.c:2218
-+msgid " Notice "
-+msgstr " Cảnh báo "
-+
-+#: src/main.c:2219
-+msgid ""
-+" The Midnight Commander configuration files \n"
-+" are now stored in the ~/.mc directory, the \n"
-+" files have been moved now\n"
-+msgstr ""
-+" Các tập tin cấu hình Midnight Commander \n"
-+" bây giờ đặt trong thư mục ~/.mc, các \n"
-+" tập tin cũ bây giờ được chuyển tới đó\n"
-+
-+#: src/option.c:56
-+msgid "safe de&Lete"
-+msgstr "Xóa một cách &An toàn"
-+
-+#: src/option.c:57
-+msgid "cd follows lin&Ks"
-+msgstr "cd th&Eo liên kết"
-+
-+#: src/option.c:58
-+msgid "L&ynx-like motion"
-+msgstr "di chuyển giống trong l&Ynx"
-+
-+#: src/option.c:59
-+msgid "rotatin&G dash"
-+msgstr "cái chỉ &Quay"
-+
-+#: src/option.c:60
-+msgid "co&Mplete: show all"
-+msgstr "tự động hoàn thành: hiện tất cả"
-+
-+#: src/option.c:61
-+msgid "&Use internal view"
-+msgstr "trình xem nội &Bộ"
-+
-+#: src/option.c:62
-+msgid "use internal ed&It"
-+msgstr "sử dụng s&Oạn thảo nội bộ"
-+
-+#: src/option.c:63
-+msgid "auto m&Enus"
-+msgstr "t&Rình đơn tự động"
-+
-+#: src/option.c:64
-+msgid "&Auto save setup"
-+msgstr "tự động gh&I nhớ cấu hình"
-+
-+#: src/option.c:65
-+msgid "shell &Patterns"
-+msgstr "&Mẫu dạng shell"
-+
-+#: src/option.c:66
-+msgid "Compute &Totals"
-+msgstr "tính tổn&G kích thước"
-+
-+#: src/option.c:67
-+msgid "&Verbose operation"
-+msgstr "thao tác với thông báo &Dài dòng"
-+
-+#: src/option.c:69
-+msgid "&Fast dir reload"
-+msgstr "nạ&P nhanh thư mục"
-+
-+#: src/option.c:70
-+msgid "mi&X all files"
-+msgstr "trộn lẫn tất &Cả tập tin"
-+
-+#: src/option.c:71
-+msgid "&Drop down menus"
-+msgstr "đẩy &Xuống trình đơn"
-+
-+#: src/option.c:72
-+msgid "ma&Rk moves down"
-+msgstr "&Nhãn di chuyển xuống"
-+
-+#: src/option.c:73
-+msgid "show &Hidden files"
-+msgstr "&Hiển thị tập tin ẩn"
-+
-+#: src/option.c:74
-+msgid "show &Backup files"
-+msgstr "hiển thị tập tin sao &Lưu"
-+
-+#: src/option.c:85
-+msgid "&Never"
-+msgstr "&Không bao giờ"
-+
-+#: src/option.c:86
-+msgid "on dumb &Terminals"
-+msgstr "&Trên terminal ngu"
-+
-+#: src/option.c:87
-+msgid "Alwa&ys"
-+msgstr "&Luôn luôn"
-+
-+#: src/option.c:123
-+msgid " Panel options "
-+msgstr " Cấu hình bảng "
-+
-+#: src/option.c:124
-+msgid " Pause after run... "
-+msgstr " Tạm ngừng sau khi chạy... "
-+
-+#: src/option.c:170
-+msgid "Configure options"
-+msgstr "Tùy chọn cấu hình"
-+
-+#: src/panelize.c:67
-+msgid "&Add new"
-+msgstr "&Thêm mới"
-+
-+#: src/panelize.c:154 src/panelize.c:420
-+msgid "External panelize"
-+msgstr "Bảng ngoài"
-+
-+#: src/panelize.c:169
-+msgid "Command"
-+msgstr "Câu lệnh"
-+
-+#: src/panelize.c:185 src/panelize.c:242 src/panelize.c:313 src/panelize.c:334
-+msgid "Other command"
-+msgstr "Lệnh khác"
-+
-+#: src/panelize.c:226
-+msgid " Add to external panelize "
-+msgstr " Thêm vào bảng ngoài "
-+
-+#: src/panelize.c:227
-+msgid " Enter command label: "
-+msgstr " Nhập tên câu lệnh: "
-+
-+#: src/panelize.c:267
-+msgid " Cannot run external panelize in a non-local directory "
-+msgstr " Không thể chạy câu lệnh này trên một thư mục không phải nội bộ "
-+
-+#: src/panelize.c:316
-+msgid "Find rejects after patching"
-+msgstr "Tìm những loại bỏ sau khi vá lỗi (patch)"
-+
-+#: src/panelize.c:317
-+msgid "Find *.orig after patching"
-+msgstr "Tìm *.orig) sau khi vá lỗi (patch)"
-+
-+#: src/panelize.c:318
-+msgid "Find SUID and SGID programs"
-+msgstr "Tìm chương trình có các bit SUID/SGID"
-+
-+#: src/panelize.c:369
-+msgid "Cannot invoke command."
-+msgstr "Không thực hiện được câu lệnh."
-+
-+#: src/panelize.c:420
-+msgid "Pipe close failed"
-+msgstr "Đóng đường ống không thành công"
-+
-+#: src/popt.c:547
-+msgid "missing argument"
-+msgstr "thiếu tham số"
-+
-+#: src/popt.c:549
-+msgid "unknown option"
-+msgstr "tùy chọn không rõ"
-+
-+#: src/popt.c:555
-+msgid "invalid numeric value"
-+msgstr "giá trị số không thích hợp"
-+
-+#: src/popthelp.c:31
-+msgid "Show this help message"
-+msgstr "Hiển thị thông báo trợ giúp này"
-+
-+#: src/popthelp.c:32
-+msgid "Display brief usage message"
-+msgstr "Hiển thị chỉ dẫn ngắn gọn"
-+
-+#: src/popthelp.c:60
-+msgid "ARG"
-+msgstr "ARG"
-+
-+#: src/popthelp.c:179
-+msgid "Usage:"
-+msgstr "Sử dụng:"
-+
-+#: src/screen.c:201
-+msgid "UP--DIR"
-+msgstr "LÊNTRÊN"
-+
-+#: src/screen.c:222
-+msgid "SYMLINK"
-+msgstr "LIÊNKẾTMỀM"
-+
-+#: src/screen.c:226
-+msgid "SUB-DIR"
-+msgstr "THƯMỤCCON"
-+
-+#: src/screen.c:406 src/screen.c:407
-+msgid "Size"
-+msgstr "Kích cỡ"
-+
-+#: src/screen.c:409
-+msgid "MTime"
-+msgstr "Thời gian sửa"
-+
-+#: src/screen.c:410
-+msgid "ATime"
-+msgstr "Truy cập cuối cùng"
-+
-+#: src/screen.c:411
-+msgid "CTime"
-+msgstr "Thời gian thay đổi"
-+
-+#: src/screen.c:412
-+msgid "Permission"
-+msgstr "Quyền hạn"
-+
-+#: src/screen.c:413
-+msgid "Perm"
-+msgstr "Quyền"
-+
-+#: src/screen.c:414
-+msgid "Nl"
-+msgstr "Nl"
-+
-+#: src/screen.c:415
-+msgid "Inode"
-+msgstr "Nút"
-+
-+#: src/screen.c:416
-+msgid "UID"
-+msgstr "UID"
-+
-+#: src/screen.c:417
-+msgid "GID"
-+msgstr "GID"
-+
-+#: src/screen.c:418
-+msgid "Owner"
-+msgstr "Chủ sở hữu"
-+
-+#: src/screen.c:419
-+msgid "Group"
-+msgstr "Nhóm"
-+
-+#: src/screen.c:655
-+#, c-format
-+msgid "%s bytes in %d file"
-+msgstr "%s byte trong %d tập tin"
-+
-+#: src/screen.c:655
-+#, c-format
-+msgid "%s bytes in %d files"
-+msgstr "%s byte trong %d tập tin"
-+
-+#: src/screen.c:681
-+msgid "<readlink failed>"
-+msgstr "<đọc liên kết không thành công>"
-+
-+#: src/screen.c:1289
-+msgid "Unknown tag on display format: "
-+msgstr "Thẻ ghi không rõ trong định dạng hiển thị: "
-+
-+#: src/screen.c:1415
-+msgid "User supplied format looks invalid, reverting to default."
-+msgstr "Định dạng người dùng đưa ra có vẻ không thích hợp, chuyển lại thành mặc định."
-+
-+#: src/screen.c:1952
-+msgid " Do you really want to execute? "
-+msgstr " Thực sự muốn thực hiện? "
-+
-+#: src/screen.c:2186
-+msgid "View"
-+msgstr "Xem   "
-+
-+#: src/screen.c:2187 src/view.c:2231
-+msgid "Edit"
-+msgstr "Soạn  "
-+
-+#: src/screen.c:2189 src/tree.c:977
-+msgid "RenMov"
-+msgstr "Chuyển"
-+
-+#: src/screen.c:2190 src/tree.c:981
-+msgid "Mkdir"
-+msgstr "Tạotm "
-+
-+#: src/selcodepage.c:54
-+msgid " Choose input codepage "
-+msgstr " Chọn bảng mã dữ liệu vào "
-+
-+#: src/selcodepage.c:58
-+msgid "-  < No translation >"
-+msgstr "-  < Không có dịch >"
-+
-+#: src/selcodepage.c:106
-+msgid ""
-+"To use this feature select your codepage in\n"
-+"Setup / Display Bits dialog!\n"
-+"Do not forget to save options."
-+msgstr ""
-+"Để sử dụng tính năng này, hãy chọn bảng mã trong\n"
-+"trình đơn Cấu hình / hộp thoại Bit hiển thị!\n"
-+"Đừng quên ghi nhớ lại cấu hình."
-+
-+#: src/slint.c:188
-+#, c-format
-+msgid ""
-+"Screen size %dx%d is not supported.\n"
-+"Check the TERM environment variable.\n"
-+msgstr ""
-+"Kích thước màn hình %dx%d không được hỗ trợ.\n"
-+"Hãy kiểm tra biến môi trường TERM.\n"
-+
-+#: src/subshell.c:320
-+msgid ""
-+"GNU Midnight Commander is already\n"
-+"running on this terminal.\n"
-+"Subshell support will be disabled."
-+msgstr ""
-+"Một GNU Midnight Commander đã làm việc\n"
-+"trên terminal này. Sẽ không có hỗ trợ\n"
-+"shell con."
-+
-+#: src/subshell.c:425
-+#, c-format
-+msgid "Cannot open named pipe %s\n"
-+msgstr "Không mở được đường ống tên (named pipe) %s\n"
-+
-+#: src/subshell.c:653
-+msgid " The shell is still active. Quit anyway? "
-+msgstr " Shell vẫn còn hoạt động. Vẫn thoát? "
-+
-+#: src/subshell.c:790
-+#, c-format
-+msgid "Warning: Cannot change to %s.\n"
-+msgstr "Cảnh báo: Không chuyển được vào %s.\n"
-+
-+#: src/textconf.c:50
-+msgid "With builtin Editor\n"
-+msgstr "Với Trình soạn thảo nội trú\n"
-+
-+#: src/textconf.c:56
-+msgid "Using system-installed S-Lang library"
-+msgstr "Sử dụng thư việc của S-Lang hệ thống"
-+
-+#: src/textconf.c:58
-+msgid "Using included S-Lang library"
-+msgstr "Sử dụng thư việc S-Lang bao gồm"
-+
-+#: src/textconf.c:64
-+msgid "with termcap database"
-+msgstr "với cơ sở dữ liệu termcap"
-+
-+#: src/textconf.c:66
-+msgid "with terminfo database"
-+msgstr "với cơ sở dữ liệu terminfo"
-+
-+#: src/textconf.c:70
-+msgid "Using the ncurses library"
-+msgstr "Dùng thư viện ncurses"
-+
-+#: src/textconf.c:79
-+msgid "With optional subshell support"
-+msgstr "Với hỗ trợ shell con không bắt buộc"
-+
-+#: src/textconf.c:81
-+msgid "With subshell support as default"
-+msgstr "Với hỗ trợ shell con mặc định"
-+
-+#: src/textconf.c:87
-+msgid "With support for background operations\n"
-+msgstr "Với hỗ trợ thao tác nền sau\n"
-+
-+#: src/textconf.c:91
-+msgid "With mouse support on xterm and Linux console\n"
-+msgstr "Với hỗ trợ chuột trong xterm và kênh giao tác Linux\n"
-+
-+#: src/textconf.c:93
-+msgid "With mouse support on xterm\n"
-+msgstr "Với hỗ trợ chuột trong xterm\n"
-+
-+#: src/textconf.c:97
-+msgid "With support for X11 events\n"
-+msgstr "Với hỗ trợ sự kiện X11\n"
-+
-+#: src/textconf.c:101
-+msgid "With internationalization support\n"
-+msgstr "Với hỗ trợ các ngôn ngữ khác\n"
-+
-+#: src/textconf.c:105
-+msgid "With multiple codepages support\n"
-+msgstr "Với hỗ trợ nhiều bảng mã\n"
-+
-+#: src/textconf.c:121
-+msgid "Virtual File System:"
-+msgstr "Hệ thống tập tin ảo:"
-+
-+#: src/tree.c:147
-+#, c-format
-+msgid ""
-+"Cannot open the %s file for writing:\n"
-+"%s\n"
-+msgstr ""
-+"Không mở được tập tin %s để ghi nhớ:\n"
-+"%s\n"
-+
-+#: src/tree.c:591
-+#, c-format
-+msgid "Copy \"%s\" directory to:"
-+msgstr " Sao chép thư mục \"%s\" vào:"
-+
-+#: src/tree.c:632
-+#, c-format
-+msgid "Move \"%s\" directory to:"
-+msgstr " Di chuyển thư mục \"%s\" vào:"
-+
-+#: src/tree.c:642
-+#, c-format
-+msgid ""
-+" Cannot stat the destination \n"
-+" %s "
-+msgstr ""
-+" Không lấy (stat) được thuộc tính của đích đến \n"
-+" %s "
-+
-+#: src/tree.c:705
-+#, c-format
-+msgid "  Delete %s?  "
-+msgstr "  Xóa %s?  "
-+
-+#: src/tree.c:735
-+msgid "Static"
-+msgstr "Tĩnh"
-+
-+#: src/tree.c:735
-+msgid "Dynamc"
-+msgstr "Động"
-+
-+#: src/tree.c:971
-+msgid "Rescan"
-+msgstr "Quét lại"
-+
-+#: src/tree.c:973
-+msgid "Forget"
-+msgstr "Quên"
-+
-+#: src/tree.c:986
-+msgid "Rmdir"
-+msgstr "Xóa thư mục"
-+
-+#: src/treestore.c:343
-+#, c-format
-+msgid ""
-+"Cannot write to the %s file:\n"
-+"%s\n"
-+msgstr ""
-+"Không ghi nhớ được vào tập tin %s:\n"
-+"%s\n"
-+
-+#: src/user.c:133
-+msgid " Format error on file Extensions File "
-+msgstr " Lỗi định dạng tập tin \"Phần mở rộng của tập tin\" "
-+
-+#: src/user.c:134
-+#, c-format
-+msgid " The %%var macro has no default "
-+msgstr " Macro %%var không có giá trị mặc định "
-+
-+#: src/user.c:135
-+#, c-format
-+msgid " The %%var macro has no variable "
-+msgstr " Macro %%var không có giá trị biến "
-+
-+#: src/user.c:447
-+msgid " Debug "
-+msgstr " Sửa lỗi "
-+
-+#: src/user.c:456
-+msgid " ERROR: "
-+msgstr " LỖI: "
-+
-+#: src/user.c:460
-+msgid " True:  "
-+msgstr " Đúng: "
-+
-+#: src/user.c:462
-+msgid " False: "
-+msgstr " Sai: "
-+
-+#: src/user.c:669
-+msgid " Warning -- ignoring file "
-+msgstr " Cảnh báo - tập tin bị lờ đi "
-+
-+#: src/user.c:670
-+#, c-format
-+msgid ""
-+"File %s is not owned by root or you or is world writable.\n"
-+"Using it may compromise your security"
-+msgstr ""
-+"Tập tin %s không thuộc quyền sở hữu của root, hay của bạn,\n"
-+"hoặc ai cũng có thể ghi. Sử dụng tập tin này có thể không an toàn"
-+
-+#: src/user.c:792
-+#, c-format
-+msgid " No suitable entries found in %s "
-+msgstr " Không tìm thấy mục thích hợp trong %s"
-+
-+#: src/user.c:798
-+msgid " User menu "
-+msgstr " Trình đơn người dùng "
-+
-+#: src/util.c:671 src/util.c:697
-+msgid "%b %e %H:%M"
-+msgstr "%b %e %H:%M"
-+
-+#: src/util.c:672 src/util.c:695
-+msgid "%b %e  %Y"
-+msgstr "%b %e  %Y"
-+
-+#: src/utilunix.c:333
-+#, c-format
-+msgid "%s is not a directory\n"
-+msgstr "%s không phải là một thư mục\n"
-+
-+#: src/utilunix.c:335
-+#, c-format
-+msgid "Directory %s is not owned by you\n"
-+msgstr "Bạn không sở hữu thư mục %s\n"
-+
-+#: src/utilunix.c:338
-+#, c-format
-+msgid "Cannot set correct permissions for directory %s\n"
-+msgstr "Không đặt được quyền hạn đúng cho thư mục %s\n"
-+
-+#: src/utilunix.c:343
-+#, c-format
-+msgid "Cannot create temporary directory %s: %s\n"
-+msgstr "Không tạo được thư mục tạm thời %s: %s\n"
-+
-+#: src/utilunix.c:373
-+#, c-format
-+msgid "Temporary files will be created in %s\n"
-+msgstr "Tập tin tạm thời sẽ được tạo trong thư mục %s\n"
-+
-+#: src/utilunix.c:376
-+msgid "Temporary files will not be created\n"
-+msgstr "Tập tin tạm thời sẽ không được tạo ra\n"
-+
-+#: src/utilunix.c:401
-+msgid " Pipe failed "
-+msgstr " Lỗi đường ống "
-+
-+#: src/utilunix.c:405
-+msgid " Dup failed "
-+msgstr " Lỗi lặp lại "
-+
-+#: src/view.c:502
-+msgid " Cannot spawn child program "
-+msgstr " Không sinh ra được tiến trình con "
-+
-+#: src/view.c:513
-+msgid "Empty output from child filter"
-+msgstr "Bộ lọc con trả lại kết quả rỗng"
-+
-+#: src/view.c:519
-+msgid " Cannot open file "
-+msgstr " Không mở được tập tin "
-+
-+#: src/view.c:618
-+#, c-format
-+msgid ""
-+" Cannot open \"%s\"\n"
-+" %s "
-+msgstr ""
-+" Không mở được \"%s\"\n"
-+" %s "
-+
-+#: src/view.c:627
-+#, c-format
-+msgid ""
-+" Cannot stat \"%s\"\n"
-+" %s "
-+msgstr ""
-+" Không lấy (stat) được thuộc tính \"%s\"\n"
-+" %s "
-+
-+#: src/view.c:636
-+msgid " Cannot view: not a regular file "
-+msgstr " Không xem được vì lý do: không\n"
-+" phải tập tin thông thường "
-+
-+#: src/view.c:775
-+#, c-format
-+msgid "File: %s"
-+msgstr "Tập tin: %s"
-+
-+#: src/view.c:790
-+#, c-format
-+msgid "Offset 0x%08lx"
-+msgstr "Bộ offset 0x%08lx"
-+
-+#: src/view.c:792
-+#, c-format
-+msgid "Col %d"
-+msgstr "Cột %d"
-+
-+#: src/view.c:796
-+#, c-format
-+msgid "%s bytes"
-+msgstr "%s byte"
-+
-+#: src/view.c:801
-+msgid "  [grow]"
-+msgstr "  [lớn lên]"
-+
-+#: src/view.c:1826
-+msgid "Invalid hex search expression"
-+msgstr "Biểu thức tìm kiếm hex không đúng"
-+
-+#: src/view.c:1880
-+msgid " Invalid regular expression "
-+msgstr " Biểu thức chính quy không đúng"
-+
-+#: src/view.c:2003
-+#, c-format
-+msgid ""
-+" The current line number is %d.\n"
-+" Enter the new line number:"
-+msgstr ""
-+" Số thứ tự dòng hiện thời %d.\n"
-+" Hãy nhập số thứ tự dòng muốn chuyển đến:"
-+
-+#: src/view.c:2026
-+#, c-format
-+msgid ""
-+" The current address is 0x%lx.\n"
-+" Enter the new address:"
-+msgstr ""
-+" Địa chỉ hiện thời - 0x%lx.\n"
-+" Hãy nhập địa chỉ mới:"
-+
-+#: src/view.c:2028
-+msgid " Goto Address "
-+msgstr " Đi tới địa chỉ "
-+
-+#: src/view.c:2060
-+msgid " Enter regexp:"
-+msgstr " Nhập biểu thức chính quy:"
-+
-+#: src/view.c:2216
-+msgid "Ascii"
-+msgstr "Ascii"
-+
-+#: src/view.c:2216
-+msgid "Hex"
-+msgstr "Hex"
-+
-+#: src/view.c:2218
-+msgid "Goto"
-+msgstr "ĐiTới"
-+
-+#: src/view.c:2218
-+msgid "Line"
-+msgstr "Dòng"
-+
-+#: src/view.c:2220
-+msgid "RxSrch"
-+msgstr "TìmRx"
-+
-+#: src/view.c:2225
-+msgid "EdHex"
-+msgstr "SoạnHex"
-+
-+#: src/view.c:2225
-+msgid "EdText"
-+msgstr "SoạnVb"
-+
-+#: src/view.c:2233
-+msgid "UnWrap"
-+msgstr "BỏWrap"
-+
-+#: src/view.c:2233
-+msgid "Wrap"
-+msgstr "CóWrap"
-+
-+#: src/view.c:2236
-+msgid "HxSrch"
-+msgstr "TìmHx"
-+
-+#: src/view.c:2239
-+msgid "Raw"
-+msgstr "Thô"
-+
-+#: src/view.c:2239
-+msgid "Parse"
-+msgstr "Phtích"
-+
-+#: src/view.c:2244
-+msgid "Unform"
-+msgstr "K0dạng"
-+
-+#: src/view.c:2244
-+msgid "Format"
-+msgstr "CóDạng"
-+
-+#: src/widget.c:911
-+msgid " History "
-+msgstr " Lịch sử"
-+
-+#: src/win.c:159
-+msgid "Function key 1"
-+msgstr "Phím chức năng 1"
-+
-+#: src/win.c:160
-+msgid "Function key 2"
-+msgstr "Phím chức năng 2"
-+
-+#: src/win.c:161
-+msgid "Function key 3"
-+msgstr "Phím chức năng 3"
-+
-+#: src/win.c:162
-+msgid "Function key 4"
-+msgstr "Phím chức năng 4"
-+
-+#: src/win.c:163
-+msgid "Function key 5"
-+msgstr "Phím chức năng 5"
-+
-+#: src/win.c:164
-+msgid "Function key 6"
-+msgstr "Phím chức năng 6"
-+
-+#: src/win.c:165
-+msgid "Function key 7"
-+msgstr "Phím chức năng 7"
-+
-+#: src/win.c:166
-+msgid "Function key 8"
-+msgstr "Phím chức năng 8"
-+
-+#: src/win.c:167
-+msgid "Function key 9"
-+msgstr "Phím chức năng 9"
-+
-+#: src/win.c:168
-+msgid "Function key 10"
-+msgstr "Phím chức năng 10"
-+
-+#: src/win.c:169
-+msgid "Function key 11"
-+msgstr "Phím chức năng 11"
-+
-+#: src/win.c:170
-+msgid "Function key 12"
-+msgstr "Phím chức năng 12"
-+
-+#: src/win.c:171
-+msgid "Function key 13"
-+msgstr "Phím chức năng 13"
-+
-+#: src/win.c:172
-+msgid "Function key 14"
-+msgstr "Phím chức năng 14"
-+
-+#: src/win.c:173
-+msgid "Function key 15"
-+msgstr "Phím chức năng 15"
-+
-+#: src/win.c:174
-+msgid "Function key 16"
-+msgstr "Phím chức năng 16"
-+
-+#: src/win.c:175
-+msgid "Function key 17"
-+msgstr "Phím chức năng 17"
-+
-+#: src/win.c:176
-+msgid "Function key 18"
-+msgstr "Phím chức năng 18"
-+
-+#: src/win.c:177
-+msgid "Function key 19"
-+msgstr "Phím chức năng 19"
-+
-+#: src/win.c:178
-+msgid "Function key 20"
-+msgstr "Phím chức năng 20"
-+
-+#: src/win.c:179
-+msgid "Backspace key"
-+msgstr "Phím Backspace"
-+
-+#: src/win.c:180
-+msgid "End key"
-+msgstr "Phím End"
-+
-+#: src/win.c:181
-+msgid "Up arrow key"
-+msgstr "Phím mũi tên lên"
-+
-+#: src/win.c:182
-+msgid "Down arrow key"
-+msgstr "Phím mũi tên xuống"
-+
-+#: src/win.c:183
-+msgid "Left arrow key"
-+msgstr "Phím mũi tên sang trái"
-+
-+#: src/win.c:184
-+msgid "Right arrow key"
-+msgstr "Phím mũi tên sang phải"
-+
-+#: src/win.c:185
-+msgid "Home key"
-+msgstr "Phím Home"
-+
-+#: src/win.c:186
-+msgid "Page Down key"
-+msgstr "Phím Page Down"
-+
-+#: src/win.c:187
-+msgid "Page Up key"
-+msgstr "Phím Page Up"
-+
-+#: src/win.c:188
-+msgid "Insert key"
-+msgstr "Phím Insert"
-+
-+#: src/win.c:189
-+msgid "Delete key"
-+msgstr "Phím Delete"
-+
-+#: src/win.c:190
-+msgid "Completion/M-tab"
-+msgstr "Hoàn thành/M-Tab"
-+
-+#: src/win.c:191
-+msgid "+ on keypad"
-+msgstr "+ trên phần keypad"
-+
-+#: src/win.c:192
-+msgid "- on keypad"
-+msgstr "- trên phần keypad"
-+
-+#: src/win.c:193
-+msgid "* on keypad"
-+msgstr "* trên phần keypad"
-+
-+#: src/win.c:195
-+msgid "Left arrow keypad"
-+msgstr "Mũi tên sang trái trên phần keypad"
-+
-+#: src/win.c:196
-+msgid "Right arrow keypad"
-+msgstr "Mũi tên sang phải trên phần keypad"
-+
-+#: src/win.c:197
-+msgid "Up arrow keypad"
-+msgstr "Mũi tên lên trên của phần keypad"
-+
-+#: src/win.c:198
-+msgid "Down arrow keypad"
-+msgstr "Mũi tên xuống dưới của phần keypad"
-+
-+#: src/win.c:199
-+msgid "Home on keypad"
-+msgstr "Home trên keypad"
-+
-+#: src/win.c:200
-+msgid "End on keypad"
-+msgstr "End trên keypad"
-+
-+#: src/win.c:201
-+msgid "Page Down keypad"
-+msgstr "Page Down trên keypad"
-+
-+#: src/win.c:202
-+msgid "Page Up keypad"
-+msgstr "Page Up trên keypad"
-+
-+#: src/win.c:203
-+msgid "Insert on keypad"
-+msgstr "Insert trên keypad"
-+
-+#: src/win.c:204
-+msgid "Delete on keypad"
-+msgstr "Delete trên keypad"
-+
-+#: src/win.c:205
-+msgid "Enter on keypad"
-+msgstr "Enter trên keypad"
-+
-+#: src/win.c:206
-+msgid "Slash on keypad"
-+msgstr "Slash trên keypad"
-+
-+#: src/win.c:207
-+msgid "NumLock on keypad"
-+msgstr "NumLock trên keypad"
-+
-+#: src/wtools.c:256
-+msgid "Background process:"
-+msgstr "Tiến trình nền sau:"
-+
-+#: vfs/cpio.c:142 vfs/cpio.c:158
-+#, c-format
-+msgid ""
-+"Cannot open cpio archive\n"
-+"%s"
-+msgstr ""
-+"Không mở được tập tin nén cpio\n"
-+"%s"
-+
-+#: vfs/cpio.c:223
-+#, c-format
-+msgid ""
-+"Premature end of cpio archive\n"
-+"%s"
-+msgstr ""
-+"Phần cuối của tập tin nén cpio bị hỏng\n"
-+"%s"
-+
-+#: vfs/cpio.c:309 vfs/cpio.c:359
-+#, c-format
-+msgid ""
-+"Corrupted cpio header encountered in\n"
-+"%s"
-+msgstr ""
-+"Lỗi phần đầu cpio phát hiện trong\n"
-+"%s"
-+
-+#: vfs/cpio.c:432
-+#, c-format
-+msgid ""
-+"Inconsistent hardlinks of\n"
-+"%s\n"
-+"in cpio archive\n"
-+"%s"
-+msgstr ""
-+"Liên kết cứng không thích hợp \n"
-+"%s\n"
-+"trong tập tin nén cpio\n"
-+"%s"
-+
-+#: vfs/cpio.c:457
-+#, c-format
-+msgid "%s contains duplicate entries! Skipping!"
-+msgstr "%s chứa mục lặp lại! Nhảy qua!"
-+
-+#: vfs/cpio.c:526
-+#, c-format
-+msgid ""
-+"Unexpected end of file\n"
-+"%s"
-+msgstr ""
-+"Kết thúc tập tin không mong đợi\n"
-+"%s"
-+
-+#: vfs/direntry.c:326
-+#, c-format
-+msgid "Directory cache expired for %s"
-+msgstr "Cache thư mục hết hạn cho %s"
-+
-+#: vfs/direntry.c:749
-+msgid "Starting linear transfer..."
-+msgstr "Chạy truyền tải theo đường thẳng..."
-+
-+#: vfs/direntry.c:886
-+#, c-format
-+msgid "%s: %s: %s %3d%% (%lu bytes transferred)"
-+msgstr "%s: %s: %s %3d%% (đã truyền tải %lu byte)"
-+
-+#: vfs/direntry.c:887
-+#, c-format
-+msgid "%s: %s: %s %lu bytes transferred"
-+msgstr "%s: %s: %s đã truyền tải %lu byte"
-+
-+#: vfs/direntry.c:933
-+msgid "Getting file"
-+msgstr "Nhận tập tin"
-+
-+#: vfs/extfs.c:303
-+#, c-format
-+msgid ""
-+"Cannot open %s archive\n"
-+"%s"
-+msgstr ""
-+"Không mở được tập tin nén %s\n"
-+"%s"
-+
-+#: vfs/extfs.c:343 vfs/extfs.c:365 vfs/extfs.c:415
-+msgid "Inconsistent extfs archive"
-+msgstr "Tập tin nén extfs không thích hợp"
-+
-+#: vfs/fish.c:157
-+#, c-format
-+msgid "fish: Disconnecting from %s"
-+msgstr "fish: Ngừng kết nối từ %s"
-+
-+#: vfs/fish.c:232
-+msgid "fish: Waiting for initial line..."
-+msgstr "fish: Đang chời dòng đầu tiên..."
-+
-+#: vfs/fish.c:244
-+msgid "Sorry, we cannot do password authenticated connections for now."
-+msgstr "Xin lỗi, bây giờ không thể tạo kết nối xác thực theo mật khẩu."
-+
-+#: vfs/fish.c:249
-+msgid " fish: Password required for "
-+msgstr "fish: yêu cầu mật khẩu cho "
-+
-+#: vfs/fish.c:258
-+msgid "fish: Sending password..."
-+msgstr "fish: Đang gửi mật khẩu..."
-+
-+#: vfs/fish.c:264
-+msgid "fish: Sending initial line..."
-+msgstr "fish: Đang gửi dòng đầu tiên..."
-+
-+#: vfs/fish.c:275
-+msgid "fish: Handshaking version..."
-+msgstr "fish: Đang xác nhận phiên bản..."
-+
-+#: vfs/fish.c:289
-+msgid "fish: Setting up current directory..."
-+msgstr "fish: Đang đặt thư mục hiện thời..."
-+
-+#: vfs/fish.c:291
-+#, c-format
-+msgid "fish: Connected, home %s."
-+msgstr "fish: Kết nối thành công, thư mục cá nhân %s."
-+
-+#: vfs/fish.c:375
-+#, c-format
-+msgid "fish: Reading directory %s..."
-+msgstr "fish: Đọc thư mục %s..."
-+
-+#: vfs/fish.c:477 vfs/ftpfs.c:1277 vfs/undelfs.c:343
-+#, c-format
-+msgid "%s: done."
-+msgstr "%s: xong."
-+
-+#: vfs/fish.c:482 vfs/ftpfs.c:1247 vfs/undelfs.c:346
-+#, c-format
-+msgid "%s: failure"
-+msgstr "%s: lỗi"
-+
-+#: vfs/fish.c:507
-+#, c-format
-+msgid "fish: store %s: sending command..."
-+msgstr "fish: bản ghi %s: đang gửi câu lệnh..."
-+
-+#: vfs/fish.c:548
-+msgid "fish: Local read failed, sending zeros"
-+msgstr "fish: Lỗi đọc nội bộ, đang gửi các số không"
-+
-+#: vfs/fish.c:560
-+#, c-format
-+msgid "fish: storing %s %d (%lu)"
-+msgstr "fish: ghi %s %d (%lu)"
-+
-+#: vfs/fish.c:561
-+msgid "zeros"
-+msgstr "các số không"
-+
-+#: vfs/fish.c:613
-+msgid "Aborting transfer..."
-+msgstr "Dừng truyền tải..."
-+
-+#: vfs/fish.c:622
-+msgid "Error reported after abort."
-+msgstr "Có lỗi báo cáo sau khi dừng."
-+
-+#: vfs/fish.c:624
-+msgid "Aborted transfer would be successful."
-+msgstr "Dừng truyền tải thành công."
-+
-+#: vfs/ftpfs.c:378
-+#, c-format
-+msgid "ftpfs: Disconnecting from %s"
-+msgstr "ftpfs: Ngắt kết nối từ %s"
-+
-+#: vfs/ftpfs.c:433
-+msgid " FTP: Password required for "
-+msgstr " FTP: Cần mật khẩu cho "
-+
-+#: vfs/ftpfs.c:469
-+msgid "ftpfs: sending login name"
-+msgstr "ftpfs: đang gửi tên đăng nhập"
-+
-+#: vfs/ftpfs.c:473
-+msgid "ftpfs: sending user password"
-+msgstr "ftpfs: đang gửi mật khẩu người dùng"
-+
-+#: vfs/ftpfs.c:479
-+#, c-format
-+msgid "FTP: Account required for user %s"
-+msgstr "FTP: Yêu cầu tài khoản cho người dùng %s"
-+
-+#: vfs/ftpfs.c:481
-+msgid "Account:"
-+msgstr "Tài khoản:"
-+
-+#: vfs/ftpfs.c:485
-+msgid "ftpfs: sending user account"
-+msgstr "ftpfs: đang gửi tài khoản người dùng"
-+
-+#: vfs/ftpfs.c:495
-+msgid "ftpfs: logged in"
-+msgstr "ftpfs: đã đăng nhập"
-+
-+#: vfs/ftpfs.c:509
-+#, c-format
-+msgid "ftpfs: Login incorrect for user %s "
-+msgstr "ftpfs: lỗi đăng nhập cho người dùng %s "
-+
-+#: vfs/ftpfs.c:633
-+msgid "ftpfs: Invalid host name."
-+msgstr "ftpfs: Tên máy không đúng."
-+
-+#: vfs/ftpfs.c:651
-+msgid "ftpfs: Invalid host address."
-+msgstr "ftpfs: Địa chỉ không đúng."
-+
-+#: vfs/ftpfs.c:673
-+#, c-format
-+msgid "ftpfs: making connection to %s"
-+msgstr "ftpfs: Thực hiện kết nối với %s"
-+
-+#: vfs/ftpfs.c:683
-+msgid "ftpfs: connection interrupted by user"
-+msgstr "ftpfs: người dùng dừng kết nối giữa chừng"
-+
-+#: vfs/ftpfs.c:685
-+#, c-format
-+msgid "ftpfs: connection to server failed: %s"
-+msgstr "ftpfs: kết nối tới máy chủ không thành công: %s"
-+
-+#: vfs/ftpfs.c:726
-+#, c-format
-+msgid "Waiting to retry... %d (Control-C to cancel)"
-+msgstr "Chờ thử lại... %d (Control-C để hủy bỏ)"
-+
-+#: vfs/ftpfs.c:906
-+msgid "ftpfs: could not setup passive mode"
-+msgstr "ftpfs: không đặt được chế độ bị động (passive)"
-+
-+#: vfs/ftpfs.c:985
-+msgid "ftpfs: aborting transfer."
-+msgstr "ftpfs: dừng truyền tải."
-+
-+#: vfs/ftpfs.c:987
-+#, c-format
-+msgid "ftpfs: abort error: %s"
-+msgstr "ftpfs: lỗi thoát: %s"
-+
-+#: vfs/ftpfs.c:995
-+msgid "ftpfs: abort failed"
-+msgstr "ftpfs: sự cố thoát"
-+
-+#: vfs/ftpfs.c:1099 vfs/ftpfs.c:1203
-+msgid "ftpfs: CWD failed."
-+msgstr "ftpfs: CWD (thay đổi thư mục) không thành công."
-+
-+#: vfs/ftpfs.c:1109 vfs/ftpfs.c:1116
-+msgid "ftpfs: couldn't resolve symlink"
-+msgstr "ftpfs: không tìm được liên kết mềm"
-+
-+#: vfs/ftpfs.c:1167
-+msgid "Resolving symlink..."
-+msgstr "Đang tìm liên kết mềm..."
-+
-+#: vfs/ftpfs.c:1189
-+#, c-format
-+msgid "ftpfs: Reading FTP directory %s... %s%s"
-+msgstr "ftpfs: Đọc thư mục FTP %s... %s%s"
-+
-+#: vfs/ftpfs.c:1192
-+msgid "(strict rfc959)"
-+msgstr "(hạn chế rfc959)"
-+
-+#: vfs/ftpfs.c:1193
-+msgid "(chdir first)"
-+msgstr "(đầu tiên chdir)"
-+
-+#: vfs/ftpfs.c:1290
-+msgid "ftpfs: failed; nowhere to fallback to"
-+msgstr "ftpfs: lỗi; không có nơi nào để quay lại về"
-+
-+#: vfs/ftpfs.c:1355
-+#, c-format
-+msgid "ftpfs: storing file %lu (%lu)"
-+msgstr "ftpfs: ghi tập tin %lu (%lu)"
-+
-+#: vfs/ftpfs.c:1740
-+msgid ""
-+"~/.netrc file has incorrect mode.\n"
-+"Remove password or correct mode."
-+msgstr ""
-+"Tập tin ~/.netrc có chế độ truy cập/sở hữu không đúng.\n"
-+"Hãy xóa mật khẩu hoặc sửa lại chế độ cho đúng."
-+
-+#: vfs/mcfs.c:122 vfs/mcfs.c:167
-+msgid " MCFS "
-+msgstr " MCFS "
-+
-+#: vfs/mcfs.c:123
-+msgid " The server does not support this version "
-+msgstr " Máy chủ không hỗ trợ phiên bản này "
-+
-+#: vfs/mcfs.c:140
-+msgid ""
-+" The remote server is not running on a system port \n"
-+" you need a password to log in, but the information may \n"
-+" not be safe on the remote side.  Continue? \n"
-+msgstr ""
-+" Máy chủ ở xa không chạy trên một cổng hệ thống. Cần \n"
-+" mật khẩu để đăng nhập vào, nhưng điều này có thể \n"
-+" không an toàn cho thông tin phía ở xa. Tiếp tục?\n"
-+
-+#: vfs/mcfs.c:153
-+msgid " MCFS Password required "
-+msgstr " Yêu cầu mật khẩu MCFS "
-+
-+#: vfs/mcfs.c:167
-+msgid " Invalid password "
-+msgstr " Mật khẩu không đúng "
-+
-+#: vfs/mcfs.c:227
-+#, c-format
-+msgid " Cannot locate hostname: %s "
-+msgstr " Không xác định được tên máy ở xa: %s"
-+
-+#: vfs/mcfs.c:246
-+#, c-format
-+msgid " Cannot create socket: %s "
-+msgstr " Không tạo được socket: %s "
-+
-+#: vfs/mcfs.c:252
-+#, c-format
-+msgid " Cannot connect to server: %s "
-+msgstr " Không kết nối được tới máy chủ: %s "
-+
-+#: vfs/mcfs.c:322
-+msgid " Too many open connections "
-+msgstr " Quá nhiều kết nối mở "
-+
-+#: vfs/sfs.c:346
-+#, c-format
-+msgid ""
-+"Warning: Invalid line in %s:\n"
-+"%s\n"
-+msgstr ""
-+"Cảnh báo: dòng không đúng trong %s:\n"
-+"%s\n"
-+
-+#: vfs/sfs.c:358
-+#, c-format
-+msgid ""
-+"Warning: Invalid flag %c in %s:\n"
-+"%s\n"
-+msgstr ""
-+"Cảnh báo: Cờ không đúng %c trong %s:\n"
-+"%s\n"
-+
-+#: vfs/smbfs.c:576
-+#, c-format
-+msgid ""
-+" smbfs_reconnect to %s failed\n"
-+" "
-+msgstr ""
-+" smbfs_reconnect (kết nối lại) tới %s không thành công\n"
-+" "
-+
-+#: vfs/smbfs.c:1120
-+msgid " Authentication failed "
-+msgstr " Xác thực không thành công "
-+
-+#: vfs/smbfs.c:1632
-+#, c-format
-+msgid " Error %s creating directory %s "
-+msgstr " Lỗi %s khi tạo thư mục %s "
-+
-+#: vfs/smbfs.c:1655
-+#, c-format
-+msgid " Error %s removing directory %s "
-+msgstr " Lỗi %s khi xóa thư mục %s "
-+
-+#: vfs/smbfs.c:1744
-+#, c-format
-+msgid " %s opening remote file %s "
-+msgstr " %s khi mở tập tin ở xa %s "
-+
-+#: vfs/smbfs.c:1817
-+#, c-format
-+msgid " %s removing remote file %s "
-+msgstr " %s khi xoá tập tin ở xa %s "
-+
-+#: vfs/smbfs.c:1855
-+#, c-format
-+msgid " %s renaming files\n"
-+msgstr " %s khi đổi tên các tập tin\n"
-+
-+#: vfs/tar.c:212 vfs/tar.c:229
-+#, c-format
-+msgid ""
-+"Cannot open tar archive\n"
-+"%s"
-+msgstr ""
-+"Không mở được tập tin nén tar\n"
-+"%s"
-+
-+#: vfs/tar.c:424
-+msgid "Unexpected EOF on archive file"
-+msgstr "Kết thúc tập tin EOF nén không mong đợi"
-+
-+#: vfs/tar.c:476 vfs/tar.c:483
-+msgid "Inconsistent tar archive"
-+msgstr "Tập tin tar không thích hợp"
-+
-+#: vfs/tar.c:561
-+#, c-format
-+msgid ""
-+"Hmm,...\n"
-+"%s\n"
-+"doesn't look like a tar archive."
-+msgstr ""
-+"Hừm,...\n"
-+"%s\n"
-+"không giống tập tin tar."
-+
-+#: vfs/undelfs.c:82
-+msgid " undelfs: error "
-+msgstr " undelfs: lỗi "
-+
-+#: vfs/undelfs.c:189
-+msgid " not enough memory "
-+msgstr " không đủ bộ nhớ "
-+
-+#: vfs/undelfs.c:194
-+msgid " while allocating block buffer "
-+msgstr " khi phân phối bộ đệm khối "
-+
-+#: vfs/undelfs.c:198
-+#, c-format
-+msgid " open_inode_scan: %d "
-+msgstr " open_inode_scan: %d "
-+
-+#: vfs/undelfs.c:202
-+#, c-format
-+msgid " while starting inode scan %d "
-+msgstr " khi bắt đầu quét chỉ mục nút inode %d "
-+
-+#: vfs/undelfs.c:211
-+#, c-format
-+msgid "undelfs: loading deleted files information %d inodes"
-+msgstr "undelfs: nạp thông tin về những tập tin bị xóa %d inode"
-+
-+#: vfs/undelfs.c:229
-+#, c-format
-+msgid " while calling ext2_block_iterate %d "
-+msgstr " khi gọi ext2_block_iterate %d "
-+
-+#: vfs/undelfs.c:241
-+msgid " no more memory while reallocating array "
-+msgstr " không đủ bộ nhớ khi phân phối lại chuỗi "
-+
-+#: vfs/undelfs.c:262
-+#, c-format
-+msgid " while doing inode scan %d "
-+msgstr " khi quét chỉ mục nút inode %d "
-+
-+#: vfs/undelfs.c:297
-+msgid " Ext2lib error "
-+msgstr " Lỗi Ext2lib "
-+
-+#: vfs/undelfs.c:325 vfs/undelfs.c:644
-+#, c-format
-+msgid " Cannot open file %s "
-+msgstr " Không mở được tập tin %s "
-+
-+#: vfs/undelfs.c:328
-+msgid "undelfs: reading inode bitmap..."
-+msgstr "undelfs: đọc sơ đồ bit của nút inode..."
-+
-+#: vfs/undelfs.c:331
-+#, c-format
-+msgid ""
-+" Cannot load inode bitmap from: \n"
-+" %s \n"
-+msgstr ""
-+" Không nạp được sơ đồ bit của nút inode từ:\n"
-+" %s \n"
-+
-+#: vfs/undelfs.c:334
-+msgid "undelfs: reading block bitmap..."
-+msgstr "undelfs: đọc sơ đồ bit của khối..."
-+
-+#: vfs/undelfs.c:337
-+#, c-format
-+msgid ""
-+" Cannot load block bitmap from: \n"
-+" %s \n"
-+msgstr ""
-+"  Không nạp được sơ đồ bit của khối từ:\n"
-+" %s \n"
-+
-+#: vfs/undelfs.c:360
-+msgid " vfs_info is not fs! "
-+msgstr " vfs_info không phải là hệ thống tập tin! "
-+
-+#: vfs/undelfs.c:416 vfs/undelfs.c:600
-+msgid " You have to chdir to extract files first "
-+msgstr " Đầu tiên bạn phải chdir để chuyển tới thư mục chứa tập tin cần giản nén "
-+
-+#: vfs/undelfs.c:539
-+msgid " while iterating over blocks "
-+msgstr " khi lặp lại khối "
-+
-+#: vfs/vfs.c:880
-+msgid "Changes to file lost"
-+msgstr "Thay đổi tới tập tin bị mất"
-+
-diff -urN mc-4.6.1.orig/src/achown.c mc-4.6.1/src/achown.c
---- mc-4.6.1.orig/src/achown.c	2005-07-23 22:52:02.000000000 +0600
-+++ mc-4.6.1/src/achown.c	2007-01-19 18:33:58.000000000 +0500
-@@ -583,6 +583,12 @@
-     b_att[2] = button_new (XTRACT (6));
-     b_user = button_new (XTRACT (5));
-     b_group = button_new (XTRACT (4));
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode) {
-+	b_user->text = g_realloc (b_user->text, MB_CUR_MAX * 15 + 1);
-+	b_group->text = g_realloc (b_group->text, MB_CUR_MAX * 15 + 1);
-+    }
-+#endif
- 
-     add_widget (ch_dlg, b_group);
-     add_widget (ch_dlg, b_user);
-diff -urN mc-4.6.1.orig/src/boxes.c mc-4.6.1/src/boxes.c
---- mc-4.6.1.orig/src/boxes.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/boxes.c	2007-01-19 18:33:59.000000000 +0500
-@@ -49,6 +49,7 @@
- #ifdef HAVE_CHARSET
- #include "charsets.h"
- #include "selcodepage.h"
-+#include "recode.h"
- #endif
- 
- #ifdef USE_NETCODE
-@@ -150,23 +151,23 @@
- 	display_title = _(display_title);
- 	for (i = 0; i < LIST_TYPES; i++) {
- 	    displays[i] = _(displays[i]);
--	    if ((l = strlen (displays[i])) > maxlen)
-+	    if ((l = mbstrlen (displays[i])) > maxlen)
- 		maxlen = l;
- 	}
- 
--	i = strlen (ok_button) + 5;
--	l = strlen (cancel_button) + 3;
-+	i = mbstrlen (ok_button) + 5;
-+	l = mbstrlen (cancel_button) + 3;
- 	l = max (i, l);
- 
- 	i = maxlen + l + 16;
- 	if (i > DISPLAY_X)
- 	    DISPLAY_X = i;
- 
--	i = strlen (user_mini_status) + 13;
-+	i = mbstrlen (user_mini_status) + 13;
- 	if (i > DISPLAY_X)
- 	    DISPLAY_X = i;
- 
--	i = strlen (display_title) + 10;
-+	i = mbstrlen (display_title) + 10;
- 	if (i > DISPLAY_X)
- 	    DISPLAY_X = i;
- 
-@@ -285,20 +286,20 @@
- 	int maxlen = 0;
- 	for (i = SORT_TYPES - 1; i >= 0; i--) {
- 	    sort_orders_names[i] = _(sort_orders[i].sort_name);
--	    r = strlen (sort_orders_names[i]);
-+	    r = mbstrlen (sort_orders_names[i]);
- 	    if (r > maxlen)
- 		maxlen = r;
- 	}
- 
- 	check_pos = maxlen + 9;
- 
--	r = strlen (reverse_label) + 4;
--	i = strlen (case_label) + 4;
-+	r = mbstrlen (reverse_label) + 4;
-+	i = mbstrlen (case_label) + 4;
- 	if (i > r)
- 	    r = i;
- 
--	l = strlen (ok_button) + 6;
--	i = strlen (cancel_button) + 4;
-+	l = mbstrlen (ok_button) + 6;
-+	i = mbstrlen (cancel_button) + 4;
- 	if (i > l)
- 	    l = i;
- 
-@@ -307,7 +308,7 @@
- 	if (i > SORT_X)
- 	    SORT_X = i;
- 
--	i = strlen (sort_title) + 6;
-+	i = mbstrlen (sort_title) + 6;
- 	if (i > SORT_X)
- 	    SORT_X = i;
- 
-@@ -402,7 +403,7 @@
- 		while (i--)
- 		{
- 			conf_widgets [i].text = _(conf_widgets [i].text);
--			l1 = strlen (conf_widgets [i].text) + 3;
-+			l1 = mbstrlen (conf_widgets [i].text) + 3;
- 			if (l1 > maxlen)
- 				maxlen = l1;
- 		}
-@@ -417,8 +418,8 @@
- 		 * And this for the case when buttons with some space to the right
- 		 * do not fit within 2/6
- 		 */
--		l1 = strlen (conf_widgets [0].text) + 3;
--		i = strlen (conf_widgets [1].text) + 5;
-+		l1 = mbstrlen (conf_widgets [0].text) + 3;
-+		i = mbstrlen (conf_widgets [1].text) + 5;
- 		if (i > l1)
- 			l1 = i;
- 
-@@ -446,8 +447,8 @@
-     }
- }
- 
--#define DISPY 11
--#define DISPX 46
-+#define DISPY 13
-+#define DISPX 35
- 
- 
- #ifndef HAVE_CHARSET
-@@ -489,11 +490,11 @@
- 		{
- 			display_widgets [i].text = _(display_widgets[i].text);
- 			display_bits_str [i] = _(display_bits_str [i]);
--			l1 = strlen (display_bits_str [i]);
-+			l1 = mbstrlen (display_bits_str [i]);
- 			if (l1 > maxlen)
- 				maxlen = l1;
- 		}
--		l1 = strlen (display_widgets [2].text);
-+		l1 = mbstrlen (display_widgets [2].text);
- 		if (l1 > maxlen)
- 			maxlen = l1;
- 		
-@@ -501,8 +502,8 @@
- 		display_bits.xlen = (maxlen + 5) * 6 / 4;
- 
- 		/* See above confirm_box */
--		l1 = strlen (display_widgets [0].text) + 3;
--		i = strlen (display_widgets [1].text) + 5;
-+		l1 = mbstrlen (display_widgets [0].text) + 3;
-+		i = mbstrlen (display_widgets [1].text) + 5;
- 		if (i > l1)
- 			l1 = i;
- 
-@@ -543,26 +544,61 @@
- 
- 
- static int new_display_codepage;
-+static int new_ftp_codepage;
- 
--static WLabel *cplabel;
- static WCheck *inpcheck;
- 
-+static WButton *cpbutton;
-+static WButton *cpbutton_ftp;
-+
- static int
- sel_charset_button (int action)
- {
-     const char *cpname;
-     char buf[64];
--    new_display_codepage = select_charset (new_display_codepage, 1);
-+    new_display_codepage = select_charset (new_display_codepage, 1, _(" Choose input codepage "));
-     cpname = (new_display_codepage < 0)
- 	? _("Other 8 bit")
- 	: codepages[new_display_codepage].name;
- 
-     /* avoid strange bug with label repainting */
--    g_snprintf (buf, sizeof (buf), "%-27s", cpname);
--    label_set_text (cplabel, buf);
-+    sprintf( buf, "%s", cpname );
-+    button_set_text (cpbutton, buf);
-+
-+    if(new_display_codepage<0)  new_ftp_codepage=-1;
-+    cpname = (new_ftp_codepage < 0)
-+             ? _("Other 8 bit")
-+             : codepages[ new_ftp_codepage ].name;
-+    sprintf( buf, "%s", cpname );
-+    button_set_text (cpbutton_ftp, buf);
-+
-     return 0;
- }
- 
-+static int sel_charset_button_ftp(int action) {
-+  char *cpname, buf[64];
-+  if(new_display_codepage>0) {
-+    new_ftp_codepage = select_charset(new_ftp_codepage, 0, _(" Choose default FTP codepage "));
-+    cpname = (new_display_codepage < 0)
-+             ? _("Other 8 bit")
-+             : codepages[ new_display_codepage ].name;
-+    sprintf( buf, "%s", cpname );
-+    button_set_text( cpbutton, buf );
-+    cpname = (new_ftp_codepage < 0)
-+             ? _("Other 8 bit")
-+             : codepages[ new_ftp_codepage ].name;
-+    sprintf( buf, "%s", cpname );
-+    button_set_text( cpbutton_ftp, buf );
-+  }
-+  else {
-+    message( 1, _(" Warning "),
-+                _("To use this feature select your codepage in\n"
-+                  "Setup / Display Bits dialog!\n"
-+                 "Do not forget to save options." ));
-+  }
-+  return 0;
-+}
-+
- static Dlg_head *
- init_disp_bits_box (void)
- {
-@@ -581,9 +617,6 @@
-     cpname = (new_display_codepage < 0)
- 	? _("Other 8 bit")
- 	: codepages[new_display_codepage].name;
--    cplabel = label_new (4, 4, cpname);
--    add_widget (dbits_dlg, cplabel);
--
-     add_widget (dbits_dlg,
- 		button_new (DISPY - 3, DISPX / 2 + 3, B_CANCEL,
- 			    NORMAL_BUTTON, _("&Cancel"), 0));
-@@ -592,13 +625,30 @@
- 			    0));
- 
-     inpcheck =
--	check_new (6, 4, !use_8th_bit_as_meta, _("F&ull 8 bits input"));
-+	check_new (8, 4, !use_8th_bit_as_meta, _("F&ull 8 bits input"));
-     add_widget (dbits_dlg, inpcheck);
- 
--    cpname = _("&Select");
--    add_widget (dbits_dlg,
--		button_new (4, DISPX - 8 - strlen (cpname), B_USER,
--			    NORMAL_BUTTON, cpname, sel_charset_button));
-+
-+    add_widget( dbits_dlg, label_new( 5, 4, _("FTP default codepage:")));
-+    if(n_codepages>0) {
-+      cpname = (new_display_codepage < 0)
-+               ? _("Other 8 bit")
-+               : codepages[ new_display_codepage ].name;
-+    }
-+    else cpname= _("Other 8 bit");
-+    cpbutton=button_new(4, 5, B_USER,
-+                       NORMAL_BUTTON, cpname, sel_charset_button);
-+
-+    if(n_codepages>0) {
-+      cpname = (new_ftp_codepage < 0)
-+               ? _("Other 8 bit")
-+               : codepages[ new_ftp_codepage ].name;
-+    }
-+    else cpname= _("Other 8 bit");
-+    cpbutton_ftp=button_new(6, 5, B_USER,
-+                            NORMAL_BUTTON, cpname, sel_charset_button_ftp);
-+    add_widget( dbits_dlg, cpbutton_ftp);
-+    add_widget (dbits_dlg, cpbutton);
- 
-     return dbits_dlg;
- }
-@@ -608,6 +658,7 @@
- {
-     Dlg_head *dbits_dlg;
-     new_display_codepage = display_codepage;
-+    new_ftp_codepage = ftp_codepage;
- 
-     application_keypad_mode ();
-     dbits_dlg = init_disp_bits_box ();
-@@ -628,6 +679,17 @@
- 				   && display_codepage != 1) ? 128 : 160;
- #endif
- 	use_8th_bit_as_meta = !(inpcheck->state & C_BOOL);
-+
-+        ftp_codepage=new_ftp_codepage;
-+        if(display_codepage<=0) {
-+          panel_reset_codepage(left_panel);
-+          paint_dir(left_panel);
-+          display_mini_info(left_panel);
-+          panel_reset_codepage(right_panel);
-+          paint_dir(right_panel);
-+          display_mini_info(right_panel);
-+        }
-+
-     }
-     destroy_dlg (dbits_dlg);
-     repaint_screen ();
-@@ -803,7 +865,7 @@
-     quick_widgets [1].y_divisions =
- 	quick_widgets [0].y_divisions = Quick_input.ylen = 5;
- 
--    len = strlen (quick_widgets [1].text);
-+    len = mbstrlen (quick_widgets [1].text);
- 
-     quick_widgets [0].relative_x =
- 	quick_widgets [1].relative_x + len + 1;
-@@ -962,7 +1024,7 @@
- 		{
- 			job_buttons [i].name = _(job_buttons [i].name);
- 
--			len = strlen (job_buttons [i].name) + 4;
-+			len = mbstrlen (job_buttons [i].name) + 4;
- 			JOBS_X = max (JOBS_X, startx + len + 3);
- 
- 			job_buttons [i].xpos = startx;
-@@ -971,7 +1033,7 @@
- 
- 		/* Last button - Ok a.k.a. Cancel :) */
- 		job_buttons [n_buttons - 1].xpos =
--			JOBS_X - strlen (job_buttons [n_buttons - 1].name) - 7;
-+			JOBS_X - mbstrlen (job_buttons [n_buttons - 1].name) - 7;
- 
- 		i18n_flag = 1;
- 	}
-@@ -1029,7 +1091,7 @@
-         
-         while (i--)
-         {
--            l1 = strlen (labs [i] = _(labs [i]));
-+            l1 = mbstrlen (labs [i] = _(labs [i]));
-             if (l1 > maxlen)
-                 maxlen = l1;
-         }
-@@ -1039,7 +1101,7 @@
-         
-         for (i = sizeof(buts)/sizeof(buts[0]), l1 = 0; i--; )
-         {
--            l1 += strlen (buts [i] = _(buts [i]));
-+            l1 += mbstrlen (buts [i] = _(buts [i]));
-         }
-         l1 += 15;
-         if (l1 > dialog_x)
-@@ -1048,7 +1110,7 @@
-         ilen = dialog_x - 7 - maxlen; /* for the case of very long buttons :) */
-         istart = dialog_x - 3 - ilen;
-         
--        b2 = dialog_x - (strlen(buts[1]) + 6);
-+        b2 = dialog_x - (mbstrlen(buts[1]) + 6);
-         
-         i18n_flag = 1;
-     }
-diff -urN mc-4.6.1.orig/src/charsets.c mc-4.6.1/src/charsets.c
---- mc-4.6.1.orig/src/charsets.c	2005-07-23 22:52:02.000000000 +0600
-+++ mc-4.6.1/src/charsets.c	2007-01-19 18:33:59.000000000 +0500
-@@ -119,8 +119,6 @@
-     }
- }
- 
--#define OTHER_8BIT "Other_8_bit"
--
- const char *
- get_codepage_id (int n)
- {
-@@ -139,7 +137,7 @@
-     return -1;
- }
- 
--static char
-+char
- translate_character (iconv_t cd, char c)
- {
-     char outbuf[4], *obuf;
-diff -urN mc-4.6.1.orig/src/charsets.h mc-4.6.1/src/charsets.h
---- mc-4.6.1.orig/src/charsets.h	2004-08-30 16:38:00.000000000 +0600
-+++ mc-4.6.1/src/charsets.h	2007-01-19 18:33:59.000000000 +0500
-@@ -6,6 +6,7 @@
- #define UNKNCHAR '\001'
- 
- #define CHARSETS_INDEX "mc.charsets"
-+#define OTHER_8BIT "Other_8_bit"
- 
- extern int n_codepages;
- 
-@@ -19,6 +20,10 @@
- 
- extern struct codepage_desc *codepages;
- 
-+#include <iconv.h>
-+extern char translate_character(iconv_t cd, char c);
-+extern char errbuf[255];
-+
- const char *get_codepage_id (int n);
- int get_codepage_index (const char *id);
- int load_codepages_list (void);
-diff -urN mc-4.6.1.orig/src/cmd.c mc-4.6.1/src/cmd.c
---- mc-4.6.1.orig/src/cmd.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/cmd.c	2007-01-19 18:33:59.000000000 +0500
-@@ -74,6 +74,10 @@
- #   include "../edit/edit.h"
- #endif
- 
-+#ifdef HAVE_CHARSET
-+#include "recode.h"
-+#endif
-+
- /* If set and you don't have subshell support,then C-o will give you a shell */
- int output_starts_shell = 0;
- 
-@@ -350,6 +354,9 @@
- {
-     char *tempdir;
-     char *dir;
-+#ifdef HAVE_CHARSET
-+    char *recoded_dir;
-+#endif
- 
-     dir =
- 	input_expand_dialog (_("Create a new Directory"),
-@@ -360,8 +367,17 @@
- 
-     if (dir[0] == '/' || dir[0] == '~')
- 	tempdir = g_strdup (dir);
--    else
--	tempdir = concat_dir_and_file (current_panel->cwd, dir);
-+    else {
-+#ifdef HAVE_CHARSET
-+        recoded_dir=g_strdup(dir);
-+        my_translate_string(dir,strlen(dir), recoded_dir,current_panel->tr_table_input);
-+        tempdir = concat_dir_and_file (current_panel->cwd, recoded_dir);
-+        g_free(recoded_dir);
-+#else
-+        tempdir = concat_dir_and_file (current_panel->cwd, dir);
-+#endif
-+    }
-+
-     g_free (dir);
- 
-     save_cwds_stat ();
-diff -urN mc-4.6.1.orig/src/dialog.c mc-4.6.1/src/dialog.c
---- mc-4.6.1.orig/src/dialog.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/dialog.c	2007-01-19 18:33:58.000000000 +0500
-@@ -162,7 +162,7 @@
- 
-     if (h->title) {
- 	attrset (HOT_NORMALC);
--	dlg_move (h, space, (h->cols - strlen (h->title)) / 2);
-+	dlg_move (h, space, (h->cols - mbstrlen (h->title)) / 2);
- 	addstr (h->title);
-     }
- }
-diff -urN mc-4.6.1.orig/src/file.c mc-4.6.1/src/file.c
---- mc-4.6.1.orig/src/file.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/file.c	2007-01-19 18:33:59.000000000 +0500
-@@ -77,6 +77,9 @@
- #include "../vfs/vfs-impl.h"
- 
- /* }}} */
-+#ifdef HAVE_CHARSET
-+#include "recode.h"
-+#endif
- 
- int verbose = 1;
- 
-@@ -165,15 +168,20 @@
- do_transform_source (FileOpContext *ctx, const unsigned char *source)
- {
-     size_t j, k, l, len;
--    unsigned const char *fnsource = x_basename (source);
-+    unsigned const char *fnsource = g_strdup (x_basename (source));
-     int next_reg;
-     enum CaseConvs case_conv = NO_CONV;
-     static unsigned char fntarget[MC_MAXPATHLEN];
- 
-+#ifdef UTF8
-+    fix_utf8(fnsource);
-+#endif
-+
-     len = strlen (fnsource);
-     j = re_match (&ctx->rx, fnsource, len, 0, &ctx->regs);
-     if (j != len) {
- 	transform_error = FILE_SKIP;
-+	g_free(fnsource);
- 	return NULL;
-     }
-     for (next_reg = 1, j = 0, k = 0; j < strlen (ctx->dest_mask); j++) {
-@@ -217,6 +225,7 @@
- 		|| ctx->regs.start[next_reg] < 0) {
- 		message (1, MSG_ERROR, _(" Invalid target mask "));
- 		transform_error = FILE_ABORT;
-+		g_free(fnsource);
- 		return NULL;
- 	    }
- 	    for (l = (size_t) ctx->regs.start[next_reg];
-@@ -231,6 +240,7 @@
- 	}
-     }
-     fntarget[k] = 0;
-+    g_free(fnsource);
-     return fntarget;
- }
- 
-@@ -380,9 +390,9 @@
- 	char *p, *q, *s;
- 
- 	const char *r = strrchr (src_path, PATH_SEP);
--
-+	
- 	if (r) {
--	    p = g_strndup (src_path, r - src_path);
-+	    p = g_strndup (src_path, r - src_path + 1);
- 	    if (*dst_path == PATH_SEP)
- 		q = g_strdup (dst_path);
- 	    else
-@@ -914,7 +924,11 @@
- 	}
- 	/* Dive into subdir if exists */
- 	if (toplevel && ctx->dive_into_subdirs) {
--	    dest_dir = concat_dir_and_file (d, x_basename (s));
-+#ifdef HAVE_CHARSET
-+            dest_dir = concat_dir_and_recoded_fname(d, x_basename (s), ctx);
-+#else
-+            dest_dir = concat_dir_and_file (d, x_basename (s));
-+#endif
- 	} else {
- 	    dest_dir = g_strdup (d);
- 	    goto dont_mkdir;
-@@ -964,7 +978,11 @@
- 
- 	(*ctx->stat_func) (path, &buf);
- 	if (S_ISDIR (buf.st_mode)) {
--	    mdpath = concat_dir_and_file (dest_dir, next->d_name);
-+#ifdef HAVE_CHARSET
-+            mdpath = concat_dir_and_recoded_fname(dest_dir, next->d_name, ctx);
-+#else
-+            mdpath = concat_dir_and_file (dest_dir, next->d_name);
-+#endif
- 	    /*
- 	     * From here, we just intend to recursively copy subdirs, not
- 	     * the double functionality of copying different when the target
-@@ -975,7 +993,11 @@
- 				parent_dirs, progress_count, progress_bytes);
- 	    g_free (mdpath);
- 	} else {
--	    dest_file = concat_dir_and_file (dest_dir, x_basename (path));
-+#ifdef HAVE_CHARSET
-+            dest_file=concat_dir_and_recoded_fname(dest_dir, x_basename(path),ctx);
-+#else
-+            dest_file = concat_dir_and_file (dest_dir, x_basename (path));
-+#endif
- 	    return_status = copy_file_file (ctx, path, dest_file, 1,
- 					    progress_count, progress_bytes, 0);
- 	    g_free (dest_file);
-@@ -1159,7 +1181,12 @@
- 	destdir = g_strdup (d);
- 	move_over = 1;
-     } else
--	destdir = concat_dir_and_file (d, x_basename (s));
-+#ifdef HAVE_CHARSET
-+        destdir = concat_dir_and_recoded_fname(d, x_basename (s), ctx);
-+#else
-+        destdir = concat_dir_and_file (d, x_basename (s));
-+#endif
-+
- 
-     if (sbuf.st_dev == dbuf.st_dev && sbuf.st_ino == dbuf.st_ino) {
- 	int msize = COLS - 36;
-@@ -1875,7 +1902,12 @@
- 	    if (temp == NULL) {
- 		value = transform_error;
- 	    } else {
--		char *temp2 = concat_dir_and_file (dest, temp);
-+#ifdef HAVE_CHARSET
-+                char *temp2 = concat_dir_and_recoded_fname (dest, temp, ctx);
-+#else
-+                char *temp2 = concat_dir_and_file (dest, temp);
-+#endif
-+
- 		g_free (dest);
- 		dest = temp2;
- 		temp = NULL;
-@@ -1969,7 +2001,12 @@
- 		if (temp == NULL)
- 		    value = transform_error;
- 		else {
--		    char *temp2 = concat_dir_and_file (dest, temp);
-+#ifdef HAVE_CHARSET
-+                    char *temp2 = concat_dir_and_recoded_fname(dest, temp, ctx);
-+#else
-+                    char *temp2 = concat_dir_and_file (dest, temp);
-+#endif
-+
- 
- 		    switch (operation) {
- 		    case OP_COPY:
-diff -urN mc-4.6.1.orig/src/filegui.c mc-4.6.1/src/filegui.c
---- mc-4.6.1.orig/src/filegui.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/filegui.c	2007-01-19 18:33:59.000000000 +0500
-@@ -69,6 +69,11 @@
- #include "filegui.h"
- #include "key.h"		/* get_event */
- #include "util.h"               /* strip_password() */
-+#include "tty.h"
-+
-+#ifdef HAVE_CHARSET
-+#include "recode.h"
-+#endif
- 
- /* }}} */
- 
-@@ -564,8 +569,8 @@
- 	 * longest of "Overwrite..." labels 
- 	 * (assume "Target date..." are short enough)
- 	 */
--	l1 = max (strlen (rd_widgets[6].text),
--		  strlen (rd_widgets[11].text));
-+	l1 = max (mbstrlen (rd_widgets[6].text),
-+		  mbstrlen (rd_widgets[11].text));
- 
- 	/* longest of button rows */
- 	i = sizeof (rd_widgets) / sizeof (rd_widgets[0]);
-@@ -576,7 +581,7 @@
- 		    l2 = max (l2, l);
- 		    l = 0;
- 		}
--		l += strlen (rd_widgets[i].text) + 4;
-+		l += mbstrlen (rd_widgets[i].text) + 4;
- 	    }
- 	}
- 	l2 = max (l2, l);	/* last row */
-@@ -594,12 +599,12 @@
- 		    l = l1;
- 		}
- 		rd_widgets[i].xpos = l;
--		l += strlen (rd_widgets[i].text) + 4;
-+		l += mbstrlen (rd_widgets[i].text) + 4;
- 	    }
- 	}
- 	/* Abort button is centered */
- 	rd_widgets[1].xpos =
--	    (rd_xlen - strlen (rd_widgets[1].text) - 3) / 2;
-+	    (rd_xlen - mbstrlen (rd_widgets[1].text) - 3) / 2;
-     }
- #endif				/* ENABLE_NLS */
- 
-@@ -618,7 +623,7 @@
- 
-     ADD_RD_LABEL (ui, 0,
- 		  name_trunc (ui->replace_filename,
--			      rd_trunc - strlen (rd_widgets[0].text)), 0);
-+			      rd_trunc - mbstrlen (rd_widgets[0].text)), 0);
-     ADD_RD_BUTTON (1);
- 
-     ADD_RD_BUTTON (2);
-@@ -721,57 +726,79 @@
-     }
- }
- 
-+#ifdef HAVE_CHARSET
-+#define FMDY 15
-+#else
- #define FMDY 13
-+#endif
-+
- #define	FMD_XLEN 64
- extern int fmd_xlen;
- static QuickWidget fmd_widgets[] = {
- 
--#define	FMCB0  FMDC
--#define	FMCB12 0
--#define	FMCB11 1
--    /* follow symlinks and preserve Attributes must be the first */
--    {quick_checkbox, 3, 64, 8, FMDY, N_("preserve &Attributes"), 9, 0,
--     0 /* &op_preserve */ , 0, "preserve"},
--    {quick_checkbox, 3, 64, 7, FMDY, N_("follow &Links"), 7, 0,
--     0 /* &file_mask_op_follow_links */ , 0, "follow"},
--    {quick_label, 3, 64, 5, FMDY, N_("to:"), 0, 0, 0, 0, "to"},
--    {quick_checkbox, 37, 64, 4, FMDY, N_("&Using shell patterns"), 0, 0,
--     0 /* &source_easy_patterns */ , 0, "using-shell"},
--    {quick_input, 3, 64, 3, FMDY, "", 58,
--     0, 0, 0, "input-def"},
--#define FMDI1 4
--#define FMDI2 5
--#define FMDC 3
--    {quick_input, 3, 64, 6, FMDY, "", 58, 0,
--     0, 0, "input2"},
--#define FMDI0 6
--    {quick_label, 3, 64, 2, FMDY, "", 0, 0, 0, 0, "ql"},
--#define	FMBRGT 7
--    {quick_button, 42, 64, 9, FMDY, N_("&Cancel"), 0, B_CANCEL, 0, 0,
--     "cancel"},
--#undef SKIP
-+#ifdef HAVE_CHARSET
-+ #define Y_OK 12
-+#else 
-+ #define Y_OK 9
-+#endif
-+
-+#ifdef WITH_BACKGROUND
-+ #define ADD 0
-+#else
-+ #define ADD -1
-+#endif
-+
-+  #define FM_STAB_SYM         0
-+  #define FM_DIVE_INTO_SUBDIR 1
-+  #define FM_PRES_ATTR        2
-+  #define FM_FOLLOW_LINKS     3
-+  #define FM_DST_INPUT        4
-+  #define FM_DST_TITLE        5
-+  #define FM_USING_SHELL_PATT 6
-+  #define FM_SRC_INPUT        7
-+  #define FM_SRC_TITLE        8
-+  #define FM_CANCEL           9
-+#ifdef WITH_BACKGROUND
-+  #define FM_BKGND            10
-+#endif
-+  #define FM_OK               11+ADD
-+#ifdef HAVE_CHARSET
-+  #define FM_TO_CODEPAGE      12+ADD
-+  #define FM_FROM_CODEPAGE    13+ADD
-+  #define FM_RECODE_TITLE     14+ADD
-+  #define FM_RECODE_ARROW     15+ADD
-+#endif // HAVE_CHARSET
-+
-+
-+#ifdef HAVE_CHARSET
-+ #define SKIP             10
-+ #define B_FROM B_USER+1
-+ #define B_TO   B_USER+2
-+#else
-+ #define SKIP             10
-+#endif
-+
-+    {quick_checkbox, 42,64, 8, FMDY, N_("&Stable Symlinks"),0,0,0,0,"stab-sym"},
-+    {quick_checkbox, 31,64, 7, FMDY, N_("&Dive into subdir if exists"),0,0,0,0,"dive"},
-+    {quick_checkbox, 3, 64, 8, FMDY, N_("preserve &Attributes"),9,0,0,0,"preserve"},
-+    {quick_checkbox, 3, 64, 7, FMDY, N_("follow &Links"),7,0,0,0,"follow"},
-+    {quick_input,    3, 64, 6, FMDY, "", 58, 0, 0, 0, "input2"},
-+    {quick_label,    3, 64, 5, FMDY, N_("to:"), 0, 0, 0, 0, "to"},
-+    {quick_checkbox, 37,64, 4, FMDY, N_("&Using shell patterns"),0,0, 0,0,"us-sh"},
-+    {quick_input,    3, 64, 3, FMDY, "", 58, 0, 0, 0, "input-def"},
-+    {quick_label,    3, 64, 2, FMDY, "", 0, 0, 0, 0, "ql"},
-+    {quick_button,   42,64, Y_OK, FMDY, N_("&Cancel"), 0, B_CANCEL, 0,0, "cancel"},
- #ifdef WITH_BACKGROUND
--# define SKIP 5
--# define FMCB21 11
--# define FMCB22 10
--# define FMBLFT 9
--# define FMBMID 8
--    {quick_button, 25, 64, 9, FMDY, N_("&Background"), 0, B_USER, 0, 0,
--     "back"},
--#else				/* WITH_BACKGROUND */
--# define SKIP 4
--# define FMCB21 10
--# define FMCB22 9
--# define FMBLFT 8
--# undef  FMBMID
--#endif
--    {quick_button, 14, 64, 9, FMDY, N_("&OK"), 0, B_ENTER, 0, 0, "ok"},
--    {quick_checkbox, 42, 64, 8, FMDY, N_("&Stable Symlinks"), 0, 0,
--     0 /* &file_mask_stable_symlinks */ , 0, "stab-sym"},
--    {quick_checkbox, 31, 64, 7, FMDY, N_("&Dive into subdir if exists"), 0,
--     0,
--     0 /* &dive_into_subdirs */ , 0, "dive"},
--    NULL_QuickWidget
-+    {quick_button,   25,64, Y_OK, FMDY, N_("&Background"), 0, B_USER, 0,0, "back"},
-+#endif
-+    {quick_button,   14,64, Y_OK, FMDY, N_("&OK"), 0, B_ENTER, 0, 0, "ok"},
-+#ifdef HAVE_CHARSET
-+    {quick_button,   46,64, 10, FMDY,"to codepage", 0, B_TO, 0, 0, "ql"},
-+    {quick_button,   25,64, 10, FMDY, "from codepage", 0, B_FROM, 0, 0, "ql"},
-+    {quick_label,    3, 64, 10, FMDY, N_("Recode file names:"), 0, 0, 0, 0, "ql"},
-+    {quick_label,    42,64, 10, FMDY, "->", 0, 0, 0, 0, "ql"},
-+#endif
-+    {0}
- };
- 
- static int
-@@ -805,48 +832,48 @@
- 	if (fmd_widgets[i].text[0] != '\0')
- 	    fmd_widgets[i].text = _(fmd_widgets[i].text);
- 
--    len = strlen (fmd_widgets[FMCB11].text)
--	+ strlen (fmd_widgets[FMCB21].text) + 15;
-+    len = mbstrlen (fmd_widgets[FM_FOLLOW_LINKS].text)
-+	+ mbstrlen (fmd_widgets[FM_DIVE_INTO_SUBDIR].text) + 15;
-     fmd_xlen = max (fmd_xlen, len);
- 
--    len = strlen (fmd_widgets[FMCB12].text)
--	+ strlen (fmd_widgets[FMCB22].text) + 15;
-+    len = mbstrlen (fmd_widgets[FM_PRES_ATTR].text)
-+	+ mbstrlen (fmd_widgets[FM_STAB_SYM].text) + 15;
-     fmd_xlen = max (fmd_xlen, len);
- 
--    len = strlen (fmd_widgets[FMBRGT].text)
--	+ strlen (fmd_widgets[FMBLFT].text) + 11;
-+    len = mbstrlen (fmd_widgets[FM_CANCEL].text)
-+	+ mbstrlen (fmd_widgets[FM_OK].text) + 11;
- 
--#ifdef FMBMID
--    len += strlen (fmd_widgets[FMBMID].text) + 6;
-+#ifdef FM_BKGND
-+    len += mbstrlen (fmd_widgets[FM_BKGND].text) + 6;
- #endif
- 
-     fmd_xlen = max (fmd_xlen, len + 4);
- 
-     len = (fmd_xlen - (len + 6)) / 2;
--    i = fmd_widgets[FMBLFT].relative_x = len + 3;
--    i += strlen (fmd_widgets[FMBLFT].text) + 8;
-+    i = fmd_widgets[FM_OK].relative_x = len + 3;
-+    i += mbstrlen (fmd_widgets[FM_OK].text) + 8;
- 
--#ifdef FMBMID
--    fmd_widgets[FMBMID].relative_x = i;
--    i += strlen (fmd_widgets[FMBMID].text) + 6;
-+#ifdef FM_BKGND
-+    fmd_widgets[FM_BKGND].relative_x = i;
-+     i += mbstrlen (fmd_widgets[FM_BKGND].text) + 6;
- #endif
- 
--    fmd_widgets[FMBRGT].relative_x = i;
-+    fmd_widgets[FM_CANCEL].relative_x = i;
- 
- #define	chkbox_xpos(i) \
--	fmd_widgets [i].relative_x = fmd_xlen - strlen (fmd_widgets [i].text) - 6
-+	fmd_widgets [i].relative_x = fmd_xlen - mbstrlen (fmd_widgets [i].text) - 6
- 
--    chkbox_xpos (FMCB0);
--    chkbox_xpos (FMCB21);
--    chkbox_xpos (FMCB22);
-+    chkbox_xpos (FM_USING_SHELL_PATT);
-+    chkbox_xpos (FM_DIVE_INTO_SUBDIR);
-+    chkbox_xpos (FM_STAB_SYM);
- 
-     if (fmd_xlen != FMD_XLEN) {
- 	i = sizeof (fmd_widgets) / sizeof (fmd_widgets[0]) - 1;
- 	while (i--)
- 	    fmd_widgets[i].x_divisions = fmd_xlen;
- 
--	fmd_widgets[FMDI1].hotkey_pos =
--	    fmd_widgets[FMDI2].hotkey_pos = fmd_xlen - 6;
-+	fmd_widgets[FM_SRC_INPUT].hotkey_pos =
-+	    fmd_widgets[FM_DST_INPUT].hotkey_pos = fmd_xlen - 6;
-     }
- #undef chkbox_xpos
- 
-@@ -856,7 +883,7 @@
- 
- char *
- file_mask_dialog (FileOpContext *ctx, FileOperation operation, const char *text,
--		  const char *def_text, int only_one, int *do_background)
-+		  const char *def_text_orig, int only_one, int *do_background)
- {
-     int source_easy_patterns = easy_patterns;
-     char *source_mask, *orig_mask, *dest_dir, *tmpdest;
-@@ -865,20 +892,32 @@
-     struct stat buf;
-     int val;
-     QuickDialog Quick_input;
--
-+    char *def_text;
-+#ifdef HAVE_CHARSET
-+    char *errmsg;
-+#endif
-     g_return_val_if_fail (ctx != NULL, NULL);
-+
-+    def_text = g_strdup(def_text_orig);
-+
- #if 0
-     message (1, __FUNCTION__, "text = `%s' \n def_text = `%s'", text,
- 		def_text);
- #endif
-+
-+#ifdef UTF8
-+	fix_utf8(def_text);
-+#endif
-+
-     fmd_init_i18n (FALSE);
- 
-     /* Set up the result pointers */
- 
--    fmd_widgets[FMCB12].result = &ctx->op_preserve;
--    fmd_widgets[FMCB11].result = &ctx->follow_links;
--    fmd_widgets[FMCB22].result = &ctx->stable_symlinks;
--    fmd_widgets[FMCB21].result = &ctx->dive_into_subdirs;
-+    fmd_widgets[FM_PRES_ATTR].result = &ctx->op_preserve;
-+    fmd_widgets[FM_FOLLOW_LINKS].result = &ctx->follow_links;
-+    fmd_widgets[FM_STAB_SYM].result = &ctx->stable_symlinks;
-+    fmd_widgets[FM_DIVE_INTO_SUBDIR].result = &ctx->dive_into_subdirs;
-+
- 
-     /* filter out a possible password from def_text */
-     def_text_secure = strip_password (g_strdup (def_text), 1);
-@@ -886,8 +925,9 @@
-     /* Create the dialog */
- 
-     ctx->stable_symlinks = 0;
--    fmd_widgets[FMDC].result = &source_easy_patterns;
--    fmd_widgets[FMDI1].text = easy_patterns ? "*" : "^\\(.*\\)$";
-+    fmd_widgets[FM_USING_SHELL_PATT].result = &source_easy_patterns;
-+    fmd_widgets[FM_SRC_INPUT].text = easy_patterns ? "*" : "^\\(.*\\)$";
-+ 
-     Quick_input.xlen = fmd_xlen;
-     Quick_input.xpos = -1;
-     Quick_input.title = op_names[operation];
-@@ -895,19 +935,34 @@
-     Quick_input.ylen = FMDY;
-     Quick_input.i18n = 1;
-     Quick_input.widgets = fmd_widgets;
--    fmd_widgets[FMDI0].text = text;
--    fmd_widgets[FMDI2].text = def_text_secure;
--    fmd_widgets[FMDI2].str_result = &dest_dir;
--    fmd_widgets[FMDI1].str_result = &source_mask;
-+    fmd_widgets[FM_SRC_TITLE].text = text;
-+    fmd_widgets[FM_DST_INPUT].text = def_text_secure;
-+    fmd_widgets[FM_DST_INPUT].str_result = &dest_dir;
-+    fmd_widgets[FM_SRC_INPUT].str_result = &source_mask;
- 
-     *do_background = 0;
-+
-+#ifdef HAVE_CHARSET
-+    ctx->from_codepage=current_panel->src_codepage;
-+    ctx->to_codepage=left_panel->src_codepage;
-+    if(current_panel==left_panel) ctx->to_codepage=right_panel->src_codepage;
-+#endif
-+
-   ask_file_mask:
- 
-+#ifdef HAVE_CHARSET
-+    if(operation!=OP_COPY && operation!=OP_MOVE) {
-+      ctx->from_codepage=-1;
-+      ctx->to_codepage=-1;
-+    }
-+    fmd_widgets[FM_FROM_CODEPAGE].text=get_codepage_id(ctx->from_codepage);
-+    fmd_widgets[FM_TO_CODEPAGE].text=get_codepage_id(ctx->to_codepage);
-+#endif
-+
-     if ((val = quick_dialog_skip (&Quick_input, SKIP)) == B_CANCEL) {
- 	g_free (def_text_secure);
- 	return 0;
-     }
--    g_free (def_text_secure);
- 
-     if (ctx->follow_links)
- 	ctx->stat_func = (mc_stat_fn) mc_stat;
-@@ -929,6 +984,8 @@
-     orig_mask = source_mask;
-     if (!dest_dir || !*dest_dir) {
- 	g_free (source_mask);
-+    g_free (def_text_secure);
-+        g_free(def_text);
- 	return dest_dir;
-     }
-     if (source_easy_patterns) {
-@@ -982,5 +1039,48 @@
-     }
-     if (val == B_USER)
- 	*do_background = 1;
-+#ifdef HAVE_CHARSET
-+    if(val == B_FROM) {
-+      if(operation==OP_COPY || operation==OP_MOVE) {
-+        if(display_codepage<=0) {
-+          message( 1, _(" Warning "),
-+                      _("To use this feature select your codepage in\n"
-+                        "Setup / Display Bits dialog!\n"
-+                        "Do not forget to save options." ));
-+          goto ask_file_mask;
-+        }
-+        ctx->from_codepage=select_charset(ctx->from_codepage,0,
-+                            _(" Choose \"FROM\" codepage for COPY/MOVE operaion "));
-+      }
-+      else
-+        message(1,"Warning",_("Recoding works only with COPY or MOVE operation"));
-+      goto ask_file_mask;
-+    }
-+    if(val == B_TO) {
-+      if(operation==OP_COPY || operation==OP_MOVE) {
-+        if(display_codepage<=0) {
-+          message( 1, _(" Warning "),
-+                      _("To use this feature select your codepage in\n"
-+                        "Setup / Display Bits dialog!\n"
-+                        "Do not forget to save options." ));
-+          goto ask_file_mask;
-+        }
-+        ctx->to_codepage=select_charset(ctx->to_codepage,0,
-+                            _(" Choose \"TO\" codepage for COPY/MOVE operaion "));
-+      }
-+      else
-+        message(1,"Warning",_("Recoding works only with COPY or MOVE operation"));
-+      goto ask_file_mask;
-+    }
-+
-+    errmsg=my_init_tt(ctx->to_codepage,ctx->from_codepage,ctx->tr_table);
-+    if(errmsg) {
-+      my_reset_tt(ctx->tr_table,256);
-+      message( 1, MSG_ERROR, "%s", errmsg);
-+    }
-+#endif
-+
-+    g_free(def_text_secure);
-+    g_free(def_text);
-     return dest_dir;
- }
-diff -urN mc-4.6.1.orig/src/fileopctx.c mc-4.6.1/src/fileopctx.c
---- mc-4.6.1.orig/src/fileopctx.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/fileopctx.c	2007-01-19 18:33:59.000000000 +0500
-@@ -24,8 +24,12 @@
- #include <unistd.h>
- 
- #include "global.h"
--#include "fileopctx.h"
- 
-+#ifdef HAVE_CHARSET
-+#include "recode.h"
-+#endif
-+
-+#include "fileopctx.h"
- 
- /**
-  * file_op_context_new:
-@@ -52,6 +56,12 @@
-     ctx->umask_kill = 0777777;
-     ctx->erase_at_end = TRUE;
- 
-+#ifdef HAVE_CHARSET
-+    ctx->from_codepage=-1;
-+    ctx->to_codepage=-1;
-+    my_reset_tt(ctx->tr_table,256);
-+#endif
-+
-     return ctx;
- }
- 
-diff -urN mc-4.6.1.orig/src/fileopctx.h mc-4.6.1/src/fileopctx.h
---- mc-4.6.1.orig/src/fileopctx.h	2004-10-07 00:06:26.000000000 +0600
-+++ mc-4.6.1/src/fileopctx.h	2007-01-19 18:33:59.000000000 +0500
-@@ -108,6 +108,14 @@
- 	/* User interface data goes here */
- 
- 	void *ui;
-+
-+#ifdef HAVE_CHARSET
-+       /* Recode data */
-+       int from_codepage, to_codepage;
-+       unsigned char tr_table[256];
-+       unsigned char recode_buf[MC_MAXPATHLEN];
-+#endif
-+
- } FileOpContext;
- 
- 
-diff -urN mc-4.6.1.orig/src/find.c mc-4.6.1/src/find.c
---- mc-4.6.1.orig/src/find.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/find.c	2007-01-19 18:33:58.000000000 +0500
-@@ -205,7 +205,7 @@
- 	int l1, maxlen = 0;
- 
- 	while (i--) {
--	    l1 = strlen (labs[i] = _(labs[i]));
-+	    l1 = mbstrlen (labs[i] = _(labs[i]));
- 	    if (l1 > maxlen)
- 		maxlen = l1;
- 	}
-@@ -214,7 +214,7 @@
- 	    FIND_X = i;
- 
- 	for (i = sizeof (buts) / sizeof (buts[0]), l1 = 0; i--;) {
--	    l1 += strlen (buts[i] = _(buts[i]));
-+	    l1 += mbstrlen (buts[i] = _(buts[i]));
- 	}
- 	l1 += 21;
- 	if (l1 > FIND_X)
-@@ -223,8 +223,8 @@
- 	ilen = FIND_X - 7 - maxlen;	/* for the case of very long buttons :) */
- 	istart = FIND_X - 3 - ilen;
- 
--	b1 = b0 + strlen (buts[0]) + 7;
--	b2 = FIND_X - (strlen (buts[2]) + 6);
-+	b1 = b0 + mbstrlen (buts[0]) + 7;
-+	b2 = FIND_X - (mbstrlen (buts[2]) + 6);
- 
- 	i18n_flag = 1;
- 	case_label = _(case_label);
-@@ -813,7 +813,7 @@
-     if (!i18n_flag) {
- 	register int i = sizeof (fbuts) / sizeof (fbuts[0]);
- 	while (i--)
--	    fbuts[i].len = strlen (fbuts[i].text = _(fbuts[i].text)) + 3;
-+	    fbuts[i].len = mbstrlen (fbuts[i].text = _(fbuts[i].text)) + 3;
- 	fbuts[2].len += 2;	/* DEFPUSH_BUTTON */
- 	i18n_flag = 1;
-     }
-diff -urN mc-4.6.1.orig/src/global.h mc-4.6.1/src/global.h
---- mc-4.6.1.orig/src/global.h	2004-09-25 19:46:23.000000000 +0600
-+++ mc-4.6.1/src/global.h	2007-01-19 18:33:58.000000000 +0500
-@@ -146,6 +146,13 @@
- #   define N_(String) (String)
- #endif /* !ENABLE_NLS */
- 
-+#include <slang.h>
-+#if SLANG_VERSION >= 20000
-+#define UTF8 1
-+#define SLsmg_Is_Unicode SLsmg_is_utf8_mode()
-+void SLsmg_write_nwchars(wchar_t *s, size_t n);
-+#endif
-+
- #include "fs.h"
- #include "util.h"
- 
-diff -urN mc-4.6.1.orig/src/help.c mc-4.6.1/src/help.c
---- mc-4.6.1.orig/src/help.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/help.c	2007-01-19 18:33:59.000000000 +0500
-@@ -445,10 +445,28 @@
- #ifndef HAVE_SLANG
- 			addch (acs_map [c]);
- #else
-+#if defined(UTF8) && SLANG_VERSION < 20000
-+			SLsmg_draw_object (h->y + line + 2, h->x + col + 2, acs_map [c]);
-+#else
- 			SLsmg_draw_object (h->y + line + 2, h->x + col + 2, c);
-+#endif /* UTF8 */
- #endif
-+		} else {
-+#ifdef UTF8
-+		if (SLsmg_Is_Unicode) {
-+		    int len;
-+		    mbstate_t mbs;
-+                   wchar_t wc;
-+		    memset (&mbs, 0, sizeof (mbs));
-+		    len = mbrtowc(&wc, p, MB_CUR_MAX, &mbs);
-+		    if (len <= 0) len = 1; /* skip broken multibyte chars */
-+
-+		    SLsmg_write_nwchars(&wc, 1);
-+		    p += len - 1;
- 		} else
-+#endif
- 		    addch (c);
-+		}
- 		col++;
- 		break;
- 	    }
-@@ -771,6 +789,12 @@
- 	message (1, MSG_ERROR, _(" Cannot open file %s \n %s "), filename ? filename : hlpfile,
- 		 unix_error_string (errno));
-     }
-+    else
-+    {
-+	char *conv = utf8_to_local(data);
-+	g_free(data);
-+	data = conv;
-+    }
- 
-     if (!filename)
- 	g_free (hlpfile);
-diff -urN mc-4.6.1.orig/src/hotlist.c mc-4.6.1/src/hotlist.c
---- mc-4.6.1.orig/src/hotlist.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/hotlist.c	2007-01-19 18:33:58.000000000 +0500
-@@ -555,7 +555,7 @@
- 
- 			row = hotlist_but [i].y;
- 			++count [row];
--			len [row] += strlen (hotlist_but [i].text) + 5;
-+			len [row] += mbstrlen (hotlist_but [i].text) + 5;
- 			if (hotlist_but [i].flags == DEFPUSH_BUTTON)
- 				len [row] += 2;
- 		}
-@@ -580,12 +580,12 @@
- 				/* not first int the row */
- 				if (!strcmp (hotlist_but [i].text, cancel_but))
- 					hotlist_but [i].x = 
--						cols - strlen (hotlist_but [i].text) - 13;
-+						cols - mbstrlen (hotlist_but [i].text) - 13;
- 				else
- 					hotlist_but [i].x = cur_x [row];
- 			}
- 
--			cur_x [row] += strlen (hotlist_but [i].text) + 2
-+			cur_x [row] += mbstrlen (hotlist_but [i].text) + 2
- 				+ (hotlist_but [i].flags == DEFPUSH_BUTTON ? 5 : 3);
- 		}
- 	}
-@@ -814,7 +814,7 @@
- 	for (i = 0; i < 3; i++)
- 	{
- 		qw [i].text = _(qw [i].text);
--		l[i] = strlen (qw [i].text) + 3;
-+		l[i] = mbstrlen (qw [i].text) + 3;
- 	}
- 	space = (len - 4 - l[0] - l[1] - l[2]) / 4;
- 
-@@ -860,7 +860,7 @@
- 	static int i18n_flag = 0;
- #endif /* ENABLE_NLS */
- 
--    len = max (strlen (header), (size_t) msglen (text1, &lines1));
-+    len = max ((int) mbstrlen (header), (size_t) msglen (text1, &lines1));
-     len = max (len, (size_t) msglen (text2, &lines2)) + 4;
-     len = max (len, 64);
- 
-@@ -955,7 +955,7 @@
- 	static int i18n_flag = 0;
- #endif /* ENABLE_NLS */
-     
--    len = max (strlen (header), (size_t) msglen (label, &lines)) + 4;
-+    len = max ((int) mbstrlen (header), (size_t) msglen (label, &lines)) + 4;
-     len = max (len, 64);
- 
- #ifdef ENABLE_NLS
-@@ -1011,7 +1011,7 @@
- {
-     char *prompt, *label;
-     const char *cp = _("Label for \"%s\":");
--    int l = strlen (cp);
-+    int l = mbstrlen (cp);
-     char *label_string = g_strdup (current_panel->cwd);
- 
-     strip_password (label_string, 1);
-diff -urN mc-4.6.1.orig/src/layout.c mc-4.6.1/src/layout.c
---- mc-4.6.1.orig/src/layout.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/layout.c	2007-01-19 18:33:58.000000000 +0500
-@@ -362,36 +362,36 @@
- 
- 	while (i--) {
- 	    s_split_direction[i] = _(s_split_direction[i]);
--	    l1 = strlen (s_split_direction[i]) + 7;
-+	    l1 = mbstrlen (s_split_direction[i]) + 7;
- 	    if (l1 > first_width)
- 		first_width = l1;
- 	}
- 
- 	for (i = 0; i <= 8; i++) {
- 	    check_options[i].text = _(check_options[i].text);
--	    l1 = strlen (check_options[i].text) + 7;
-+	    l1 = mbstrlen (check_options[i].text) + 7;
- 	    if (l1 > first_width)
- 		first_width = l1;
- 	}
- 
--	l1 = strlen (title1) + 1;
-+	l1 = mbstrlen (title1) + 1;
- 	if (l1 > first_width)
- 	    first_width = l1;
- 
--	l1 = strlen (title2) + 1;
-+	l1 = mbstrlen (title2) + 1;
- 	if (l1 > first_width)
- 	    first_width = l1;
- 
- 
--	second_width = strlen (title3) + 1;
-+	second_width = mbstrlen (title3) + 1;
- 	for (i = 0; i < 6; i++) {
- 	    check_options[i].text = _(check_options[i].text);
--	    l1 = strlen (check_options[i].text) + 7;
-+	    l1 = mbstrlen (check_options[i].text) + 7;
- 	    if (l1 > second_width)
- 		second_width = l1;
- 	}
- 	if (console_flag) {
--	    l1 = strlen (output_lines_label) + 13;
-+	    l1 = mbstrlen (output_lines_label) + 13;
- 	    if (l1 > second_width)
- 		second_width = l1;
- 	}
-@@ -405,14 +405,14 @@
- 	 *
- 	 * Now the last thing to do - properly space buttons...
- 	 */
--	l1 = 11 + strlen (ok_button)	/* 14 - all brackets and inner space */
--	    +strlen (save_button)	/* notice: it is 3 char less because */
--	    +strlen (cancel_button);	/* of '&' char in button text */
-+	l1 = 11 + mbstrlen (ok_button)	/* 14 - all brackets and inner space */
-+	    +mbstrlen (save_button)	/* notice: it is 3 char less because */
-+	    +mbstrlen (cancel_button);	/* of '&' char in button text */
- 
- 	i = (first_width + second_width - l1) / 4;
- 	b1 = 5 + i;
--	b2 = b1 + strlen (ok_button) + i + 6;
--	b3 = b2 + strlen (save_button) + i + 4;
-+	b2 = b1 + mbstrlen (ok_button) + i + 6;
-+	b3 = b2 + mbstrlen (save_button) + i + 4;
- 
- 	i18n_layt_flag = 1;
-     }
-@@ -684,7 +684,7 @@
-     panel_do_cols (0);
-     panel_do_cols (1);
- 
--    promptl = strlen (prompt);
-+    promptl = mbstrlen (prompt);
- 
-     widget_set_size (&the_menubar->widget, 0, 0, 1, COLS);
- 
-diff -urN mc-4.6.1.orig/src/learn.c mc-4.6.1/src/learn.c
---- mc-4.6.1.orig/src/learn.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/learn.c	2007-01-19 18:33:59.000000000 +0500
-@@ -236,7 +236,7 @@
- 	learn_but[0].x = 78 / 2 + 4;
- 
- 	learn_but[1].text = _(learn_but[1].text);
--	learn_but[1].x = 78 / 2 - (strlen (learn_but[1].text) + 9);
-+	learn_but[1].x = 78 / 2 - (mbstrlen (learn_but[1].text) + 9);
- 
- 	learn_title = _(learn_title);
- 	i18n_flag = 1;
-diff -urN mc-4.6.1.orig/src/main.c mc-4.6.1/src/main.c
---- mc-4.6.1.orig/src/main.c	2005-07-23 22:52:02.000000000 +0600
-+++ mc-4.6.1/src/main.c	2007-01-19 18:33:59.000000000 +0500
-@@ -86,6 +86,7 @@
- 
- #ifdef	HAVE_CHARSET
- #include "charsets.h"
-+#include "recode.h"
- #endif				/* HAVE_CHARSET */
- 
- #ifdef USE_VFS
-@@ -102,6 +103,7 @@
- /* The structures for the panels */
- WPanel *left_panel = NULL;
- WPanel *right_panel = NULL;
-+WPanel* ret_panel=NULL;
- 
- /* The pointer to the tree */
- WTree *the_tree = NULL;
-@@ -274,6 +276,9 @@
- /* The user's shell */
- const char *shell = NULL;
- 
-+/* Is the LANG UTF-8 ? */                                                     
-+gboolean is_utf8 = FALSE;
-+
- /* mc_home: The home of MC */
- char *mc_home = NULL;
- 
-@@ -585,6 +590,7 @@
-     }
-     directory = *new_dir ? new_dir : home_dir;
- 
-+    ret_panel=panel;
-     if (mc_chdir (directory) == -1) {
- 	strcpy (panel->cwd, olddir);
- 	g_free (olddir);
-@@ -798,6 +804,10 @@
-     {' ', N_("&Quick view     C-x q"), 'Q', quick_view_cmd},
-     {' ', N_("&Info           C-x i"), 'I', info_cmd},
-     {' ', N_("&Tree"), 'T', tree_cmd},
-+#ifdef HAVE_CHARSET
-+    {' ', "", ' ', 0},
-+    {' ', N_("Panel &codepage"), 'C', fnc_l_cmd},
-+#endif
-     {' ', "", ' ', 0},
-     {' ', N_("&Sort order..."), 'S', sort_cmd},
-     {' ', "", ' ', 0},
-@@ -822,6 +832,10 @@
-     {' ', N_("&Quick view     C-x q"), 'Q', quick_view_cmd},
-     {' ', N_("&Info           C-x i"), 'I', info_cmd},
-     {' ', N_("&Tree"), 'T', tree_cmd},
-+#ifdef HAVE_CHARSET
-+    {' ', "", ' ', 0},
-+    {' ', N_("Panel &codepage"), 'C', fnc_r_cmd},
-+#endif
-     {' ', "", ' ', 0},
-     {' ', N_("&Sort order..."), 'S', sort_cmd},
-     {' ', "", ' ', 0},
-@@ -1600,21 +1614,49 @@
- 
- #define xtoolkit_panel_setup()
- 
--/* Show current directory in the xterm title */
-+/* Show hostname and current directory in the xterm title */
- void
- update_xterm_title_path (void)
- {
-     unsigned char *p, *s;
-+    char *pvp;
-+    size_t pvlen;
-+    int pvresult;
- 
-     if (xterm_flag && xterm_title) {
-+	// currrent path
- 	p = s = g_strdup (strip_home_and_password (current_panel->cwd));
-+	// hostname
-+	pvlen = strlen(p);
-+ 	pvp = g_malloc (pvlen + 64); 	//approach - max hostname length
-+        pvresult = gethostname(pvp, 63);
-+	if (pvresult) {		// print just current path
-+	    g_free (pvp);
-+	    pvp = p;
-+	} else {
-+	    s = pvp;
-+	    do {		// merge hostname with path
-+		if (!is_printable (*s))
-+		    *s = '?';
-+	    } while (*++s!=0x00);
-+	    *s++=':';
-+	    strcpy (s, p);
-+	    g_free (p);
-+	}
-+
- 	do {
-+#ifndef UTF8
- 	    if (!is_printable (*s))
-+#else /* UTF8 */
-+            if (*s < ' ')
-+#endif /* UTF8 */
- 		*s = '?';
- 	} while (*++s);
--	fprintf (stdout, "\33]0;mc - %s\7", p);
-+// 	fprintf (stdout, "\33]0;mc - %s\7", p);
-+	fprintf (stdout, "\33]0;mc - %s\7", pvp);
- 	fflush (stdout);
--	g_free (p);
-+// 	g_free (p);
-+	g_free (pvp);
-     }
- }
- 
-@@ -2136,6 +2178,16 @@
-     /* if on, it displays the information that files have been moved to ~/.mc */
-     int show_change_notice = 0;
- 
-+    /* Check whether we have UTF-8 locale */
-+    char *lang = getenv("LANG");
-+    size_t len = 0;
-+    
-+    if ( lang )
-+    	len = strlen(lang);
-+    
-+    if ( len >= 5 && !strcasecmp(&lang[len-5],"UTF-8") )
-+	is_utf8 = TRUE;
-+
-     /* We had LC_CTYPE before, LC_ALL includs LC_TYPE as well */
-     setlocale (LC_ALL, "");
-     bindtextdomain ("mc", LOCALEDIR);
-diff -urN mc-4.6.1.orig/src/main.h mc-4.6.1/src/main.h
---- mc-4.6.1.orig/src/main.h	2005-07-01 21:47:06.000000000 +0600
-+++ mc-4.6.1/src/main.h	2007-01-19 18:33:59.000000000 +0500
-@@ -64,6 +64,7 @@
- extern int only_leading_plus_minus;
- extern int output_starts_shell;
- extern int midnight_shutdown;
-+extern gboolean is_utf8;
- extern char cmd_buf [512];
- extern const char *shell;
- 
-diff -urN mc-4.6.1.orig/src/Makefile.am mc-4.6.1/src/Makefile.am
---- mc-4.6.1.orig/src/Makefile.am	2005-06-08 18:27:19.000000000 +0600
-+++ mc-4.6.1/src/Makefile.am	2007-01-19 18:33:59.000000000 +0500
-@@ -40,7 +40,8 @@
- mc_LDADD = $(EDITLIB) $(SLANGLIB) $(VFSLIB) \
- 	$(INTLLIBS) $(GLIB_LIBS) $(MCLIBS) $(LIBICONV)
- 
--CHARSET_SRC = charsets.c charsets.h selcodepage.c selcodepage.h
-+CHARSET_SRC = charsets.c charsets.h selcodepage.c selcodepage.h	\
-+	 recode.c recode.h
- 
- SRCS =	achown.c achown.h background.c background.h boxes.c boxes.h	\
- 	chmod.c chmod.h chown.c chown.h cmd.c cmd.h color.c color.h	\
-@@ -55,8 +56,8 @@
- 	menu.c menu.h mountlist.c mountlist.h mouse.c mouse.h myslang.h	\
- 	option.c option.h panel.h panelize.c panelize.h poptalloca.h	\
- 	popt.c poptconfig.c popt.h popthelp.c poptint.h poptparse.c	\
--	profile.c profile.h regex.c rxvt.c screen.c setup.c setup.h	\
--	slint.c	subshell.c subshell.h textconf.c textconf.h		\
-+	profile.c profile.h regex.c rxvt.c screen.c screen.h setup.c	\
-+	setup.h	slint.c	subshell.c subshell.h textconf.c textconf.h	\
- 	tree.c tree.h treestore.c treestore.h tty.h user.c user.h	\
- 	util.c util.h utilunix.c view.c view.h vfsdummy.h widget.c	\
- 	widget.h win.c win.h wtools.c wtools.h				\
-diff -urN mc-4.6.1.orig/src/Makefile.in mc-4.6.1/src/Makefile.in
---- mc-4.6.1.orig/src/Makefile.in	2005-07-23 22:53:15.000000000 +0600
-+++ mc-4.6.1/src/Makefile.in	2007-01-19 18:33:59.000000000 +0500
-@@ -84,12 +84,12 @@
- 	mouse.c mouse.h myslang.h option.c option.h panel.h panelize.c \
- 	panelize.h poptalloca.h popt.c poptconfig.c popt.h popthelp.c \
- 	poptint.h poptparse.c profile.c profile.h regex.c rxvt.c \
--	screen.c setup.c setup.h slint.c subshell.c subshell.h \
-+	screen.c screen.h setup.c setup.h slint.c subshell.c subshell.h \
- 	textconf.c textconf.h tree.c tree.h treestore.c treestore.h \
- 	tty.h user.c user.h util.c util.h utilunix.c view.c view.h \
- 	vfsdummy.h widget.c widget.h win.c win.h wtools.c wtools.h \
- 	x11conn.h x11conn.c charsets.c charsets.h selcodepage.c \
--	selcodepage.h
-+	selcodepage.h recode.c recode.h
- am__objects_1 = achown.$(OBJEXT) background.$(OBJEXT) boxes.$(OBJEXT) \
- 	chmod.$(OBJEXT) chown.$(OBJEXT) cmd.$(OBJEXT) color.$(OBJEXT) \
- 	command.$(OBJEXT) complete.$(OBJEXT) cons.handler.$(OBJEXT) \
-@@ -109,7 +109,8 @@
- 	util.$(OBJEXT) utilunix.$(OBJEXT) view.$(OBJEXT) \
- 	widget.$(OBJEXT) win.$(OBJEXT) wtools.$(OBJEXT) \
- 	x11conn.$(OBJEXT)
--am__objects_2 = charsets.$(OBJEXT) selcodepage.$(OBJEXT)
-+am__objects_2 = charsets.$(OBJEXT) selcodepage.$(OBJEXT) recode.$(OBJEXT)
-+
- @CHARSET_FALSE@am_mc_OBJECTS = $(am__objects_1)
- @CHARSET_TRUE@am_mc_OBJECTS = $(am__objects_1) $(am__objects_2)
- mc_OBJECTS = $(am_mc_OBJECTS)
-@@ -342,7 +343,8 @@
- mc_LDADD = $(EDITLIB) $(SLANGLIB) $(VFSLIB) \
- 	$(INTLLIBS) $(GLIB_LIBS) $(MCLIBS) $(LIBICONV)
- 
--CHARSET_SRC = charsets.c charsets.h selcodepage.c selcodepage.h
-+CHARSET_SRC = charsets.c charsets.h selcodepage.c selcodepage.h		\
-+	recode.c recode.h
- SRCS = achown.c achown.h background.c background.h boxes.c boxes.h	\
- 	chmod.c chmod.h chown.c chown.h cmd.c cmd.h color.c color.h	\
- 	command.c command.h complete.c complete.h cons.handler.c	\
-@@ -356,8 +358,8 @@
- 	menu.c menu.h mountlist.c mountlist.h mouse.c mouse.h myslang.h	\
- 	option.c option.h panel.h panelize.c panelize.h poptalloca.h	\
- 	popt.c poptconfig.c popt.h popthelp.c poptint.h poptparse.c	\
--	profile.c profile.h regex.c rxvt.c screen.c setup.c setup.h	\
--	slint.c	subshell.c subshell.h textconf.c textconf.h		\
-+	profile.c profile.h regex.c rxvt.c screen.c screen.h setup.c	\
-+	setup.h	slint.c	subshell.c subshell.h textconf.c textconf.h	\
- 	tree.c tree.h treestore.c treestore.h tty.h user.c user.h	\
- 	util.c util.h utilunix.c view.c view.h vfsdummy.h widget.c	\
- 	widget.h win.c win.h wtools.c wtools.h				\
-diff -urN mc-4.6.1.orig/src/menu.c mc-4.6.1/src/menu.c
---- mc-4.6.1.orig/src/menu.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/menu.c	2007-01-19 18:33:59.000000000 +0500
-@@ -20,6 +20,8 @@
- #include <stdarg.h>
- #include <sys/types.h>
- #include <ctype.h>
-+#include <wchar.h>
-+
- #include "global.h"
- #include "tty.h"
- #include "menu.h"
-@@ -50,33 +52,96 @@
- {
-     Menu *menu;
-     const char *cp;
-+    int wlen = 0;
-+    mbstate_t s;
- 
-     menu = (Menu *) g_malloc (sizeof (*menu));
-     menu->count = count;
-     menu->max_entry_len = 20;
-     menu->entries = entries;
-+    menu->name = g_strdup (name);
-+    menu_scan_hotkey (menu);
-+#ifdef UTF8
-+    menu->wentries = NULL;
-+    menu->wname = NULL;
-+    if (SLsmg_Is_Unicode) {
-+      const char *str = menu->name;
-+      memset (&s, 0, sizeof (s));
-+      wlen = mbsrtowcs (NULL, &str, -1, &s);
-+      if (wlen > 0)
-+        ++wlen;
-+      else {
-+        wlen = 0;
-+        memset (&s, 0, sizeof (s));
-+      }
-+    }
-+#endif
- 
-     if (entries != (menu_entry*) NULL) {
- 	register menu_entry* mp;
- 	for (mp = entries; count--; mp++) {
- 	    if (mp->text[0] != '\0') {
-+		int len;
- #ifdef ENABLE_NLS
- 	        mp->text = _(mp->text);
- #endif /* ENABLE_NLS */
- 	        cp = strchr (mp->text,'&');
- 
-+#ifdef UTF8
-+		if (SLsmg_Is_Unicode) {
-+                    len = mbstrlen(mp->text) + 1;
-+                    wlen += len;
-+                    menu->max_entry_len = max (len - 1, menu->max_entry_len);
-+                } else
-+#endif
-+                    len = strlen (mp->text);
-+
- 		if (cp != NULL && *(cp+1) != '\0') {
- 		    mp->hot_key = tolower (*(cp+1));
--		    menu->max_entry_len = max ((int) (strlen (mp->text) - 1),
--			menu->max_entry_len);
-+		    menu->max_entry_len = max (len - 1, menu->max_entry_len);
- 		} else {
--		    menu->max_entry_len = max ((int) strlen (mp->text),
--			menu->max_entry_len);
-+		    menu->max_entry_len = max (len, menu->max_entry_len);
- 		}
- 	    }
- 	}
-     }
- 
-+#ifdef UTF8
-+    if (wlen) {
-+      wchar_t *wp;
-+      const char *str;
-+      int len;
-+
-+      menu->wentries = (wchar_t **)
-+                       g_malloc (sizeof (wchar_t *) * menu->count
-+                                 + wlen * sizeof (wchar_t));
-+      wp = (wchar_t *) (menu->wentries + menu->count);
-+      str = menu->name;
-+      len = mbsrtowcs (wp, &str, wlen, &s);
-+      if (len > 0) {
-+          menu->wname = wp;
-+          wlen -= len + 1;
-+          wp += len + 1;
-+      } else
-+          memset (&s, 0, sizeof (s));
-+      if (menu->entries != NULL)
-+          for (count = 0; count < menu->count; ++count)
-+              if (menu->entries[count].text[0] != '\0') {
-+                  str = menu->entries[count].text;
-+                  menu->wentries[count] = wp;
-+                  len = mbsrtowcs (wp, &str, wlen, &s);
-+                  if (len > 0) {
-+                      wlen -= len + 1;
-+                      wp += len + 1;
-+                  } else {
-+                      memset (&s, 0, sizeof (s));
-+                      *wp++ = L'\0';
-+                      --wlen;
-+                  }
-+              }
-+    }
-+#endif
-+
-     menu->name = g_strdup (name);
-     menu_scan_hotkey(menu);
-     menu->start_x = 0;
-@@ -109,8 +174,26 @@
- 	const unsigned char *text;
- 
- 	addch((unsigned char)menu->entries [idx].first_letter);
--	for (text = menu->entries [idx].text; *text; text++)
--	{
-+#ifdef UTF8
-+	if (menu->wentries) {
-+	    wchar_t *wtext, *wp;
-+
-+	    for (wtext = wp = menu->wentries [idx]; *wtext; wtext++) {
-+		if (*wtext == L'&') {
-+		    if (wtext > wp)
-+			SLsmg_write_nwchars (wp, wtext - wp);
-+		    attrset (color == MENU_SELECTED_COLOR ?
-+			MENU_HOTSEL_COLOR : MENU_HOT_COLOR);
-+		    SLsmg_write_nwchars (++wtext, 1);
-+		    attrset (color);
-+		    wp = wtext + 1;
-+		}
-+	    }
-+	    if (wtext > wp)
-+		SLsmg_write_nwchars (wp, wtext - wp);
-+	} else
-+#endif
-+	    for (text = menu->entries [idx].text; *text; text++) {
- 		if (*text != '&')
- 		    addch(*text);
- 		else {
-@@ -119,7 +202,7 @@
- 		    addch(*(++text));
- 		    attrset(color);
- 		}
--	}
-+	    }
-     }
-     widget_move (&menubar->widget, y, x + 1);
- }
-@@ -167,7 +250,13 @@
- 	if (menubar->active)
- 	    attrset(i == menubar->selected?MENU_SELECTED_COLOR:SELECTED_COLOR);
- 	widget_move (&menubar->widget, 0, menubar->menu [i]->start_x);
--	printw ("%s", menubar->menu [i]->name);
-+#ifdef UTF8
-+	if (menubar->menu [i]->wname)
-+	    SLsmg_write_nwchars (menubar->menu [i]->wname,
-+				 wcslen (menubar->menu [i]->wname));
-+	else
-+#endif
-+	    printw ("%s", menubar->menu [i]->name);
-     }
- 
-     if (menubar->dropped)
-@@ -489,7 +578,13 @@
- 
- 	for (i = 0; i < items; i++)
- 	{
--		int len = strlen(menubar->menu[i]->name);
-+		int len;
-+#ifdef UTF8
-+		if (menubar->menu[i]->wname)
-+		    len = wcslen (menubar->menu[i]->wname);
-+		else
-+#endif		
-+		    len = strlen(menubar->menu[i]->name);
- 		menubar->menu[i]->start_x = start_x;
- 		start_x += len + gap;
- 	}
-@@ -502,7 +597,13 @@
- 	for (i = 0; i < items; i++)
- 	{
- 		/* preserve length here, to be used below */
--		gap -= (menubar->menu[i]->start_x = strlen(menubar->menu[i]->name));
-+#ifdef UTF8
-+		if (menubar->menu[i]->wname)
-+		    menubar->menu[i]->start_x = wcslen (menubar->menu[i]->wname);
-+		else
-+#endif
-+		    menubar->menu[i]->start_x = strlen (menubar->menu[i]->name);
-+		gap -= menubar->menu[i]->start_x;
- 	}
- 
- 	gap /= (items - 1);
-@@ -526,6 +627,9 @@
- void
- destroy_menu (Menu *menu)
- {
-+#ifdef UTF8
-+    g_free (menu->wentries);
-+#endif
-     g_free (menu->name);
-     g_free (menu->help_node);
-     g_free (menu);
-diff -urN mc-4.6.1.orig/src/menu.h mc-4.6.1/src/menu.h
---- mc-4.6.1.orig/src/menu.h	2004-09-18 20:30:59.000000000 +0600
-+++ mc-4.6.1/src/menu.h	2007-01-19 18:33:59.000000000 +0500
-@@ -21,6 +21,8 @@
-     menu_entry *entries;
-     int    start_x;		/* position relative to menubar start */
-     char   *help_node;
-+    wchar_t **wentries;
-+    wchar_t *wname;
- } Menu;
- 
- extern int menubar_visible;
-diff -urN mc-4.6.1.orig/src/mountlist.c mc-4.6.1/src/mountlist.c
---- mc-4.6.1.orig/src/mountlist.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/mountlist.c	2007-01-19 18:33:59.000000000 +0500
-@@ -132,11 +132,19 @@
- 
- struct fs_usage
- {
-+#ifndef HAVE_SYS_STATVFS_H
-   long fsu_blocks;		/* Total blocks. */
-   long fsu_bfree;		/* Free blocks available to superuser. */
-   long fsu_bavail;		/* Free blocks available to non-superuser. */
-   long fsu_files;		/* Total file nodes. */
-   long fsu_ffree;		/* Free file nodes. */
-+#else	/* We have sys/statvfs.h, use proper data types when _FILE_OFFSET_BITS=64 */
-+  fsblkcnt_t fsu_blocks;
-+  fsblkcnt_t fsu_bfree;
-+  fsblkcnt_t fsu_bavail;
-+  fsblkcnt_t fsu_files;
-+  fsblkcnt_t fsu_ffree;
-+#endif /* HAVE_SYS_STATVFS_H */
- };
- 
- static int get_fs_usage (char *path, struct fs_usage *fsp);
-@@ -663,6 +671,7 @@
-    BLOCKS FROMSIZE-byte blocks, rounding away from zero.
-    TOSIZE must be positive.  Return -1 if FROMSIZE is not positive.  */
- 
-+#if !defined(HAVE_SYS_STATFS_H) || !defined(STAT_STATVFS)
- static long
- fs_adjust_blocks (long blocks, int fromsize, int tosize)
- {
-@@ -670,13 +679,21 @@
- 	abort ();
-     if (fromsize <= 0)
- 	return -1;
--
-+#else
-+static fsblkcnt_t
-+fs_adjust_blocks (fsblkcnt_t blocks, unsigned long fromsize, unsigned long tosize)
-+{
-+    if (!tosize)
-+        abort ();
-+    if (!fromsize)
-+        return -1;
-+#endif
-     if (fromsize == tosize)	/* E.g., from 512 to 512.  */
- 	return blocks;
-     else if (fromsize > tosize)	/* E.g., from 2048 to 512.  */
- 	return blocks * (fromsize / tosize);
-     else			/* E.g., from 256 to 512.  */
--	return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
-+	return (blocks + 1) / (tosize / fromsize);
- }
- 
- #if defined(_AIX) && defined(_I386)
-diff -urN mc-4.6.1.orig/src/myslang.h mc-4.6.1/src/myslang.h
---- mc-4.6.1.orig/src/myslang.h	2004-10-12 10:32:04.000000000 +0600
-+++ mc-4.6.1/src/myslang.h	2007-01-19 18:33:59.000000000 +0500
-@@ -11,6 +11,10 @@
- #endif	/* HAVE_SLANG_SLANG_H */
- #endif
- 
-+#ifdef UTF8
-+#    include <wchar.h>
-+#endif
-+
- enum {
-     KEY_BACKSPACE = 400,
-     KEY_END, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT,
-diff -urN mc-4.6.1.orig/src/option.c mc-4.6.1/src/option.c
---- mc-4.6.1.orig/src/option.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/option.c	2007-01-19 18:33:59.000000000 +0500
-@@ -124,12 +124,12 @@
- 	title2 = _(" Pause after run... ");
- 	title3 = _(" Other options ");
- 
--	first_width = strlen (title1) + 1;
--	second_width = strlen (title3) + 1;
-+	first_width = mbstrlen (title1) + 1;
-+	second_width = mbstrlen (title3) + 1;
- 
- 	for (i = 0; check_options[i].text; i++) {
- 	    check_options[i].text = _(check_options[i].text);
--	    l1 = strlen (check_options[i].text) + 7;
-+	    l1 = mbstrlen (check_options[i].text) + 7;
- 	    if (i >= OTHER_OPTIONS) {
- 		if (l1 > first_width)
- 		    first_width = l1;
-@@ -142,23 +142,23 @@
- 	i = PAUSE_OPTIONS;
- 	while (i--) {
- 	    pause_options[i] = _(pause_options[i]);
--	    l1 = strlen (pause_options[i]) + 7;
-+	    l1 = mbstrlen (pause_options[i]) + 7;
- 	    if (l1 > first_width)
- 		first_width = l1;
- 	}
- 
--	l1 = strlen (title2) + 1;
-+	l1 = mbstrlen (title2) + 1;
- 	if (l1 > first_width)
- 	    first_width = l1;
- 
--	l1 = 11 + strlen (ok_button)
--	    + strlen (save_button)
--	    + strlen (cancel_button);
-+	l1 = 11 + mbstrlen (ok_button)
-+	    + mbstrlen (save_button)
-+	    + mbstrlen (cancel_button);
- 
- 	i = (first_width + second_width - l1) / 4;
- 	b1 = 5 + i;
--	b2 = b1 + strlen (ok_button) + i + 6;
--	b3 = b2 + strlen (save_button) + i + 4;
-+	b2 = b1 + mbstrlen (ok_button) + i + 6;
-+	b3 = b2 + mbstrlen (save_button) + i + 4;
- 
- 	i18n_config_flag = 1;
-     }
-diff -urN mc-4.6.1.orig/src/panel.h mc-4.6.1/src/panel.h
---- mc-4.6.1.orig/src/panel.h	2004-08-29 22:55:51.000000000 +0600
-+++ mc-4.6.1/src/panel.h	2007-01-19 18:33:59.000000000 +0500
-@@ -71,6 +71,19 @@
- 
-     int      searching;
-     char     search_buffer [256];
-+
-+#ifdef HAVE_CHARSET
-+    int src_codepage;
-+    unsigned char tr_table[256], tr_table_input[256];
-+#endif
-+
-+#ifdef USE_VFS
-+ #ifdef HAVE_CHARSET
-+    int ret_codepage;
-+ #endif
-+    int  is_return;
-+    char retdir[MC_MAXPATHLEN];
-+#endif
- } WPanel;
- 
- WPanel *panel_new (const char *panel_name);
-@@ -96,6 +109,7 @@
- extern WPanel *left_panel;
- extern WPanel *right_panel;
- extern WPanel *current_panel;
-+extern WPanel* ret_panel;
- 
- void try_to_select (WPanel *panel, const char *name);
- 
-diff -urN mc-4.6.1.orig/src/panelize.c mc-4.6.1/src/panelize.c
---- mc-4.6.1.orig/src/panelize.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/panelize.c	2007-01-19 18:33:59.000000000 +0500
-@@ -127,7 +127,7 @@
- 	i = sizeof (panelize_but) / sizeof (panelize_but[0]);
- 	while (i--) {
- 	    panelize_but[i].text = _(panelize_but[i].text);
--	    maxlen += strlen (panelize_but[i].text) + 5;
-+	    maxlen += mbstrlen (panelize_but[i].text) + 5;
- 	}
- 	maxlen += 10;
- 
-@@ -136,11 +136,11 @@
-     panelize_cols = max (panelize_cols, maxlen);
- 
-     panelize_but[2].x =
--	panelize_but[3].x + strlen (panelize_but[3].text) + 7;
-+	panelize_but[3].x + mbstrlen (panelize_but[3].text) + 7;
-     panelize_but[1].x =
--	panelize_but[2].x + strlen (panelize_but[2].text) + 5;
-+	panelize_but[2].x + mbstrlen (panelize_but[2].text) + 5;
-     panelize_but[0].x =
--	panelize_cols - strlen (panelize_but[0].text) - 8 - BX;
-+	panelize_cols - mbstrlen (panelize_but[0].text) - 8 - BX;
- 
- #endif				/* ENABLE_NLS */
- 
-diff -urN mc-4.6.1.orig/src/recode.c mc-4.6.1/src/recode.c
---- mc-4.6.1.orig/src/recode.c	1970-01-01 05:00:00.000000000 +0500
-+++ mc-4.6.1/src/recode.c	2007-01-19 18:33:59.000000000 +0500
-@@ -0,0 +1,153 @@
-+#include "recode.h"
-+#ifdef HAVE_CHARSET
-+
-+char *lang;
-+char lang_codepage_name[256];
-+int lang_codepage;
-+
-+int ftp_codepage=-1;
-+
-+// recode buffer for displaying file names
-+unsigned char recode_buf[MC_MAXPATHLEN];
-+
-+WPanel* recode_panel;
-+
-+//--- get codepage from $LANG
-+void get_locale_codepage() {
-+  char* a;
-+  char* b;
-+  int len;
-+
-+  lang=getenv("LANG");
-+  if(!lang) {
-+    strncpy(lang_codepage_name,OTHER_8BIT, sizeof(OTHER_8BIT)); 
-+    lang_codepage=-1;
-+    return;
-+  }
-+
-+  a=strchr(lang,'.');
-+  if(!a) {
-+    strncpy(lang_codepage_name,OTHER_8BIT, sizeof(OTHER_8BIT)); 
-+    lang_codepage=-1;
-+    return;
-+  }
-+  ++a;
-+
-+  b=strchr(lang,'@');
-+  if(!b) b=lang+strlen(lang);
-+
-+  len=b-a;
-+  if(len>=sizeof(lang_codepage_name)) len=sizeof(lang_codepage_name)-1;
-+
-+  memcpy(lang_codepage_name,a, len);
-+  lang_codepage_name[len]='\0';
-+  lang_codepage=get_codepage_index(lang_codepage_name);
-+  if(lang_codepage<0) strncpy(lang_codepage_name,OTHER_8BIT, sizeof(OTHER_8BIT));
-+}
-+
-+//--- reset translation table
-+void  my_reset_tt(unsigned char *table,int n) {
-+  int i;
-+  for(i=0;i<n;i++) table[i]=i;
-+}
-+
-+//--- reset panel codepage
-+void panel_reset_codepage(WPanel *p) {
-+  p->src_codepage=-1;
-+  my_reset_tt(p->tr_table,256);
-+  my_reset_tt(p->tr_table_input,256);
-+}
-+
-+//--- Initialize translation table 
-+//    i need this function because init_translation_table from
-+//    charsets.c fills only fixed translation tables conv_displ and conv_input
-+//---   
-+char* my_init_tt( int from, int to, unsigned char *table) {
-+ int i;
-+ iconv_t cd;
-+ char *cpfrom, *cpto;
-+
-+ if(from < 0 || to < 0 || from == to) {
-+   my_reset_tt(table,256);
-+   return NULL;
-+ }
-+ my_reset_tt(table,128);
-+ cpfrom=codepages[from ].id;
-+ cpto=codepages[to].id;
-+ cd=iconv_open(cpfrom, cpto);
-+ if(cd==(iconv_t)-1) {
-+   snprintf(errbuf, 255, _("Cannot translate from %s to %s"), cpfrom, cpto);
-+   return errbuf;
-+ }
-+ for(i=128; i<=255; ++i) table[i] = translate_character(cd, i);
-+ iconv_close(cd);
-+ return NULL;
-+}
-+
-+//--- Translate string from one codepage to another
-+void my_translate_string(unsigned char *s1,int l1, unsigned char *s2, unsigned char *table) {
-+  int i=0;
-+  if(!s1) return;
-+  while(i<l1) {
-+    s2[i]=table[s1[i]];
-+    i++;
-+   }
-+  s2[i]=0;
-+}
-+
-+//--- Recode filename and concat in to dir
-+char* concat_dir_and_recoded_fname(const char *dir, const char *fname, FileOpContext *ctx) {
-+    int i = strlen (dir);
-+    
-+    my_translate_string((unsigned char*)fname,strlen(fname),ctx->recode_buf,ctx->tr_table);
-+    if (dir [i-1] == PATH_SEP)
-+        return  g_strconcat (dir, ctx->recode_buf, NULL);
-+    else
-+        return  g_strconcat (dir, PATH_SEP_STR, ctx->recode_buf, NULL);
-+  return 0;
-+}
-+
-+
-+//--- Internal handler for "Panel codepage"
-+static void fnc_cmd(WPanel *p) {
-+  char *errmsg;
-+  if(display_codepage > 0) {
-+    p->src_codepage=select_charset(p->src_codepage, 0, _(" Choose panel codepage "));
-+    errmsg=my_init_tt(display_codepage,p->src_codepage,p->tr_table);
-+    if(errmsg) {
-+      panel_reset_codepage(p);
-+      message( 1, MSG_ERROR, "%s", errmsg);
-+    }
-+    errmsg=my_init_tt(p->src_codepage,display_codepage,p->tr_table_input);
-+    if (errmsg) {
-+      panel_reset_codepage(p);
-+      message( 1, MSG_ERROR, "%s", errmsg );
-+     }
-+    paint_dir(p);
-+    show_dir(p);
-+    display_mini_info(p);
-+  }
-+  else {
-+    message( 1, _(" Warning "),
-+                _("To use this feature select your codepage in\n"
-+                  "Setup / Display Bits dialog!\n"
-+                  "Do not forget to save options." ));
-+  }
-+}
-+
-+//--- Menu handlers for "Panel codepage" for left and right panel menu
-+
-+void fnc_l_cmd() {
-+  fnc_cmd(left_panel);
-+}
-+
-+void fnc_r_cmd() {
-+  fnc_cmd(right_panel);
-+}
-+
-+//--- screen handler for "Panel codepage"
-+void fnc_c_cmd(WPanel *panel) {
-+  fnc_cmd(current_panel);
-+}
-+
-+#endif //HAVE_CHARSET
-diff -urN mc-4.6.1.orig/src/recode.h mc-4.6.1/src/recode.h
---- mc-4.6.1.orig/src/recode.h	1970-01-01 05:00:00.000000000 +0500
-+++ mc-4.6.1/src/recode.h	2007-01-19 18:33:59.000000000 +0500
-@@ -0,0 +1,48 @@
-+#ifndef __RECODE_H__
-+#define __RECODE_H__
-+#include <config.h>
-+#ifdef HAVE_CHARSET
-+
-+#include <stdio.h>
-+#include <locale.h>
-+#include <iconv.h>
-+
-+#include "global.h"
-+#include "wtools.h"
-+#include "panel.h"
-+#include "charsets.h"
-+#include "selcodepage.h"
-+#include "screen.h"
-+#include "main.h"
-+#include "fileopctx.h"
-+    
-+extern char *lang;
-+extern char lang_codepage_name[256];
-+extern int lang_codepage;
-+
-+extern int ftp_codepage;
-+
-+// recode buffer for displaying file names
-+extern unsigned char recode_buf[MC_MAXPATHLEN];
-+extern WPanel* recode_panel;
-+
-+//--- get codepage from $LANG
-+extern void get_locale_codepage();
-+
-+//--- reset translation table
-+extern void  my_reset_tt(unsigned char *table,int n);
-+//--- reset panel codepage
-+extern void panel_reset_codepage(WPanel *p);
-+//--- Initialize translation table
-+extern char* my_init_tt( int from, int to, unsigned char *table);
-+//--- Translate string from one codepage to another
-+extern void my_translate_string(unsigned char *s1,int l1, unsigned char *s2, unsigned char *table);
-+//--- Recode filename and concat in to dir
-+extern char* concat_dir_and_recoded_fname(const char *dir, const char *fname, FileOpContext *ctx);
-+//--- handlers for "Panel codepage"
-+extern void fnc_l_cmd();
-+extern void fnc_r_cmd();
-+extern void fnc_c_cmd(WPanel *panel);
-+
-+#endif // HAVE_CHARSET
-+#endif //__RECODE_H__
-diff -urN mc-4.6.1.orig/src/screen.c mc-4.6.1/src/screen.c
---- mc-4.6.1.orig/src/screen.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/screen.c	2007-01-19 18:33:59.000000000 +0500
-@@ -48,6 +48,10 @@
- #define WANT_WIDGETS
- #include "main.h"		/* the_menubar */
- 
-+#ifdef HAVE_CHARSET
-+#include "recode.h"
-+#endif
-+
- #define ELEMENTS(arr) ( sizeof(arr) / sizeof((arr)[0]) )
- 
- #define J_LEFT 		1
-@@ -169,22 +173,67 @@
- static const char *
- string_file_name (file_entry *fe, int len)
- {
--    static char buffer [BUF_SMALL];
-     size_t i;
-+    char* filename;    
-+#ifdef UTF8
-+    static char buffer [BUF_SMALL * 4];
-+    mbstate_t s;
-+    int mbmax = MB_CUR_MAX;
-+    const char *str = fe->fname;
- 
--    for (i = 0; i < sizeof(buffer) - 1; i++) {
--	char c;
-+    memset (&s, 0, sizeof (s));
-+#else
-+    static char buffer [BUF_SMALL];
-+#endif
- 
--	c = fe->fname[i];
-+#ifdef HAVE_CHARSET
-+    my_translate_string(fe->fname,fe->fnamelen, recode_buf, recode_panel->tr_table);
-+    filename= recode_buf;
-+#else
-+    filename=fe->fname;
-+#endif
- 
--	if (!c)
--	    break;
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode)
-+	for (i = 0; i < sizeof (buffer) - 1; i++) {
-+	    wchar_t wc;
-+	    int len;
- 
--	if (!is_printable(c))
--	    c = '?';
-+	    len = mbrtowc (&wc, str, mbmax, &s);
-+	    if (!len)
-+		break;
-+	    if (len < 0) {
-+		memset (&s, 0, sizeof (s));
-+		buffer[i] = '?';
-+		str++;
-+		continue;
-+	    }
-+	    if (!is_printable (wc)) {
-+		buffer[i] = '?';
-+		str++;
-+		continue;
-+	    }
-+	    if (i >= sizeof (buffer) - len)
-+		break;
-+	    memcpy (buffer + i, str, len);
-+	    i += len - 1;
-+	    str += len;
-+	}
-+    else
-+#endif
-+      for (i = 0; i < sizeof(buffer) - 1; i++) {
-+	  char c;
- 
--	buffer[i] = c;
--    }
-+      c= filename[i];
-+
-+	  if (!c)
-+	      break;
-+
-+	  if (!is_printable(c))
-+	      c = '?';
-+
-+	  buffer[i] = c;
-+      }
- 
-     buffer[i] = 0;
-     return buffer;
-@@ -425,42 +474,6 @@
- { "dot",   1,  0, J_RIGHT,	" ",		0, string_dot,		   NULL },
- };
- 
--static char *
--to_buffer (char *dest, int just_mode, int len, const char *txt)
--{
--    int txtlen = strlen (txt);
--    int still, over;
--
--    /* Fill buffer with spaces */
--    memset (dest, ' ', len);
--
--    still = (over=(txtlen > len)) ? (txtlen - len) : (len - txtlen);
--
--    switch (HIDE_FIT(just_mode)){
--        case J_LEFT:
--	    still = 0;
--	    break;
--	case J_CENTER:
--	    still /= 2;
--	    break;
--	case J_RIGHT:
--	default:
--	    break;
--    }
--
--    if (over){
--	if (IS_FIT(just_mode))
--	    strcpy (dest, name_trunc(txt, len));
--	else
--	    strncpy (dest, txt+still, len);
--    } else
--	strncpy (dest+still, txt, txtlen);
--
--    dest[len] = '\0';
--
--    return (dest + len);
--}
--
- static int
- file_compute_color (int attr, file_entry *fe)
- {
-@@ -514,14 +527,18 @@
- 
- /* Formats the file number file_index of panel in the buffer dest */
- static void
--format_file (char *dest, int limit, WPanel *panel, int file_index, int width, int attr, int isstatus)
-+format_file (WPanel *panel, int file_index, int width, int attr, int isstatus)
- {
-     int      color, length, empty_line;
-     const char *txt;
--    char     *old_pos;
--    char     *cdest = dest;
-     format_e *format, *home;
-     file_entry *fe;
-+#ifdef UTF8
-+    char     buffer[BUF_MEDIUM * sizeof (wchar_t)];
-+#else
-+    char     buffer[BUF_MEDIUM];
-+#endif
-+    int txtwidth;
- 
-     length     = 0;
-     empty_line = (file_index >= panel->count);
-@@ -539,34 +556,137 @@
- 	    break;
- 
- 	if (format->string_fn){
--	    int len;
-+	    int len, still, over, perm, txtlen, wide;
- 
- 	    if (empty_line)
- 		txt = " ";
- 	    else
- 		txt = (*format->string_fn)(fe, format->field_len);
- 
--	    old_pos = cdest;
--
- 	    len = format->field_len;
- 	    if (len + length > width)
- 		len = width - length;
--	    if (len + (cdest - dest) > limit)
--		len = limit - (cdest - dest);
-+	    if (len >= BUF_MEDIUM)
-+		len = BUF_MEDIUM - 1;
- 	    if (len <= 0)
- 		break;
--	    cdest = to_buffer (cdest, format->just_mode, len, txt);
--	    length += len;
- 
--            attrset (color);
-+	    perm = 0;
-+            if (permission_mode) {
-+		if (!strcmp(format->id, "perm"))
-+		    perm = 1;
-+		else if (!strcmp(format->id, "mode"))
-+		    perm = 2;
-+	    }
- 
--            if (permission_mode && !strcmp(format->id, "perm"))
--                add_permission_string (old_pos, format->field_len, fe, attr, color, 0);
--            else if (permission_mode && !strcmp(format->id, "mode"))
--                add_permission_string (old_pos, format->field_len, fe, attr, color, 1);
--            else
--		addstr (old_pos);
-+	    wide = 0;
-+#ifdef UTF8
-+	    if (SLsmg_Is_Unicode && !empty_line && !perm) {
-+		mbstate_t s;
-+		const char *str = txt;
-+
-+		memset (&s, 0, sizeof (s));
-+		txtlen = mbsrtowcs ((wchar_t *) buffer, &str,
-+				    sizeof (buffer) / sizeof (wchar_t), &s);
-+		if (txtlen < 0) {
-+		    txt = " ";
-+		    txtlen = 1;
-+		} else {
-+		    wide = 1;
-+		    txtwidth = wcswidth((wchar_t*)buffer, txtlen);
-+		}
-+	    } else
-+#endif
-+	    {
-+		txtlen = strlen (txt);
-+		txtwidth = txtlen;
-+	    }
-+
-+	    over = txtwidth > len;
-+	    still = over ? txtlen - len : len - txtlen;
-+
-+	    switch (HIDE_FIT(format->just_mode)) {
-+	    case J_LEFT:
-+		still = 0;
-+		break;
-+	    case J_CENTER:
-+		still /= 2;
-+		break;
-+	    case J_RIGHT:
-+	    default:
-+		break;
-+	    }
-+
-+	    attrset (color);
- 
-+	    if (wide) {
-+#ifdef UTF8
-+		if (over) {
-+		    if (IS_FIT (format->just_mode)) {
-+			int n1 = 0;
-+			int width1 = 0;
-+			int n2 = 0;
-+			int width2 = 0;
-+			int len1 = len / 2;
-+			int len2;
-+			
-+			while (1) {
-+			    int w = wcwidth(((wchar_t *) buffer)[n1]);
-+			    if (width1 + w <= len1) {
-+				width1 += w;
-+				n1++;
-+			    }
-+			    else
-+				break;
-+			}
-+			len2 = len - width1 - 1;
-+
-+			while (1) {
-+			    int w = wcwidth(((wchar_t *) buffer)[txtlen - n2 - 1]);
-+			    if (width2 + w <= len2) {
-+				width2 += w;
-+				n2++;
-+			    }
-+			    else
-+				break;
-+			}
-+			
-+
-+			SLsmg_write_nwchars ((wchar_t *) buffer, n1);
-+			SLsmg_write_nwchars (L"~", 1);
-+			printw ("%*s", len - width1 - width2 - 1, "");
-+			SLsmg_write_nwchars (((wchar_t *) buffer)
-+					     + txtlen - n2, n2);
-+		    } else
-+			SLsmg_write_nwchars ((wchar_t *) buffer, len);
-+		} else {
-+		    printw ("%*s", still, "");
-+		    SLsmg_write_nwchars ((wchar_t *) buffer, txtlen);
-+		    printw ("%*s", len - txtwidth - still, "");
-+		}
-+#endif
-+	    } else {
-+		if (over) {
-+		    if (IS_FIT (format->just_mode))
-+			strcpy (buffer, name_trunc(txt, len));
-+		    else
-+			memcpy (buffer, txt + still, len);
-+		} else {
-+		    memset (buffer, ' ', still);
-+		    memcpy (buffer + still, txt, txtlen);
-+		    memset (buffer + still + txtlen, ' ',
-+			    len - txtlen - still);
-+		}
-+		buffer[len] = '\0';
-+
-+		if (perm)
-+		    add_permission_string (buffer, format->field_len, fe,
-+					   attr, color, perm - 1);
-+		else
-+		    addstr (buffer);
-+	    }
-+
-+	    length += len;
- 	} else {
-             if (attr == SELECTED || attr == MARKED_SELECTED)
-                 attrset (SELECTED_COLOR);
-@@ -589,7 +709,10 @@
- {
-     int    second_column = 0;
-     int	   width, offset;
--    char   buffer [BUF_MEDIUM];
-+
-+#ifdef HAVE_CHARSET
-+    recode_panel=panel;
-+#endif
- 
-     offset = 0;
-     if (!isstatus && panel->split){
-@@ -618,7 +741,7 @@
- 	    widget_move (&panel->widget, file_index - panel->top_file + 2, 1);
-     }
- 
--    format_file (buffer, sizeof(buffer), panel, file_index, width, attr, isstatus);
-+    format_file (panel, file_index, width, attr, isstatus);
- 
-     if (!isstatus && panel->split){
- 	if (second_column)
-@@ -630,7 +753,7 @@
-     }
- }
- 
--static void
-+void
- display_mini_info (WPanel *panel)
- {
-     if (!show_mini_info)
-@@ -658,7 +781,7 @@
- 	g_snprintf (buffer, sizeof (buffer), (panel->marked == 1) ?
- 		 _("%s bytes in %d file") : _("%s bytes in %d files"),
- 		 size_trunc_sep (panel->total), panel->marked);
--	if ((int) strlen (buffer) > cols-2){
-+	if ((int) mbstrlen (buffer) > cols-2){
- 	    buffer [cols] = 0;
- 	    p += 2;
- 	} else
-@@ -691,7 +814,7 @@
-     return;
- }
- 
--static void
-+void
- paint_dir (WPanel *panel)
- {
-     int i;
-@@ -729,7 +852,7 @@
- #endif				/* !HAVE_SLANG */
- }
- 
--static void
-+void
- show_dir (WPanel *panel)
- {
-     char *tmp;
-@@ -749,6 +872,9 @@
-     }
- #endif				/* HAVE_SLANG */
- 
-+    vscrollbar (panel->widget, panel->widget.lines, panel->widget.cols-1, 2, 2,
-+		panel->selected, panel->count, TRUE);
-+
-     if (panel->active)
- 	attrset (REVERSE_COLOR);
- 
-@@ -757,8 +883,15 @@
-     tmp = g_malloc (panel->widget.cols + 1);
-     tmp[panel->widget.cols] = '\0';
- 
-+#ifdef HAVE_CHARSET
-+    my_translate_string(panel->cwd,strlen(panel->cwd),recode_buf, panel->tr_table);
-+    trim (strip_home_and_password (recode_buf), tmp,
-+	 min (max (panel->widget.cols - 7, 0), panel->widget.cols) );
-+#else
-     trim (strip_home_and_password (panel->cwd), tmp,
- 	 min (max (panel->widget.cols - 7, 0), panel->widget.cols) );
-+#endif
-+
-     addstr (tmp);
-     g_free (tmp);
-     widget_move (&panel->widget, 0, 1);
-@@ -970,6 +1103,17 @@
-     mc_get_current_wd (panel->cwd, sizeof (panel->cwd) - 2);
-     strcpy (panel->lwd, ".");
- 
-+#ifdef HAVE_CHARSET
-+    panel_reset_codepage(panel);
-+#endif
-+
-+#ifdef USE_VFS
-+    panel->is_return=0;
-+ #ifdef HAVE_CHARSET
-+    panel->ret_codepage=-1;
-+ #endif
-+#endif
-+
-     panel->hist_name = g_strconcat ("Dir Hist ", panel_name, (char *) NULL);
-     panel->dir_history = history_get (panel->hist_name);
-     directory_history_add (panel, panel->cwd);
-@@ -1068,6 +1212,12 @@
-     int  side, width;
- 
-     const char *txt;
-+#ifdef UTF8
-+    char buffer[30 * sizeof (wchar_t)];
-+    mbstate_t s;
-+
-+    memset (&s, 0, sizeof (s));
-+#endif
-     if (!panel->split)
- 	adjust_top_file (panel);
- 
-@@ -1092,16 +1242,37 @@
-             if (format->string_fn){
-                 txt = format->title;
- 
-+		attrset (MARKED_COLOR);
-+		width -= format->field_len;
-+#ifdef UTF8
-+		if (SLsmg_Is_Unicode) {
-+		    const char *str = txt;
-+		    header_len = mbsrtowcs ((wchar_t *) buffer, &str,
-+					    sizeof (buffer) / sizeof (wchar_t),
-+					    &s);
-+		    if (header_len < 0) {
-+			memset (&s, 0, sizeof (s));
-+			printw ("%*s", format->field_len, "");
-+			continue;
-+		    }
-+		    if (header_len > format->field_len)
-+			header_len = format->field_len;
-+		    spaces = (format->field_len - header_len) / 2;
-+		    extra  = (format->field_len - header_len) % 2;
-+		    printw ("%*s", spaces, "");
-+		    SLsmg_write_nwchars ((wchar_t *) buffer, header_len);
-+		    printw ("%*s", spaces + extra, "");
-+		    continue;
-+		}
-+#endif
- 		header_len = strlen (txt);
- 		if (header_len > format->field_len)
- 		    header_len = format->field_len;
- 
--                attrset (MARKED_COLOR);
-                 spaces = (format->field_len - header_len) / 2;
-                 extra  = (format->field_len - header_len) % 2;
- 		printw ("%*s%.*s%*s", spaces, "",
- 			 header_len, txt, spaces+extra, "");
--		width -= 2 * spaces + extra + header_len;
- 	    } else {
- 		attrset (NORMAL_COLOR);
- 		one_vline ();
-@@ -1320,7 +1491,7 @@
-     panel->dirty = 1;
- 
-     /* Status needn't to be split */
--    usable_columns = ((panel->widget.cols-2)/((isstatus)
-+    usable_columns = ((panel->widget.cols-3)/((isstatus)
- 					      ? 1
- 					      : (panel->split+1))) - (!isstatus && panel->split);
- 
-@@ -2100,7 +2271,12 @@
-     { XCTRL('n'), move_down },		/* C-n like emacs */
-     { XCTRL('s'), start_search },	/* C-s like emacs */
-     { ALT('s'),   start_search },	/* M-s not like emacs */
-+#ifndef HAVE_CHARSET
-     { XCTRL('t'), mark_file },
-+#endif
-+#ifdef HAVE_CHARSET
-+    { XCTRL('t'), mark_file },		/* was 'fnc_c_cmd' */
-+#endif
-     { ALT('o'),   chdir_other_panel },
-     { ALT('l'),   chdir_to_readlink },
-     { ALT('H'),   directory_history_list },
-diff -urN mc-4.6.1.orig/src/screen.h mc-4.6.1/src/screen.h
---- mc-4.6.1.orig/src/screen.h	1970-01-01 05:00:00.000000000 +0500
-+++ mc-4.6.1/src/screen.h	2007-01-19 18:33:59.000000000 +0500
-@@ -0,0 +1,11 @@
-+#ifndef __SCREEN_H__
-+#define __SCREEN_H__
-+#include <config.h>
-+
-+#include "global.h"
-+
-+extern void paint_dir (WPanel *panel);
-+extern void display_mini_info (WPanel *panel);
-+extern void show_dir(WPanel *panel);
-+#endif //__SCREEN_H__
-+
-diff -urN mc-4.6.1.orig/src/selcodepage.c mc-4.6.1/src/selcodepage.c
---- mc-4.6.1.orig/src/selcodepage.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/selcodepage.c	2007-01-19 18:33:59.000000000 +0500
-@@ -44,14 +44,16 @@
- }
- 
- int
--select_charset (int current_charset, int seldisplay)
-+select_charset (int current_charset, int seldisplay, const char *title)
- {
-+    int new_charset;
-+
-     int i, menu_lines = n_codepages + 1;
-     char buffer[255];
- 
-     /* Create listbox */
-     Listbox *listbox = create_listbox_window (ENTRY_LEN + 2, menu_lines,
--					      _(" Choose input codepage "),
-+                                              title,
- 					      "[Codepages Translation]");
- 
-     if (!seldisplay)
-@@ -81,20 +83,26 @@
- 
-     i = run_listbox (listbox);
- 
--    return (seldisplay) ? ((i >= n_codepages) ? -1 : i)
--	: (i - 1);
-+    if(i==-1)
-+      i = (seldisplay)
-+          ? ((current_charset < 0) ? n_codepages : current_charset)
-+          : (current_charset + 1);
-+
-+    new_charset =(seldisplay) ? ( (i >= n_codepages) ? -1 : i ) : ( i-1 );
-+    new_charset = (new_charset==-2) ? current_charset:new_charset;
-+    return new_charset;
- }
- 
- /* Helper functions for codepages support */
- 
- 
- int
--do_select_codepage (void)
-+do_select_codepage (const char *title)
- {
-     const char *errmsg;
- 
-     if (display_codepage > 0) {
--	source_codepage = select_charset (source_codepage, 0);
-+	source_codepage = select_charset (source_codepage, 0, title);
- 	errmsg =
- 	    init_translation_table (source_codepage, display_codepage);
- 	if (errmsg) {
-diff -urN mc-4.6.1.orig/src/selcodepage.h mc-4.6.1/src/selcodepage.h
---- mc-4.6.1.orig/src/selcodepage.h	2002-10-31 04:16:16.000000000 +0500
-+++ mc-4.6.1/src/selcodepage.h	2007-01-19 18:33:59.000000000 +0500
-@@ -2,8 +2,8 @@
- #ifndef __SELCODEPAGE_H__
- #define __SELCODEPAGE_H__
- 
--int select_charset (int current_charset, int seldisplay);
--int do_select_codepage (void);
-+int select_charset (int current_charset, int seldisplay, const char *title);
-+int do_select_codepage (const char *title);
- 
- #endif				/* __SELCODEPAGE_H__ */
- #endif				/* HAVE_CHARSET */
-diff -urN mc-4.6.1.orig/src/setup.c mc-4.6.1/src/setup.c
---- mc-4.6.1.orig/src/setup.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/setup.c	2007-01-19 18:33:59.000000000 +0500
-@@ -47,6 +47,8 @@
- 
- #ifdef HAVE_CHARSET
- #include "charsets.h"
-+#include"recode.h"
-+#include "wtools.h"
- #endif
- 
- #ifdef USE_NETCODE
-@@ -255,6 +257,11 @@
-     g_snprintf (buffer, sizeof (buffer), "%d", panel->user_mini_status);
-     save_string (section, "user_mini_status", buffer,
- 			       profile_name);
-+
-+#ifdef HAVE_CHARSET
-+    // save panel codepage
-+    save_string(section, "panel_display_codepage", get_codepage_id(panel->src_codepage), profile_name);
-+#endif
- }
- 
- void
-@@ -352,6 +359,7 @@
- #ifdef HAVE_CHARSET
-     save_string( "Misc", "display_codepage",
-     		 get_codepage_id( display_codepage ), profile_name );
-+    save_string( "Misc", "ftp_codepage", get_codepage_id(ftp_codepage), profile_name);
- #endif /* HAVE_CHARSET */
- 
-     g_free (profile);
-@@ -401,6 +409,31 @@
-     panel->user_mini_status =
- 	load_int (section, "user_mini_status", 0);
- 
-+#ifdef HAVE_CHARSET
-+//--- Loading panel codepage
-+    panel_reset_codepage(panel);
-+    if(load_codepages_list()>0) {
-+      char cpname[128];
-+      char *errmsg;
-+
-+
-+      if(display_codepage>=0) {
-+        load_string(section, "panel_display_codepage", "", cpname, sizeof(cpname));
-+        if(cpname[0]!='\0') panel->src_codepage = get_codepage_index(cpname);
-+      }
-+
-+      errmsg=my_init_tt(display_codepage,panel->src_codepage,panel->tr_table);
-+      if(errmsg) {
-+        panel_reset_codepage(panel);
-+        message( 1, MSG_ERROR, "%s", errmsg );
-+       }
-+      errmsg=my_init_tt(panel->src_codepage,display_codepage,panel->tr_table_input);
-+      if(errmsg) {
-+        panel_reset_codepage(panel);
-+        message( 1, MSG_ERROR, "%s", errmsg );
-+      }
-+    }
-+#endif
- }
- 
- static void
-@@ -543,12 +576,18 @@
- #endif /* USE_VFS && USE_NETCODE */
- 
- #ifdef HAVE_CHARSET
--    if ( load_codepages_list() > 0 ) {
--	char cpname[128];
--	load_string( "Misc", "display_codepage", "",
--		     cpname, sizeof(cpname) );
--	if ( cpname[0] != '\0' )
--	    display_codepage = get_codepage_index( cpname );
-+    if(load_codepages_list() > 0) {
-+      char cpname[128];
-+      get_locale_codepage();
-+      load_string("Misc", "display_codepage", "", cpname, sizeof(cpname));
-+      if(cpname[0] != '\0')  display_codepage=get_codepage_index(cpname);
-+      else display_codepage=lang_codepage;
-+
-+      ftp_codepage=-1;
-+      if(display_codepage >= 0) {
-+        load_string( "Misc", "ftp_codepage", "", cpname, sizeof(cpname));
-+        if(cpname[0] != '\0')  ftp_codepage=get_codepage_index(cpname);
-+      }
-     }
- 
-     init_translation_table( source_codepage, display_codepage );
-diff -urN mc-4.6.1.orig/src/slint.c mc-4.6.1/src/slint.c
---- mc-4.6.1.orig/src/slint.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/slint.c	2007-01-19 18:33:59.000000000 +0500
-@@ -180,6 +180,9 @@
-     struct sigaction act, oact;
-     
-     SLtt_get_terminfo ();
-+#if SLANG_VERSION >= 20000
-+    SLutf8_enable (-1);
-+#endif
- 
-    /*
-     * If the terminal in not in terminfo but begins with a well-known
-diff -urN mc-4.6.1.orig/src/util.c mc-4.6.1/src/util.c
---- mc-4.6.1.orig/src/util.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/util.c	2007-01-19 18:33:59.000000000 +0500
-@@ -32,7 +32,11 @@
- #include <stdarg.h>
- #include <string.h>
- #include <ctype.h>
-+#include <iconv.h>
-+#include <langinfo.h>
-+#include <errno.h>
- 
-+#include "tty.h"
- #include "global.h"
- #include "profile.h"
- #include "main.h"		/* mc_home */
-@@ -44,9 +48,40 @@
- #include "charsets.h"
- #endif
- 
-+#ifdef UTF8
-+#include <wctype.h>
-+#include <wchar.h>
-+#endif
-+
- static const char app_text [] = "Midnight-Commander";
- int easy_patterns = 1;
- 
-+#if SLANG_VERSION >= 20000
-+void SLsmg_write_nwchars(wchar_t *s, size_t n)
-+{
-+    if (SLsmg_is_utf8_mode()) { /* slang can handle it directly */
-+	while(n-- && *s)
-+	    SLsmg_write_char(*s++);
-+    }
-+    else { /* convert wchars back to 8bit encoding */
-+	mbstate_t mbs;
-+	memset (&mbs, 0, sizeof (mbs));
-+	while (n-- && *s) {
-+	    char buf[MB_LEN_MAX + 1]; /* should use 1 char, but to be sure */
-+	    if (*s < 0x80) {
-+		SLsmg_write_char(*s++); /* ASCII */
-+	    }
-+	    else {
-+		if (wcrtomb(buf, *s++, &mbs) == 1)
-+		    SLsmg_write_char((wchar_t)(buf[0]));
-+		else
-+		    SLsmg_write_char('?'); /* should not happen */
-+	    }
-+	}
-+    }
-+}
-+#endif
-+
- extern void str_replace(char *s, char from, char to)
- {
-     for (; *s != '\0'; s++) {
-@@ -77,9 +112,106 @@
-     return (c > 31 && c != 127 && c != 155);
- }
- 
-+size_t
-+mbstrlen (const char *str)
-+{
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode) {
-+        size_t width = 0;
-+
-+        for (; *str; str++) {
-+            wchar_t c;
-+            size_t len;
-+
-+            len = mbrtowc (&c, str, MB_CUR_MAX, NULL);
-+	    
-+            if (len == (size_t)(-1) || len == (size_t)(-2)) break;
-+	    
-+            if (len > 0) {
-+                int wcsize = wcwidth(c);
-+                width += wcsize > 0 ? wcsize : 0;
-+                str += len-1;
-+            }
-+        }
-+
-+        return width;
-+    } else
-+#endif
-+	return strlen (str);
-+}
-+
-+#ifdef UTF8
-+
-+void 
-+fix_utf8(char *str)
-+{
-+    mbstate_t mbs;
-+
-+    char *p = str;
-+
-+    while (*p) {
-+	int len;
-+        memset (&mbs, 0, sizeof (mbs));
-+	len = mbrlen(p, MB_CUR_MAX, &mbs);
-+	if (len == -1) {
-+	    *p = '?';
-+	    p++;
-+	} else if (len > 0) {
-+	    p += len;
-+	} else {
-+	    p++;
-+	}
-+    }
-+}
-+#endif
-+
-+
-+
-+#ifdef UTF8
-+wchar_t *
-+mbstr_to_wchar (const char *str)
-+{
-+    int len = mbstrlen(str);
-+    wchar_t *buf = g_malloc((len+1) * sizeof(wchar_t));
-+    mbstate_t mbs;
-+    memset (&mbs, 0, sizeof (mbs));
-+    mbsrtowcs (buf, &str, len, &mbs);
-+    buf[len] = 0;
-+    return buf;
-+}
-+
-+char *
-+wchar_to_mbstr (const wchar_t *wstr)
-+{
-+    mbstate_t mbs;
-+    const wchar_t *wstr2;
-+    char * string;
-+    int len;
-+
-+    memset (&mbs, 0, sizeof (mbs));
-+    wstr2 = wstr;
-+    len = wcsrtombs(NULL, &wstr2, 0, &mbs);
-+    if (len <= 0) 
-+	return NULL;
-+
-+    string = g_malloc(len + 1);
-+
-+    wstr2 = wstr;
-+    wcsrtombs(string, &wstr2, len, &mbs);
-+    string[len] = 0;
-+    return string;
-+}
-+#endif
-+
-+
-+
- int
- is_printable (int c)
- {
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode)
-+	return iswprint (c);
-+#endif
-     c &= 0xff;
- 
- #ifdef HAVE_CHARSET
-@@ -97,7 +229,7 @@
- #endif				/* !HAVE_CHARSET */
- }
- 
--/* Returns the message dimensions (lines and columns) */
-+/* Returns the message dimensions columns */
- int msglen (const char *text, int *lines)
- {
-     int max = 0;
-@@ -108,8 +240,18 @@
- 	    line_len = 0;
- 	    (*lines)++;
- 	} else {
--	    line_len++;
--	    if (line_len > max)
-+#ifdef UTF8
-+            size_t len;
-+            wchar_t c;
-+
-+            len = mbrtowc (&c, text, MB_CUR_MAX, NULL);
-+            if (len > 0 && len != (size_t)(-1) && len != (size_t)(-2)) {
-+                int wcsize = wcwidth(c);
-+                line_len += wcsize > 0 ? wcsize-1 : -1;
-+                text += len-1;
-+            }
-+#endif
-+            if (++line_len > max)
- 		max = line_len;
- 	}
-     }
-@@ -201,7 +343,24 @@
- 		*d++ = '\\';
- 	    break;
- 	}
-+#ifndef UTF8
- 	*d = *s;
-+#else /* UTF8 */
-+	{
-+	    mbstate_t mbs;
-+           int len;
-+           memset (&mbs, 0, sizeof (mbs));
-+           len = mbrlen(s, MB_CUR_MAX, &mbs);
-+	    if (len > 0) {
-+        	while (len-- > 1)
-+            	    *d++ = *s++;
-+		*d = *s;
-+	    } else {
-+                *d = '?';
-+	    }
-+
-+	}
-+#endif /* UTF8 */
-     }
-     *d = '\0';
-     return ret;
-@@ -222,25 +381,90 @@
- name_trunc (const char *txt, int trunc_len)
- {
-     static char x[MC_MAXPATHLEN + MC_MAXPATHLEN];
--    int txt_len;
-+    int txt_len, first, skip;
-     char *p;
-+    const char *str;
- 
-     if ((size_t) trunc_len > sizeof (x) - 1) {
- 	trunc_len = sizeof (x) - 1;
-     }
--    txt_len = strlen (txt);
--    if (txt_len <= trunc_len) {
--	strcpy (x, txt);
--    } else {
--	int y = (trunc_len / 2) + (trunc_len % 2);
--	strncpy (x, txt, y);
--	strncpy (x + y, txt + txt_len - (trunc_len / 2), trunc_len / 2);
--	x[y] = '~';
--    }
--    x[trunc_len] = 0;
--    for (p = x; *p; p++)
--	if (!is_printable (*p))
--	    *p = '?';
-+    txt_len = mbstrlen (txt);
-+    first = 0;
-+    skip = 0;
-+    if (txt_len > trunc_len) {
-+      first = trunc_len / 2;
-+      skip = txt_len - trunc_len + 1;
-+    }
-+
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode) {
-+      mbstate_t s;
-+      int mbmax;
-+
-+      str = txt;
-+      memset (&s, 0, sizeof (s));
-+      mbmax = MB_CUR_MAX;
-+      p = x;
-+      while (p < x + sizeof (x) - 1 && trunc_len) {
-+	  wchar_t wc;
-+	  int len;
-+
-+	  len = mbrtowc (&wc, str, mbmax, &s);
-+	  if (!len)
-+	      break;
-+	  if (len < 0) {
-+	      memset (&s, 0, sizeof (s));
-+	      *p = '?';
-+	      len = 1;
-+	      str++;
-+	  } else if (!is_printable (wc)) {
-+	      *p = '?';
-+	      str += len;
-+	      len = 1;
-+	  } else if (p >= x + sizeof (x) - len)
-+	      break;
-+	  else {
-+	      memcpy (p, str, len);
-+	      str += len;
-+	  }
-+	  if (first) {
-+	      --trunc_len;
-+	      --first;
-+	      p += len;
-+	      if (!first && p < x + sizeof (x) - 1 && trunc_len) {
-+		  *p++ = '~';
-+		  --trunc_len;
-+	      }
-+	  } else if (skip)
-+	      --skip;
-+	  else {
-+	      --trunc_len;
-+	      p += len;
-+	  }
-+      }
-+    } else
-+#endif
-+    {
-+      str = txt;
-+      p = x;
-+      while (p < x + sizeof (x) - 1) {
-+	  if (*str == '\0')
-+	      break;
-+	  else if (!is_printable (*str))
-+	      *p++ = '?';
-+	  else
-+	      *p++ = *str;
-+	  ++str;
-+	  if (first) {
-+	      --first;
-+	      if (!first) {
-+		  *p++ = '~';
-+		  str += skip;
-+	      }
-+	  }
-+      }
-+    }
-+    *p = '\0';
-     return x;
- }
- 
-@@ -650,11 +874,66 @@
- }
- 
- char *
-+utf8_to_local(char *str)
-+{
-+   iconv_t cd;
-+   size_t buflen;
-+   char *output;
-+   int retry = 1;
-+
-+   if (str == NULL)
-+	   return NULL;
-+   else
-+	   buflen = strlen(str);
-+        
-+   cd = iconv_open (nl_langinfo(CODESET), "UTF-8");
-+   if (cd == (iconv_t) -1) {
-+	return g_strdup(str);
-+   }
-+
-+   output = g_malloc(buflen + 1);
-+     
-+   while (retry)
-+   {
-+	char *wrptr = output;
-+	char *inptr = str;
-+	size_t insize = buflen;
-+	size_t avail = buflen;
-+        size_t nconv;
-+     
-+        nconv = iconv (cd, &inptr, &insize, &wrptr, &avail);
-+        if (nconv == (size_t) -1)
-+        {
-+    	    if (errno == E2BIG)
-+	    {
-+		buflen *= 2;
-+		g_free(output);
-+		output = g_malloc(buflen + 1);
-+	    }
-+	    else
-+	    {
-+		g_free(output);
-+		return g_strdup(str);
-+	    }
-+	}
-+	else {
-+	    retry = 0;
-+	    *wrptr = 0;
-+	}
-+    }
-+     
-+    iconv_close (cd);
-+    
-+    return output;
-+}
-+
-+char *
- load_mc_home_file (const char *filename, char **allocated_filename)
- {
-     char *hintfile_base, *hintfile;
-     char *lang;
-     char *data;
-+    char *conv_data;
- 
-     hintfile_base = concat_dir_and_file (mc_home, filename);
-     lang = guess_message_value ();
-@@ -687,7 +966,10 @@
-     else
- 	g_free (hintfile);
- 
--    return data;
-+    conv_data = utf8_to_local(data);
-+    g_free(data);
-+    
-+    return conv_data;
- }
- 
- /* Check strftime() results. Some systems (i.e. Solaris) have different
-@@ -695,12 +977,14 @@
- size_t i18n_checktimelength (void)
- {
-     size_t length, a, b;
--    char buf [MAX_I18NTIMELENGTH + 1];
-+    char buf [4 * MAX_I18NTIMELENGTH + 1];
-     time_t testtime = time (NULL);
-     
--    a = strftime (buf, sizeof(buf)-1, _("%b %e %H:%M"), localtime(&testtime));
--    b = strftime (buf, sizeof(buf)-1, _("%b %e  %Y"), localtime(&testtime));
--    
-+    strftime (buf, sizeof(buf)-1, _("%b %e %H:%M"), localtime(&testtime));
-+    a = mbstrlen (buf);
-+    strftime (buf, sizeof(buf)-1, _("%b %e  %Y"), localtime(&testtime));
-+    b = mbstrlen (buf);
-+
-     length = max (a, b);
-     
-     /* Don't handle big differences. Use standard value (email bug, please) */
-@@ -712,15 +996,12 @@
- 
- const char *file_date (time_t when)
- {
--    static char timebuf [MAX_I18NTIMELENGTH + 1];
-+    static char timebuf [4 * MAX_I18NTIMELENGTH + 1];
-     time_t current_time = time ((time_t) 0);
--    static size_t i18n_timelength = 0;
-     static const char *fmtyear, *fmttime;
-     const char *fmt;
- 
--    if (i18n_timelength == 0){
--	i18n_timelength = i18n_checktimelength() + 1;
--	
-+    if (fmtyear == NULL) {
- 	/* strftime() format string for old dates */
- 	fmtyear = _("%b %e  %Y");
- 	/* strftime() format string for recent dates */
-@@ -740,7 +1021,7 @@
-     else
- 	fmt = fmttime;
-     
--    strftime (timebuf, i18n_timelength, fmt, localtime(&when));
-+    strftime (timebuf, sizeof (timebuf) - 1, fmt, localtime(&when));
-     return timebuf;
- }
- 
-@@ -863,10 +1144,27 @@
- 		r++;
- 	    continue;
- 	}
--
-+#ifndef UTF8
- 	if (is_printable(*r))
- 	    *w++ = *r;
- 	++r;
-+#else /* UTF8 */
-+	{
-+	    mbstate_t mbs;
-+           int len;
-+	    memset (&mbs, 0, sizeof (mbs));
-+	    len = mbrlen(r, MB_CUR_MAX, &mbs);
-+		
-+	    if (len > 0 && (unsigned char)*r >= ' ') 
-+		while (len--)
-+		    *w++ = *r++;
-+	    else {
-+		if (len == -1)
-+		    *w++ = '?';
-+		r++;
-+	    }
-+	}
-+#endif /* UTF8 */
-     }
-     *w = 0;
-     return s;
-@@ -1140,21 +1438,23 @@
-  * as needed up in first and then goes down using second */
- char *diff_two_paths (const char *first, const char *second) 
- {
--    char *p, *q, *r, *s, *buf = 0;
-+    char *p, *q, *r, *s, *buf = NULL;
-     int i, j, prevlen = -1, currlen;
-     char *my_first = NULL, *my_second = NULL;
-     
-     my_first = resolve_symlinks (first);
-     if (my_first == NULL)
-         return NULL;
-+    my_second= resolve_symlinks (second);
-+    if (my_second == NULL) {
-+	g_free (my_first);
-+	return NULL;
-+    }
-     for (j = 0; j < 2; j++) {
- 	p = my_first;
- 	if (j) {
--	    my_second = resolve_symlinks (second);
--	    if (my_second == NULL) {
--		g_free (my_first);
-+	    if (my_second == NULL)
- 	        return buf;
--	    }
- 	}
- 	q = my_second;
- 	for (;;) {
-diff -urN mc-4.6.1.orig/src/util.h mc-4.6.1/src/util.h
---- mc-4.6.1.orig/src/util.h	2005-01-14 00:20:47.000000000 +0500
-+++ mc-4.6.1/src/util.h	2007-01-19 18:33:59.000000000 +0500
-@@ -93,6 +93,13 @@
- char *get_group (int);
- char *get_owner (int);
- 
-+void fix_utf8(char *str);
-+size_t mbstrlen (const char *);
-+wchar_t *mbstr_to_wchar (const char *);
-+char *wchar_to_mbstr (const wchar_t *);
-+char *utf8_to_local(char *str);
-+
-+
- #define MAX_I18NTIMELENGTH 14
- #define MIN_I18NTIMELENGTH 10
- #define STD_I18NTIMELENGTH 12
-@@ -210,7 +217,7 @@
- #define PATH_ENV_SEP ':'
- #define TMPDIR_DEFAULT "/tmp"
- #define SCRIPT_SUFFIX ""
--#define get_default_editor() "vi"
-+#define get_default_editor() "editor"
- #define OS_SORT_CASE_SENSITIVE_DEFAULT 1
- #define STRCOMP strcmp
- #define STRNCOMP strncmp
-diff -urN mc-4.6.1.orig/src/view.c mc-4.6.1/src/view.c
---- mc-4.6.1.orig/src/view.c	2005-05-27 20:19:18.000000000 +0600
-+++ mc-4.6.1/src/view.c	2007-01-19 18:33:59.000000000 +0500
-@@ -36,6 +36,10 @@
- #include <errno.h>
- #include <limits.h>
- 
-+#ifdef UTF8
-+#include <wctype.h>
-+#endif /* UTF8 */
-+
- #include "global.h"
- #include "tty.h"
- #include "cmd.h"		/* For view_other_cmd */
-@@ -793,7 +797,7 @@
- 
-     if (!i18n_adjust) {
- 	file_label = _("File: %s");
--	i18n_adjust = strlen (file_label) - 2;
-+	i18n_adjust = mbstrlen (file_label) - 2;
-     }
- 
-     if (w < i18n_adjust + 6)
-@@ -849,7 +853,11 @@
- 	widget_erase ((Widget *) view);
- }
- 
-+#ifndef UTF8
- #define view_add_character(view,c) addch (c)
-+#else /* UTF8 */
-+#define view_add_character(view,c) {wchar_t tmp=c; SLsmg_write_nwchars(&tmp, 1);}
-+#endif /* UTF8 */
- #define view_add_one_vline()       one_vline()
- #define view_add_string(view,s)    addstr (s)
- #define view_gotoyx(v,r,c)    widget_move (v,r,c)
-@@ -1071,6 +1079,12 @@
- 	if (view->growing_buffer && from == view->last_byte)
- 	    get_byte (view, from);
- 	for (; row < height && from < view->last_byte; from++) {
-+#ifdef UTF8
-+            mbstate_t mbs;
-+            char mbbuf[MB_LEN_MAX];
-+            int mblen;
-+            wchar_t wc;
-+#endif /* UTF8 */
- 	    c = get_byte (view, from);
- 	    if ((c == '\n') || (col >= width && view->wrap_mode)) {
- 		col = frame_shift;
-@@ -1084,7 +1098,37 @@
- 		col = ((col - frame_shift) / 8) * 8 + 8 + frame_shift;
- 		continue;
- 	    }
-+#ifndef UTF8
- 	    if (view->viewer_nroff_flag && c == '\b') {
-+#else /* UTF8 */
-+                mblen = 1;
-+                mbbuf[0] = convert_to_display_c (c);
-+
-+                while (mblen < MB_LEN_MAX) {
-+                    int res;
-+                    memset (&mbs, 0, sizeof (mbs));
-+                    res = mbrtowc (&wc, mbbuf, mblen, &mbs);
-+                    if (res <= 0 && res != -2) {
-+                        wc = '.';
-+                        mblen = 1;
-+                        break;
-+                    }
-+                    if (res == mblen)
-+                        break;
-+
-+                    mbbuf[mblen] = convert_to_display_c (get_byte (view, from + mblen));
-+                    mblen++;
-+                }
-+
-+                if (mblen == MB_LEN_MAX) {
-+                    wc = '.';
-+                    mblen = 1;
-+                }
-+
-+                from += mblen - 1;
-+
-+            if (view->viewer_nroff_flag && wc == '\b') {
-+#endif /* UTF8 */
- 		int c_prev;
- 		int c_next;
- 
-@@ -1122,12 +1166,23 @@
- 		&& col < width - view->start_col) {
- 		view_gotoyx (view, row, col + view->start_col);
- 
-+#ifndef UTF8
- 		c = convert_to_display_c (c);
--
- 		if (!is_printable (c))
- 		    c = '.';
--
- 		view_add_character (view, c);
-+#else /* UTF8 */
-+		if (!iswprint (wc))
-+		    wc = '.';
-+		view_add_character (view, wc);
-+
-+		{
-+		    int cw = wcwidth(wc);
-+		    if (cw > 1)
-+			col+= cw - 1;
-+		}
-+#endif /* UTF8 */
-+
- 	    }
- 	    col++;
- 	    if (boldflag != MARK_NORMAL) {
-@@ -1239,7 +1294,12 @@
- 	    if (lines != -1 && line >= lines)
- 		return p;
- 
--	    c = get_byte (view, p);
-+		if ((c = get_byte (view, p)) == -1) {
-+		if (upto)
-+			return line;
-+	    else
-+        	return p;
-+	    }
- 
- 	    if (view->wrap_mode) {
- 		if (c == '\r')
-@@ -2534,7 +2594,7 @@
- 
- #ifdef HAVE_CHARSET
-     case XCTRL ('t'):
--	do_select_codepage ();
-+	do_select_codepage (_(" Choose codepage "));
- 	view->dirty++;
- 	view_update (view, TRUE);
- 	return MSG_HANDLED;
-diff -urN mc-4.6.1.orig/src/widget.c mc-4.6.1/src/widget.c
---- mc-4.6.1.orig/src/widget.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/src/widget.c	2007-01-19 18:33:59.000000000 +0500
-@@ -33,6 +33,9 @@
- #include <ctype.h>
- #include "global.h"
- #include "tty.h"
-+#ifdef UTF8
-+#include <wctype.h>
-+#endif /* UTF8 */
- #include "color.h"
- #include "mouse.h"
- #include "dialog.h"
-@@ -148,6 +151,11 @@
- 	if (b->hotpos >= 0) {
- 	    attrset ((b->selected) ? HOT_FOCUSC : HOT_NORMALC);
- 	    widget_move (&b->widget, 0, b->hotpos + off);
-+#ifdef UTF8
-+	    if (SLsmg_Is_Unicode) 
-+		SLsmg_write_nwchars (&b->hotwc, 1);
-+	    else
-+#endif
- 	    addch ((unsigned char) b->text[b->hotpos]);
- 	}
- 	return MSG_HANDLED;
-@@ -179,7 +187,7 @@
- static int
- button_len (const char *text, unsigned int flags)
- {
--    int ret = strlen (text);
-+    int ret = mbstrlen (text);
-     switch (flags){
- 	case DEFPUSH_BUTTON:
- 	    ret += 6;
-@@ -202,14 +210,36 @@
-  * the button text is g_malloc()ed, we can safely change and shorten it.
-  */
- static void
--button_scan_hotkey (WButton *b)
-+scan_hotkey (char *text, int *hotposp, int *hotkeyp, wchar_t *hotwcp)
- {
--    char *cp = strchr (b->text, '&');
-+    char *cp = strchr (text, '&');
- 
-     if (cp != NULL && cp[1] != '\0') {
--	g_strlcpy (cp, cp + 1, strlen (cp));
--	b->hotkey = tolower (*cp);
--	b->hotpos = cp - b->text;
-+#ifdef UTF8
-+    if (SLsmg_Is_Unicode) {
-+        mbstate_t s;
-+        int len;
-+
-+        *cp = '\0';
-+        memset (&s, 0, sizeof (s));
-+        len = mbrtowc (hotwcp, cp + 1, MB_CUR_MAX, &s);
-+        if (len > 0) {
-+            *hotposp = mbstrlen (text);
-+            if (*hotposp < 0) {
-+                *hotposp = -1;
-+            } else {
-+                /* FIXME */
-+                *hotkeyp = tolower (*hotwcp);
-+            }
-+        }
-+      } else
-+#endif
-+      {
-+        *hotkeyp = tolower (cp[1]);
-+        *hotposp = cp - text;
-+      }
-+
-+      memmove (cp, cp + 1, strlen (cp + 1) + 1);
-     }
- }
- 
-@@ -231,22 +261,23 @@
-     widget_want_hotkey (b->widget, 1);
-     b->hotkey = 0;
-     b->hotpos = -1;
-+    b->hotwc = L'\0';
- 
--    button_scan_hotkey(b);
-+    scan_hotkey(b->text, &b->hotpos, &b->hotkey, &b->hotwc);
-     return b;
- }
- 
- void
- button_set_text (WButton *b, const char *text)
- {
--   g_free (b->text);
-+    g_free (b->text);
-     b->text = g_strdup (text);
-     b->widget.cols = button_len (text, b->flags);
--    button_scan_hotkey(b);
-+    scan_hotkey(b->text, &b->hotpos, &b->hotkey, &b->hotwc);
-     dlg_redraw (b->widget.parent);
- }
- 
--
-+
- /* Radio button widget */
- static int radio_event (Gpm_Event *event, WRadio *r);
- 
-@@ -320,16 +351,37 @@
- 	    widget_move (&r->widget, i, 0);
- 
- 	    printw ("(%c) ", (r->sel == i) ? '*' : ' ');
--	    for (cp = r->texts[i]; *cp; cp++) {
--		if (*cp == '&') {
--		    attrset ((i == r->pos && msg == WIDGET_FOCUS)
--			     ? HOT_FOCUSC : HOT_NORMALC);
--		    addch (*++cp);
--		    attrset ((i == r->pos
--			      && msg == WIDGET_FOCUS) ? FOCUSC : NORMALC);
-+	    cp = strchr (r->texts[i], '&');
-+	    if (cp != NULL) {
-+#ifdef UTF8
-+		mbstate_t s;
-+		wchar_t wc;
-+		int len;
-+#endif
-+		printw ("%.*s", (int) ((char *) cp - r->texts[i]),
-+			r->texts[i]);
-+		attrset ((i == r->pos && msg == WIDGET_FOCUS)
-+			 ? HOT_FOCUSC : HOT_NORMALC);
-+#ifdef UTF8
-+		if (SLsmg_Is_Unicode) {
-+		    memset (&s, 0, sizeof (s));
-+		    len = mbrtowc (&wc, cp + 1, MB_CUR_MAX, &s);
-+		    ++cp;
-+		    if (len > 0) {
-+			printw ("%.*s", len, cp);
-+			cp += len;
-+		    }
- 		} else
--		    addch (*cp);
--	    }
-+#endif
-+		{
-+		    addch (*++cp);
-+		    ++cp;
-+		}
-+		attrset ((i == r->pos && msg == WIDGET_FOCUS)
-+			 ? FOCUSC : NORMALC);
-+	    } else
-+		cp = r->texts[i];
-+	    addstr ((char *) cp);
- 	}
- 	return MSG_HANDLED;
- 
-@@ -365,7 +417,7 @@
-     /* Compute the longest string */
-     max = 0;
-     for (i = 0; i < count; i++){
--	m = strlen (texts [i]);
-+	m = mbstrlen (texts [i]);
- 	if (m > max)
- 	    max = m;
-     }
-@@ -426,6 +478,11 @@
- 	if (c->hotpos >= 0) {
- 	    attrset ((msg == WIDGET_FOCUS) ? HOT_FOCUSC : HOT_NORMALC);
- 	    widget_move (&c->widget, 0, +c->hotpos + 4);
-+#ifdef UTF8
-+	    if (SLsmg_Is_Unicode)
-+		SLsmg_write_nwchars (&c->hotwc, 1);
-+	    else
-+#endif
- 	    addch ((unsigned char) c->text[c->hotpos]);
- 	}
- 	return MSG_HANDLED;
-@@ -460,32 +517,18 @@
- check_new (int y, int x, int state, const char *text)
- {
-     WCheck *c =  g_new (WCheck, 1);
--    const char *s;
--    char *t;
-     
--    init_widget (&c->widget, y, x, 1, strlen (text),
-+    init_widget (&c->widget, y, x, 1, mbstrlen (text),
- 		 (callback_fn)check_callback,
- 		 (mouse_h) check_event);
-     c->state = state ? C_BOOL : 0;
-     c->text = g_strdup (text);
-     c->hotkey = 0;
-     c->hotpos = -1;
-+    c->hotwc = L'\0';
-     widget_want_hotkey (c->widget, 1);
- 
--    /* Scan for the hotkey */
--    for (s = text, t = c->text; *s; s++, t++){
--	if (*s != '&'){
--	    *t = *s;
--	    continue;
--	}
--	s++;
--	if (*s){
--	    c->hotkey = tolower (*s);
--	    c->hotpos = t - c->text;
--	}
--	*t = *s;
--    }
--    *t = 0;
-+    scan_hotkey (c->text, &c->hotpos, &c->hotkey, &c->hotwc);
-     return c;
- }
- 
-@@ -527,7 +570,7 @@
- 		}
- 		widget_move (&l->widget, y, 0);
- 		printw ("%s", p);
--		xlen = l->widget.cols - strlen (p);
-+		xlen = l->widget.cols - mbstrlen (p);
- 		if (xlen > 0)
- 		    printw ("%*s", xlen, " ");
- 		if (!q)
-@@ -561,7 +604,7 @@
-     if (text){
- 	label->text = g_strdup (text);
- 	if (label->auto_adjust_cols) {
--	    newcols = strlen (text);
-+	    newcols = mbstrlen (text);
- 	    if (newcols > label->widget.cols)
- 	    label->widget.cols = newcols;
- 	}
-@@ -585,7 +628,7 @@
-     if (!text || strchr(text, '\n'))
- 	width = 1;
-     else
--	width = strlen (text);
-+	width = mbstrlen (text);
- 
-     l = g_new (WLabel, 1);
-     init_widget (&l->widget, y, x, 1, width,
-@@ -734,13 +777,69 @@
- /* Pointer to killed data */
- static char *kill_buffer = 0;
- 
-+#ifdef UTF8
-+static int
-+charpos(WInput *in, int idx)
-+{
-+    int i, pos, l, len;
-+    mbstate_t mbs;
-+    memset (&mbs, 0, sizeof (mbs));
-+    i = 0;
-+    pos = 0;
-+    len = strlen(in->buffer);
-+
-+    while (in->buffer[pos]) {
-+	if (i == idx)
-+	    return pos;
-+	l = mbrlen(in->buffer + pos, len - pos, &mbs);
-+	if (l <= 0)
-+	    return pos;
-+	pos+=l;
-+	i++;
-+    };
-+    return pos;
-+}
-+
-+static int
-+charcolumn(WInput *in, int idx)
-+{
-+    int i, pos, l, width, len;
-+    mbstate_t mbs;
-+    memset (&mbs, 0, sizeof (mbs));
-+    i = 0;
-+    pos = 0; width = 0;
-+    len = strlen(in->buffer);
-+
-+    while (in->buffer[pos]) {
-+	wchar_t wc;
-+	if (i == idx)
-+	    return width;
-+	l = mbrtowc(&wc, in->buffer + pos, len - pos, &mbs);
-+	if (l <= 0)
-+	    return width;
-+	pos += l; width += wcwidth(wc);
-+	i++;
-+    };
-+    return width;
-+}
-+#else
-+#define charpos(in, idx) (idx)
-+#define charcolumn(in, idx) (idx)
-+#endif /* UTF8 */
-+
- void
- update_input (WInput *in, int clear_first)
- {
-     int has_history = 0;
-     int    i, j;
--    unsigned char   c;
--    int    buf_len = strlen (in->buffer);
-+    int    buf_len = mbstrlen (in->buffer);
-+#ifndef UTF8
-+    unsigned char c;
-+#else /* UTF8 */
-+    wchar_t c;
-+    mbstate_t mbs;
-+    memset (&mbs, 0, sizeof (mbs));
-+#endif /* UTF8 */
- 
-     if (should_show_history_button (in))
- 	has_history = HISTORY_BUTTON_WIDTH;
-@@ -750,7 +849,7 @@
- 
-     /* Make the point visible */
-     if ((in->point < in->first_shown) ||
--	(in->point >= in->first_shown+in->field_len - has_history)){
-+	(charcolumn(in, in->point) >= charcolumn(in, in->first_shown) + in->field_len - has_history)){
- 	in->first_shown = in->point - (in->field_len / 3);
- 	if (in->first_shown < 0)
- 	    in->first_shown = 0;
-@@ -770,14 +869,29 @@
- 	addch (' ');
-     widget_move (&in->widget, 0, 0);
-     
-+#ifndef UTF8
-     for (i = 0, j = in->first_shown; i < in->field_len - has_history && in->buffer [j]; i++){
- 	c = in->buffer [j++];
- 	c = is_printable (c) ? c : '.';
--	if (in->is_password)
-+#else /* UTF8 */
-+    for (i = 0, j = in->first_shown; (i < in->field_len - has_history) && (j < buf_len); i++,j++){
-+	char * chp = in->buffer + charpos(in,j);
-+	size_t res = mbrtowc(&c, chp, strlen(chp), &mbs);
-+	c = (res && iswprint (c)) ? 0 : '.';
-+#endif /* UTF8 */
-+	if (in->is_password) 
- 	    c = '*';
-+#ifndef UTF8
- 	addch (c);
-+#else /* UTF8 */
-+	if (c) {
-+	    addch (c); 
-+	}
-+	else
-+	    SLsmg_write_nchars (chp, res);
-+#endif /* UTF8 */
-     }
--    widget_move (&in->widget, 0, in->point - in->first_shown);
-+    widget_move (&in->widget, 0, charcolumn(in, in->point) - charcolumn(in, in->first_shown));
- 
-     if (clear_first)
- 	    in->first = 0;
-@@ -919,7 +1033,7 @@
- show_hist (GList *history, int widget_x, int widget_y)
- {
-     GList *hi, *z;
--    size_t maxlen = strlen (i18n_htitle ()), i, count = 0;
-+    size_t maxlen = mbstrlen (i18n_htitle ()), i, count = 0;
-     int x, y, w, h;
-     char *q, *r = 0;
-     Dlg_head *query_dlg;
-@@ -932,7 +1046,7 @@
-     z = g_list_first (history);
-     hi = z;
-     while (hi) {
--	if ((i = strlen ((char *) hi->data)) > maxlen)
-+	if ((i = mbstrlen ((char *) hi->data)) > maxlen)
- 	    maxlen = i;
- 	count++;
- 	hi = g_list_next (hi);
-@@ -1104,35 +1218,83 @@
-     in->need_push = 1;
-     in->buffer [0] = 0;
-     in->point = 0;
-+    in->charpoint = 0;
-     in->mark = 0;
-     free_completions (in);
-     update_input (in, 0);
- }
- 
-+static void
-+move_buffer_backward (WInput *in, int point)
-+{
-+    int i, pos, len;
-+    int str_len = mbstrlen (in->buffer);
-+    if (point >= str_len) return;
-+
-+    pos = charpos(in,point);
-+    len = charpos(in,point + 1) - pos;
-+
-+    for (i = pos; in->buffer [i + len - 1]; i++)
-+	in->buffer [i] = in->buffer [i + len];
-+}
-+
- static cb_ret_t
- insert_char (WInput *in, int c_code)
- {
-     size_t i;
-+#ifdef UTF8
-+    mbstate_t mbs;
-+    int res;
-+
-+    memset (&mbs, 0, sizeof (mbs));
-+#else
-+    in->charpoint = 0;
-+#endif /* UTF8 */
- 
-     if (c_code == -1)
- 	return MSG_NOT_HANDLED;
-     
-+#ifdef UTF8
-+    if (in->charpoint >= MB_CUR_MAX) return 1;
-+
-+    in->charbuf[in->charpoint++] = c_code;
-+
-+    res = mbrlen((char *)in->charbuf, in->charpoint, &mbs);
-+    if (res < 0) {
-+	if (res != -2) in->charpoint = 0; /* broken multibyte char, skip */
-+        return 1;
-+    }
-+
-+#endif /* UTF8 */
-     in->need_push = 1;
--    if (strlen (in->buffer)+1 == (size_t) in->current_max_len){
-+    if (strlen (in->buffer) + 1 + in->charpoint >= (size_t) in->current_max_len){
- 	/* Expand the buffer */
--	char *narea = g_realloc (in->buffer, in->current_max_len + in->field_len);
-+	char *narea = g_realloc (in->buffer, in->current_max_len + in->field_len + in->charpoint);
- 	if (narea){
- 	    in->buffer = narea;
--	    in->current_max_len += in->field_len;
-+	    in->current_max_len += in->field_len + in->charpoint;
- 	}
-     }
-+#ifndef UTF8
-     if (strlen (in->buffer)+1 < (size_t) in->current_max_len){
- 	size_t l = strlen (&in->buffer [in->point]);
- 	for (i = l+1; i > 0; i--)
- 	    in->buffer [in->point+i] = in->buffer [in->point+i-1];
- 	in->buffer [in->point] = c_code;
-+#else /* UTF8 */
-+    if (strlen (in->buffer) + in->charpoint < in->current_max_len){
-+        size_t ins_point = charpos(in,in->point); /* bytes from begin */
-+	/* move chars */
-+	size_t rest_bytes = strlen (in->buffer + ins_point);
-+
-+	for (i = rest_bytes + 1; i > 0; i--) 
-+	    in->buffer [ins_point + i + in->charpoint - 1] = in->buffer [ins_point + i - 1];
-+
-+	memcpy(in->buffer + ins_point, in->charbuf, in->charpoint); 
-+#endif /* UTF8 */
- 	in->point++;
-     }
-+    in->charpoint = 0;
-     return MSG_HANDLED;
- }
- 
-@@ -1140,12 +1302,14 @@
- beginning_of_line (WInput *in)
- {
-     in->point = 0;
-+    in->charpoint = 0;
- }
- 
- static void
- end_of_line (WInput *in)
- {
--    in->point = strlen (in->buffer);
-+    in->point = mbstrlen (in->buffer);
-+    in->charpoint = 0;
- }
- 
- static void
-@@ -1153,18 +1317,21 @@
- {
-     if (in->point)
- 	in->point--;
-+    in->charpoint = 0;
- }
- 
- static void
- forward_char (WInput *in)
- {
--    if (in->buffer [in->point])
-+    if (in->buffer [charpos(in,in->point)])
- 	in->point++;
-+    in->charpoint = 0;
- }
- 
- static void
- forward_word (WInput *in)
- {
-+#ifndef UTF8
-     unsigned char *p = in->buffer+in->point;
- 
-     while (*p && (isspace (*p) || ispunct (*p)))
-@@ -1172,11 +1339,39 @@
-     while (*p && isalnum (*p))
- 	p++;
-     in->point = p - in->buffer;
-+#else /* UTF8 */
-+    mbstate_t mbs;
-+    int len = mbstrlen (in->buffer);
-+    memset (&mbs, 0, sizeof (mbs));
-+
-+    while (in->point < len) {
-+        wchar_t c;
-+        char *p = in->buffer + charpos(in,in->point);
-+        size_t res = mbrtowc(&c, p, strlen(p), &mbs);
-+        if (res <= 0 || !(iswspace (c) || iswpunct (c)))
-+            break;
-+        in->point++;
-+    }
-+
-+    memset (&mbs, 0, sizeof (mbs));
-+
-+    while (in->point < len) {
-+        wchar_t c;
-+        char *p = in->buffer + charpos(in,in->point);
-+        size_t res = mbrtowc(&c, p, strlen(p), &mbs);
-+        if (res <= 0 || !iswalnum (c))
-+            break;
-+        in->point++;
-+    }
-+
-+    in->charpoint = 0;
-+#endif /* UTF8 */
- }
- 
- static void
- backward_word (WInput *in)
- {
-+#ifndef UTF8
-     unsigned char *p = in->buffer+in->point;
- 
-     while (p-1 > in->buffer-1 && (isspace (*(p-1)) || ispunct (*(p-1))))
-@@ -1184,6 +1379,32 @@
-     while (p-1 > in->buffer-1 && isalnum (*(p-1)))
- 	p--;
-     in->point = p - in->buffer;
-+#else /* UTF8 */
-+    mbstate_t mbs;
-+
-+    memset (&mbs, 0, sizeof (mbs));
-+    while (in->point > 0) {
-+      wchar_t c;
-+      char *p = in->buffer + charpos(in,in->point);
-+      size_t res = mbrtowc(&c, p, strlen(p), &mbs);
-+      if (*p && (res <= 0 || !(iswspace (c) || iswpunct (c))))
-+          break;
-+      in->point--;
-+    }
-+
-+    memset (&mbs, 0, sizeof (mbs));
-+
-+    while (in->point > 0) {
-+      wchar_t c;
-+      char *p = in->buffer + charpos(in,in->point);
-+      size_t res = mbrtowc(&c, p, strlen(p), &mbs);
-+      if (*p && (res <= 0 || !iswalnum (c)))
-+          break;
-+      in->point--;
-+    }
-+
-+    in->charpoint = 0;
-+#endif /* UTF8 */
- }
- 
- static void
-@@ -1216,8 +1437,9 @@
-     
-     if (!in->point)
- 	return;
--    for (i = in->point; in->buffer [i-1]; i++)
--	in->buffer [i-1] = in->buffer [i];
-+
-+    move_buffer_backward(in, in->point - 1);    
-+    in->charpoint = 0;
-     in->need_push = 1;
-     in->point--;
- }
-@@ -1225,10 +1447,8 @@
- static void
- delete_char (WInput *in)
- {
--    int i;
--
--    for (i = in->point; in->buffer [i]; i++)
--	in->buffer [i] = in->buffer [i+1];
-+    move_buffer_backward(in, in->point);    
-+    in->charpoint = 0;
-     in->need_push = 1;
- }
- 
-@@ -1243,6 +1463,9 @@
-     
-     g_free (kill_buffer);
- 
-+    first=charpos(in,first);
-+    last=charpos(in,last);
-+    
-     kill_buffer = g_strndup(in->buffer+first,last-first);
- }
- 
-@@ -1251,11 +1474,13 @@
- {
-    int first = min (x_first, x_last);
-    int last  = max (x_first, x_last);
--   size_t len = strlen (&in->buffer [last]) + 1;
-+   size_t len;
- 
-    in->point = first;
-    in->mark  = first;
--   memmove (&in->buffer [first], &in->buffer [last], len);
-+   len = strlen (&in->buffer [charpos(in,last)]) + 1;
-+   memmove (&in->buffer [charpos(in,first)], &in->buffer [charpos(in,last)], len);
-+   in->charpoint = 0;
-    in->need_push = 1;
- }
- 
-@@ -1272,6 +1497,8 @@
-     copy_region (in, old_point, new_point);
-     delete_region (in, old_point, new_point);
-     in->need_push = 1;
-+    in->charpoint = 0;
-+    in->charpoint = 0;
- }
- 
- static void
-@@ -1315,16 +1542,20 @@
-     
-     if (!kill_buffer)
-         return;
-+    in->charpoint = 0;
-     for (p = kill_buffer; *p; p++)
- 	insert_char (in, *p);
-+    in->charpoint = 0;
- }
- 
- static void
- kill_line (WInput *in)
- {
-+    int chp = charpos(in,in->point);
-     g_free (kill_buffer);
--    kill_buffer = g_strdup (&in->buffer [in->point]);
--    in->buffer [in->point] = 0;
-+    kill_buffer = g_strdup (&in->buffer [chp]);
-+    in->buffer [chp] = 0;
-+    in->charpoint = 0;
- }
- 
- void
-@@ -1334,9 +1565,10 @@
-     g_free (in->buffer);
-     in->buffer = g_strdup (text);	/* was in->buffer->text */
-     in->current_max_len = strlen (in->buffer) + 1;
--    in->point = strlen (in->buffer);
-+    in->point = mbstrlen (in->buffer);
-     in->mark = 0;
-     in->need_push = 1;
-+    in->charpoint = 0;
- }
- 
- static void
-@@ -1461,6 +1693,7 @@
-     *in->buffer = 0;
-     in->point = 0;
-     in->first = 0;
-+    in->charpoint = 0;
- }
- 
- cb_ret_t
-@@ -1489,7 +1722,11 @@
- 	}
-     }
-     if (!input_map [i].fn){
-+#ifndef UTF8
- 	if (c_code > 255 || !is_printable (c_code))
-+#else /* UTF8 */
-+	if (c_code > 255)
-+#endif /* UTF8 */
- 	    return MSG_NOT_HANDLED;
- 	if (in->first){
- 	    port_region_marked_for_delete (in);
-@@ -1523,6 +1760,9 @@
-     if (pos != in->point)
-     	free_completions (in);
-     in->point = pos;
-+#ifdef UTF8
-+    in->charpoint = 0;
-+#endif /* UTF8 */
-     update_input (in, 1);
- }
- 
-@@ -1562,7 +1802,7 @@
- 	return MSG_HANDLED;
- 
-     case WIDGET_CURSOR:
--	widget_move (&in->widget, 0, in->point - in->first_shown);
-+        widget_move (&in->widget, 0, charcolumn(in, in->point) - charcolumn(in, in->first_shown));
- 	return MSG_HANDLED;
- 
-     case WIDGET_DESTROY:
-@@ -1584,7 +1824,7 @@
- 	    && should_show_history_button (in)) {
- 	    do_show_hist (in);
- 	} else {
--	    in->point = strlen (in->buffer);
-+	    in->point = mbstrlen (in->buffer);
- 	    if (event->x - in->first_shown - 1 < in->point)
- 		in->point = event->x - in->first_shown - 1;
- 	    if (in->point < 0)
-@@ -1642,56 +1882,91 @@
-     in->is_password = 0;
- 
-     strcpy (in->buffer, def_text);
--    in->point = strlen (in->buffer);
-+    in->point = mbstrlen (in->buffer);
-+    in->charpoint = 0;
-     return in;
- }
- 
--
--/* Listbox widget */
-+/* Vertical scrollbar widget */
- 
--/* Should draw the scrollbar, but currently draws only
-- * indications that there is more information
-- */
--static int listbox_cdiff (WLEntry *s, WLEntry *e);
--
--static void
--listbox_drawscroll (WListbox *l)
-+void
-+vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
-+            int selected, int count, gboolean color)
- {
-     int line;
--    int i, top;
--    int max_line = l->height-1;
--    
-+    int i;
-+
-     /* Are we at the top? */
--    widget_move (&l->widget, 0, l->width);
--    if (l->list == l->top)
--	one_vline ();
-+    widget_move (&widget, tpad, width);
-+#ifndef UTF8
-+    if (!selected)
-+        one_vline ();
-+    else
-+        addch ('^');
-+#else
-+    if (color) attrset (MARKED_COLOR);
-+    if (is_utf8)
-+	SLsmg_write_string("▲");
-     else
--	addch ('^');
-+        addch ('^');
-+    if (color) attrset (NORMAL_COLOR);
-+#endif
- 
-     /* Are we at the bottom? */
--    widget_move (&l->widget, max_line, l->width);
--    top = listbox_cdiff (l->list, l->top);
--    if ((top + l->height == l->count) || l->height >= l->count)
--	one_vline ();
-+    widget_move (&widget, height-1-bpad, width);
-+#ifndef UTF8
-+    if (selected == count-1)
-+        one_vline ();
-+    else
-+        addch ('v');
-+#else
-+    if (color) attrset (MARKED_COLOR);
-+    if (is_utf8)
-+	SLsmg_write_string("▼");
-     else
--	addch ('v');
-+	addch('v');
-+    if (color) attrset (NORMAL_COLOR);
-+#endif
- 
-     /* Now draw the nice relative pointer */
--    if (l->count)
--	line = 1+ ((l->pos * (l->height-2)) / l->count);
-+    if (count > 1)
-+        line = tpad + 1 + ((selected * (height-3-tpad-bpad)) / (count-1));
-     else
--	line = 0;
--    
--    for (i = 1; i < max_line; i++){
--	widget_move (&l->widget, i, l->width);
--	if (i != line)
--	    one_vline ();
--	else
--	    addch ('*');
-+        line = 0;
-+
-+    for (i = tpad + 1; i < height-1-bpad; i++){
-+        widget_move (&widget, i, width);
-+        if (i != line)
-+#ifndef UTF8
-+            one_vline ();
-+        else
-+            addch ('*');
-+#else
-+            if (is_utf8)
-+		SLsmg_write_string("▒");
-+	    else
-+		one_vline();
-+        else {
-+            if (color) attrset (MARKED_COLOR);
-+            if (is_utf8)
-+		SLsmg_write_string("●");
-+	    else
-+		addch('*');
-+            if (color) attrset (NORMAL_COLOR);
-+        }
-+#endif
-     }
- }
--    
--static void
-+
-+
-+/* Listbox widget */
-+
-+/* Should draw the scrollbar, but currently draws only
-+ * indications that there is more information
-+ */
-+static int listbox_cdiff (WLEntry *s, WLEntry *e);
-+
-+void
- listbox_draw (WListbox *l, int focused)
- {
-     WLEntry *e;
-@@ -1732,7 +2007,7 @@
-     if (!l->scrollbar)
- 	return;
-     attrset (normalc);
--    listbox_drawscroll (l);
-+    vscrollbar (l->widget, l->height, l->width, 0, 0, l->pos, l->count, FALSE);
- }
- 
- /* Returns the number of items between s and e,
-diff -urN mc-4.6.1.orig/src/widget.h mc-4.6.1/src/widget.h
---- mc-4.6.1.orig/src/widget.h	2004-08-30 00:46:16.000000000 +0600
-+++ mc-4.6.1/src/widget.h	2007-01-19 18:33:59.000000000 +0500
-@@ -25,6 +25,7 @@
-     char *text;			/* text of button */
-     int hotkey;			/* hot KEY */
-     int hotpos;			/* offset hot KEY char in text */
-+    wchar_t hotwc;
-     bcback callback;		/* Callback function */
- } WButton;
- 
-@@ -43,6 +44,7 @@
-     char *text;			/* text of check button */
-     int hotkey;                 /* hot KEY */                    
-     int hotpos;			/* offset hot KEY char in text */
-+    wchar_t hotwc;
- } WCheck;
- 
- typedef struct WGauge {
-@@ -58,16 +60,20 @@
- 
- typedef struct {
-     Widget widget;
--    int  point;			/* cursor position in the input line */
--    int  mark;			/* The mark position */
--    int  first_shown;		/* Index of the first shown character */
--    int  current_max_len;	/* Maximum length of input line */
--    int  field_len;		/* Length of the editing field */
-+    int  point;			/* cursor position in the input line (mb chars) */
-+    int  mark;			/* The mark position (mb chars) */
-+    int  first_shown;		/* Index of the first shown character (mb chars) */
-+    int  current_max_len;	/* Maximum length of input line (bytes) */
-+    int  field_len;		/* Length of the editing field (mb chars) */
-     int  color;			/* color used */
-     int  first;			/* Is first keystroke? */
-     int  disable_update;	/* Do we want to skip updates? */
-     int  is_password;		/* Is this a password input line? */
-     unsigned char *buffer;	/* pointer to editing buffer */
-+#ifdef UTF8
-+    unsigned char charbuf[MB_LEN_MAX];
-+#endif /* UTF8 */
-+    int charpoint;
-     GList *history;		/* The history */
-     int  need_push;		/* need to push the current Input on hist? */
-     char **completions;		/* Possible completions array */
-@@ -176,6 +182,10 @@
- /* Listbox manager */
- WLEntry *listbox_get_data (WListbox *l, int pos);
- 
-+/* Vertical scrollbar */
-+void vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
-+        	int selected, int count, gboolean color);
-+
- /* search text int listbox entries */
- WLEntry *listbox_search_text (WListbox *l, const char *text);
- void listbox_select_entry (WListbox *l, WLEntry *dest);
-diff -urN mc-4.6.1.orig/src/wtools.c mc-4.6.1/src/wtools.c
---- mc-4.6.1.orig/src/wtools.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/src/wtools.c	2007-01-19 18:33:59.000000000 +0500
-@@ -48,11 +48,11 @@
-     /* Adjust sizes */
-     lines = (lines > LINES - 6) ? LINES - 6 : lines;
- 
--    if (title && (cols < (len = strlen (title) + 2)))
-+    if (title && (cols < (len = mbstrlen (title) + 2)))
- 	cols = len;
- 
-     /* no &, but 4 spaces around button for brackets and such */
--    if (cols < (len = strlen (cancel_string) + 3))
-+    if (cols < (len = mbstrlen (cancel_string) + 3))
- 	cols = len;
- 
-     cols = cols > COLS - 6 ? COLS - 6 : cols;
-@@ -123,7 +123,7 @@
- 	va_start (ap, count);
- 	for (i = 0; i < count; i++) {
- 	    char *cp = va_arg (ap, char *);
--	    win_len += strlen (cp) + 6;
-+	    win_len += mbstrlen (cp) + 6;
- 	    if (strchr (cp, '&') != NULL)
- 		win_len--;
- 	}
-@@ -131,7 +131,7 @@
-     }
- 
-     /* count coordinates */
--    cols = 6 + max (win_len, max ((int) strlen (header), msglen (text, &lines)));
-+    cols = 6 + max (win_len, max ((int) mbstrlen (header), msglen (text, &lines)));
-     lines += 4 + (count > 0 ? 2 : 0);
-     xpos = COLS / 2 - cols / 2;
-     ypos = LINES / 3 - (lines - 3) / 2;
-@@ -146,7 +146,7 @@
- 	va_start (ap, count);
- 	for (i = 0; i < count; i++) {
- 	    cur_name = va_arg (ap, char *);
--	    xpos = strlen (cur_name) + 6;
-+	    xpos = mbstrlen (cur_name) + 6;
- 	    if (strchr (cur_name, '&') != NULL)
- 		xpos--;
- 
-@@ -457,7 +457,7 @@
-     g_strlcpy (histname + 3, header, 61);
-     quick_widgets[2].histname = histname;
- 
--    len = max ((int) strlen (header), msglen (text, &lines)) + 4;
-+    len = max ((int) mbstrlen (header), msglen (text, &lines)) + 4;
-     len = max (len, 64);
- 
-     /* The special value of def_text is used to identify password boxes
-@@ -477,7 +477,7 @@
-      */
-     quick_widgets[0].relative_x = len / 2 + 4;
-     quick_widgets[1].relative_x =
--	len / 2 - (strlen (_(quick_widgets[1].text)) + 9);
-+	len / 2 - (mbstrlen (_(quick_widgets[1].text)) + 9);
-     quick_widgets[0].x_divisions = quick_widgets[1].x_divisions = len;
- #endif				/* ENABLE_NLS */
- 
-diff -urN mc-4.6.1.orig/syntax/c.syntax mc-4.6.1/syntax/c.syntax
---- mc-4.6.1.orig/syntax/c.syntax	2005-05-31 12:03:45.000000000 +0600
-+++ mc-4.6.1/syntax/c.syntax	2007-01-19 18:33:58.000000000 +0500
-@@ -32,34 +32,7 @@
-     keyword whole volatile yellow
-     keyword whole while yellow
-     keyword whole asm yellow
--    keyword whole catch yellow
--    keyword whole class yellow
--    keyword whole friend yellow
--    keyword whole delete yellow
-     keyword whole inline yellow
--    keyword whole new yellow
--    keyword whole operator yellow
--    keyword whole private yellow
--    keyword whole protected yellow
--    keyword whole public yellow
--    keyword whole this yellow
--    keyword whole throw yellow
--    keyword whole template yellow
--    keyword whole try yellow
--    keyword whole virtual yellow
--    keyword whole bool yellow
--    keyword whole const_cast yellow
--    keyword whole dynamic_cast yellow
--    keyword whole explicit yellow
--    keyword whole false yellow
--    keyword whole mutable yellow
--    keyword whole namespace yellow
--    keyword whole reinterpret_cast yellow
--    keyword whole static_cast yellow
--    keyword whole true yellow
--    keyword whole typeid yellow
--    keyword whole typename yellow
--    keyword whole using yellow
-     keyword whole wchar_t yellow
-     keyword whole ... yellow
-     keyword whole linestart \{\s\t\}\[\s\t\]#*\n brightmagenta
-diff -urN mc-4.6.1.orig/syntax/cxx.syntax mc-4.6.1/syntax/cxx.syntax
---- mc-4.6.1.orig/syntax/cxx.syntax	1970-01-01 05:00:00.000000000 +0500
-+++ mc-4.6.1/syntax/cxx.syntax	2007-01-19 18:33:58.000000000 +0500
-@@ -0,0 +1,128 @@
-+context default
-+    keyword whole auto yellow
-+    keyword whole break yellow
-+    keyword whole case yellow
-+    keyword whole char yellow
-+    keyword whole const yellow
-+    keyword whole continue yellow
-+    keyword whole default yellow
-+    keyword whole do yellow
-+    keyword whole double yellow
-+    keyword whole else yellow
-+    keyword whole enum yellow
-+    keyword whole extern yellow
-+    keyword whole float yellow
-+    keyword whole for yellow
-+    keyword whole goto yellow
-+    keyword whole if yellow
-+    keyword whole int yellow
-+    keyword whole long yellow
-+    keyword whole register yellow
-+    keyword whole return yellow
-+    keyword whole short yellow
-+    keyword whole signed yellow
-+    keyword whole sizeof yellow
-+    keyword whole static yellow
-+    keyword whole struct yellow
-+    keyword whole switch yellow
-+    keyword whole typedef yellow
-+    keyword whole union yellow
-+    keyword whole unsigned yellow
-+    keyword whole void yellow
-+    keyword whole volatile yellow
-+    keyword whole while yellow
-+    keyword whole asm yellow
-+    keyword whole catch yellow
-+    keyword whole class yellow
-+    keyword whole friend yellow
-+    keyword whole delete yellow
-+    keyword whole inline yellow
-+    keyword whole new yellow
-+    keyword whole operator yellow
-+    keyword whole private yellow
-+    keyword whole protected yellow
-+    keyword whole public yellow
-+    keyword whole this yellow
-+    keyword whole throw yellow
-+    keyword whole template yellow
-+    keyword whole try yellow
-+    keyword whole virtual yellow
-+    keyword whole bool yellow
-+    keyword whole const_cast yellow
-+    keyword whole dynamic_cast yellow
-+    keyword whole explicit yellow
-+    keyword whole false yellow
-+    keyword whole mutable yellow
-+    keyword whole namespace yellow
-+    keyword whole reinterpret_cast yellow
-+    keyword whole static_cast yellow
-+    keyword whole true yellow
-+    keyword whole typeid yellow
-+    keyword whole typename yellow
-+    keyword whole using yellow
-+    keyword whole wchar_t yellow
-+    keyword whole ... yellow
-+    keyword whole linestart \{\s\t\}\[\s\t\]#*\n brightmagenta
-+
-+    keyword /\* brown
-+    keyword \*/ brown
-+    keyword // brown
-+
-+    keyword '\\\{"abtnvfr\}' brightgreen
-+    keyword '\\\{0123\}\{01234567\}\{01234567\}' brightgreen
-+    keyword '\\'' brightgreen
-+    keyword '\\\\' brightgreen
-+    keyword '\\0' brightgreen
-+    keyword '\{\s!"#$%&()\*\+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~\}' brightgreen
-+
-+    keyword > yellow
-+    keyword < yellow
-+    keyword \+ yellow
-+    keyword - yellow
-+    keyword \* yellow
-+    keyword / yellow
-+    keyword % yellow
-+    keyword = yellow
-+    keyword != yellow
-+    keyword == yellow
-+    keyword { brightcyan
-+    keyword } brightcyan
-+    keyword ( brightcyan
-+    keyword ) brightcyan
-+    keyword [ brightcyan
-+    keyword ] brightcyan
-+    keyword , brightcyan
-+    keyword : brightcyan
-+    keyword ? brightcyan
-+    keyword ; brightmagenta
-+
-+context exclusive /\* \*/ brown
-+    spellcheck
-+
-+context exclusive // \n brown
-+    spellcheck
-+
-+context linestart # \n brightred
-+    keyword \\\n yellow
-+    keyword /\**\*/ brown
-+    keyword //*\n brown
-+    keyword "+" red
-+    keyword <+> red
-+
-+context " " green
-+    spellcheck
-+    keyword \\" brightgreen
-+    keyword %% brightgreen
-+    keyword %\[#0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[L\]\{eEfgGoxX\} brightgreen
-+    keyword %\[0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[hl\]\{diuxX\} brightgreen
-+    keyword %\[hl\]n brightgreen
-+    keyword %\[-\]\[0123456789\*\]\[.\]\[0123456789\*\]s brightgreen
-+    keyword %[*] brightgreen
-+    keyword %c brightgreen
-+    keyword %p brightgreen
-+    keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
-+    keyword \\\\ brightgreen
-+    keyword \\' brightgreen
-+    keyword \\\{abtnvfr\} brightgreen
-+
-+
-diff -urN mc-4.6.1.orig/syntax/Makefile.am mc-4.6.1/syntax/Makefile.am
---- mc-4.6.1.orig/syntax/Makefile.am	2005-03-19 22:39:06.000000000 +0500
-+++ mc-4.6.1/syntax/Makefile.am	2007-01-19 18:33:58.000000000 +0500
-@@ -4,6 +4,7 @@
- 	aspx.syntax		\
- 	assembler.syntax	\
- 	c.syntax		\
-+	cxx.syntax		\
- 	cs.syntax		\
- 	changelog.syntax	\
- 	diff.syntax		\
-diff -urN mc-4.6.1.orig/syntax/Makefile.in mc-4.6.1/syntax/Makefile.in
---- mc-4.6.1.orig/syntax/Makefile.in	2005-07-23 22:53:15.000000000 +0600
-+++ mc-4.6.1/syntax/Makefile.in	2007-01-19 18:33:58.000000000 +0500
-@@ -218,6 +218,7 @@
- 	aspx.syntax		\
- 	assembler.syntax	\
- 	c.syntax		\
-+	cxx.syntax		\
- 	cs.syntax		\
- 	changelog.syntax	\
- 	diff.syntax		\
-diff -urN mc-4.6.1.orig/syntax/sh.syntax mc-4.6.1/syntax/sh.syntax
---- mc-4.6.1.orig/syntax/sh.syntax	2004-12-02 15:47:14.000000000 +0500
-+++ mc-4.6.1/syntax/sh.syntax	2007-01-19 18:33:58.000000000 +0500
-@@ -41,7 +41,9 @@
-     keyword whole bg yellow
-     keyword whole break yellow
-     keyword whole case yellow
-+    keyword whole clear yellow
-     keyword whole continue yellow
-+    keyword whole declare yellow
-     keyword whole done yellow
-     keyword whole do yellow
-     keyword whole elif yellow
-@@ -56,11 +58,13 @@
-     keyword whole for yellow
-     keyword whole if yellow
-     keyword whole in yellow
-+    keyword whole let yellow
-     keyword whole read yellow
-     keyword whole return yellow
-     keyword whole select yellow
-     keyword whole set yellow
-     keyword whole shift yellow
-+    keyword whole source yellow
-     keyword whole then yellow
-     keyword whole trap yellow
-     keyword whole umask yellow
-@@ -69,6 +73,8 @@
-     keyword whole wait yellow
-     keyword whole while yellow
- 
-+    keyword whole apt-get cyan
-+    keyword whole ar cyan
-     keyword whole arch cyan
-     keyword whole ash cyan
-     keyword whole awk cyan
-@@ -77,90 +83,204 @@
-     keyword whole bg_backup cyan
-     keyword whole bg_restore cyan
-     keyword whole bsh cyan
-+    keyword whole bzip cyan
-+    keyword whole bzip2 cyan
-+    keyword whole cam cyan
-     keyword whole cat cyan
-     keyword whole cd cyan
-+    keyword whole cdda2wav cyan
-     keyword whole chgrp cyan
-     keyword whole chmod cyan
-     keyword whole chown cyan
-+    keyword whole cmp cyan
-+    keyword whole col cyan
-+    keyword whole compress cyan
-     keyword whole cp cyan
-     keyword whole cpio cyan
-+    keyword whole cpp cyan
-     keyword whole csh cyan
-+    keyword whole curl cyan
-+    keyword whole cut cyan
-     keyword whole date cyan
-     keyword whole dd cyan
-     keyword whole df cyan
-+    keyword whole dialog cyan
-+    keyword whole diff cyan
-+    keyword whole dirname cyan
-     keyword whole dmesg cyan
-     keyword whole dnsdomainname cyan
-     keyword whole doexec cyan
-     keyword whole domainname cyan
-+    keyword whole dpkg cyan
-+    keyword whole dpkg-buildpackage cyan
-+    keyword whole dpkg-scanpackages cyan
-+    keyword whole dpkg-scansources cyan
-     keyword whole echo cyan
-     keyword whole ed cyan
-+    keyword whole editor cyan
-     keyword whole egrep cyan
-     keyword whole ex cyan
-+    keyword whole fakeroot cyan
-     keyword whole false cyan
-+    keyword whole fdformat cyan
-+    keyword whole fetchmail cyan
-     keyword whole fgrep cyan
-     keyword whole find cyan
-+    keyword whole formail cyan
-+    keyword whole free cyan
-+    keyword whole freeze cyan
-     keyword whole fsconf cyan
-     keyword whole gawk cyan
-+    keyword whole gdb cyan
-+    keyword whole gcc cyan
-     keyword whole grep cyan
-     keyword whole gunzip cyan
-     keyword whole gzip cyan
-+    keyword whole ha cyan
-     keyword whole hostname cyan
-     keyword whole igawk cyan
-+    keyword whole insmod cyan
-     keyword whole ipcalc cyan
-+    keyword whole iptables cyan
-     keyword whole kill cyan
-     keyword whole ksh cyan
-+    keyword whole lame cyan
-+    keyword whole less cyan
-+    keyword whole lharc cyan
-+    keyword whole lilo cyan
-+    keyword whole linux_logo cyan
-     keyword whole linuxconf cyan
-     keyword whole ln cyan
-+    keyword whole locale cyan
-+    keyword whole logger cyan
-     keyword whole login cyan
-     keyword whole lpdconf cyan
-     keyword whole ls cyan
-+    keyword whole lynx cyan
-     keyword whole mail cyan
-+    keyword whole man cyan
-+    keyword whole mc cyan
-+    keyword whole mcedit cyan
-+    keyword whole mcview cyan
-+    keyword whole mimedecode cyan
-     keyword whole mkdir cyan
-+    keyword whole mkdirhier cyan
-+    keyword whole mkfs.ext2 cyan
-+    keyword whole mkfs.ext3 cyan
-+    keyword whole mkfs.minix cyan
-+    keyword whole mkfs.msdos cyan
-+    keyword whole mke2fs cyan
-+    keyword whole mkdosfs cyan
-+    keyword whole mkinitrd cyan
-     keyword whole mknod cyan
-     keyword whole mktemp cyan
-+    keyword whole modprobe cyan
-     keyword whole more cyan
-     keyword whole mount cyan
-+    keyword whole mozilla cyan
-+    keyword whole mp3info cyan
-+    keyword whole munpack cyan
-+    keyword whole msgfmt cyan
-     keyword whole mt cyan
-+    keyword whole mutt cyan
-     keyword whole mv cyan
-     keyword whole netconf cyan
-     keyword whole netstat cyan
-     keyword whole nice cyan
-     keyword whole nisdomainname cyan
-+    keyword whole nm cyan
-+    keyword whole patch cyan
-+    keyword whole pinfo cyan
-     keyword whole ping cyan
-+    keyword whole procmail cyan
-     keyword whole ps cyan
-     keyword whole pwd cyan
-+    keyword whole rar cyan
-     keyword whole red cyan
-     keyword whole remadmin cyan
-+    keyword whole rename cyan
-     keyword whole rm cyan
-     keyword whole rmdir cyan
-+    keyword whole rmmod cyan
-+    keyword whole rplay cyan
-     keyword whole rpm cyan
-+    keyword whole rpm2cpio cyan
-     keyword whole sed cyan
-     keyword whole set cyan
-     keyword whole setserial cyan
-     keyword whole sh cyan
-     keyword whole sleep cyan
-     keyword whole sort cyan
-+    keyword whole sa-learn cyan
-+    keyword whole spamassassin cyan
-+    keyword whole spamc cyan
-+    keyword whole spamd cyan
-+    keyword whole ssmtp cyan
-+    keyword whole strace cyan
-     keyword whole stty cyan
-     keyword whole su cyan
-     keyword whole sync cyan
-     keyword whole taper cyan
-     keyword whole tar cyan
-+    keyword whole tcpdump cyan
-     keyword whole tcsh cyan
-     keyword whole test cyan
-+    keyword whole tempfile cyan
-     keyword whole time cyan
-+    keyword whole tnef cyan
-     keyword whole touch cyan
-+    keyword whole tr cyan
-     keyword whole true cyan
-+    keyword whole tune2fs cyan
-     keyword whole umount cyan
-     keyword whole uname cyan
-+    keyword whole unarj cyan
-+    keyword whole uniq cyan
-+    keyword whole unzip cyan
-+    keyword whole uptime cyan
-     keyword whole userconf cyan
-     keyword whole usleep cyan
-     keyword whole vi cyan
-     keyword whole view cyan
-     keyword whole vim cyan
-+    keyword whole wc cyan
-+    keyword whole wget cyan
-+    keyword whole whiptail cyan
-+    keyword whole wvWare cyan
-     keyword whole xconf cyan
-+    keyword whole xgettext cyan
-+    keyword whole xmessage cyan
-+    keyword whole xmodmap cyan
-+    keyword whole xterm cyan
-     keyword whole ypdomainname cyan
-     keyword whole zcat cyan
-+    keyword whole zgv cyan
-+    keyword whole zip cyan
-+    keyword whole zoo cyan
-     keyword whole zsh cyan
-+    keyword whole Xdialog cyan
-+
-+    keyword whole gpg     red
-+    keyword whole md5sum  red
-+    keyword whole openssl red
-+    keyword whole ssh     red
-+
-+    keyword whole TEXTDOMAINDIR magenta
-+    keyword whole TEXTDOMAIN    magenta
-+    keyword whole VERSION       magenta
-+
-+    keyword whole jpegtopnm cyan
-+    keyword whole pnmscale  cyan
-+    keyword whole ppmtoxpm  cyan
-+
-+    keyword whole /dev/audio  brightblue
-+    keyword whole /dev/dsp    brightblue
-+    keyword whole /dev/null   brightblue
-+    keyword whole /dev/mixed  brightblue
-+    keyword whole /dev/stdin  brightblue
-+    keyword whole /dev/stdout brightblue
-+    keyword whole /dev/stderr brightblue
-+    keyword whole /dev/zero   brightblue
- 
- wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
- 
-@@ -224,7 +344,9 @@
- 
-     keyword whole break yellow
-     keyword whole case yellow
-+    keyword whole clear yellow
-     keyword whole continue yellow
-+    keyword whole declare yellow
-     keyword whole done yellow
-     keyword whole do yellow
-     keyword whole elif yellow
-@@ -238,11 +360,15 @@
-     keyword whole return yellow
-     keyword whole select yellow
-     keyword whole shift yellow
-+    keyword whole source yellow
-     keyword whole then yellow
-     keyword whole trap yellow
-     keyword whole until yellow
-+    keyword whole wait yellow
-     keyword whole while yellow
- 
-+    keyword whole apt-get cyan
-+    keyword whole ar cyan
-     keyword whole arch cyan
-     keyword whole ash cyan
-     keyword whole awk cyan
-@@ -251,89 +377,194 @@
-     keyword whole bg_backup cyan
-     keyword whole bg_restore cyan
-     keyword whole bsh cyan
-+    keyword whole bzip cyan
-+    keyword whole bzip2 cyan
-+    keyword whole cam cyan
-     keyword whole cat cyan
-     keyword whole cd cyan
-+    keyword whole cdda2wav cyan
-     keyword whole chgrp cyan
-     keyword whole chmod cyan
-     keyword whole chown cyan
-+    keyword whole cmp cyan
-+    keyword whole col cyan
-+    keyword whole compress cyan
-     keyword whole cp cyan
-     keyword whole cpio cyan
-+    keyword whole cpp cyan
-     keyword whole csh cyan
-+    keyword whole curl cyan
-+    keyword whole cut cyan
-     keyword whole date cyan
-     keyword whole dd cyan
-     keyword whole df cyan
-+    keyword whole dialog cyan
-+    keyword whole diff cyan
-+    keyword whole dirname cyan
-     keyword whole dmesg cyan
-     keyword whole dnsdomainname cyan
-     keyword whole doexec cyan
-     keyword whole domainname cyan
-+    keyword whole dpkg cyan
-+    keyword whole dpkg-buildpackage cyan
-+    keyword whole dpkg-scanpackages cyan
-+    keyword whole dpkg-scansources cyan
-     keyword whole echo cyan
-     keyword whole ed cyan
-+    keyword whole editor cyan
-     keyword whole egrep cyan
-     keyword whole ex cyan
-+    keyword whole fakeroot cyan
-     keyword whole false cyan
-+    keyword whole fdformat cyan
-+    keyword whole fetchmail cyan
-     keyword whole fgrep cyan
-     keyword whole find cyan
-+    keyword whole free cyan
-+    keyword whole freeze cyan
-     keyword whole fsconf cyan
-     keyword whole gawk cyan
-+    keyword whole gdb cyan
-+    keyword whole gcc cyan
-     keyword whole grep cyan
-     keyword whole gunzip cyan
-     keyword whole gzip cyan
-+    keyword whole ha cyan
-     keyword whole hostname cyan
-     keyword whole igawk cyan
-+    keyword whole insmod cyan
-+    keyword whole iptables cyan
-     keyword whole ipcalc cyan
-     keyword whole kill cyan
-     keyword whole ksh cyan
-+    keyword whole lame cyan
-+    keyword whole less cyan
-+    keyword whole lharc cyan
-+    keyword whole lilo cyan
-+    keyword whole linux_logo cyan
-     keyword whole linuxconf cyan
-     keyword whole ln cyan
-+    keyword whole locale cyan
-+    keyword whole logger cyan
-     keyword whole login cyan
-     keyword whole lpdconf cyan
-     keyword whole ls cyan
-+    keyword whole lynx cyan
-     keyword whole mail cyan
-+    keyword whole man cyan
-+    keyword whole mc cyan
-+    keyword whole mcedit cyan
-+    keyword whole mcview cyan
-+    keyword whole mimedecode cyan
-     keyword whole mkdir cyan
-+    keyword whole mkdirhier cyan
-+    keyword whole mkfs.ext2 cyan
-+    keyword whole mkfs.ext3 cyan
-+    keyword whole mkfs.minix cyan
-+    keyword whole mkfs.msdos cyan
-+    keyword whole mke2fs cyan
-+    keyword whole mkdosfs cyan
-+    keyword whole mkinitrd cyan
-     keyword whole mknod cyan
-     keyword whole mktemp cyan
-+    keyword whole modprobe cyan
-     keyword whole more cyan
-     keyword whole mount cyan
-+    keyword whole mozilla cyan
-+    keyword whole mp3info cyan
-+    keyword whole msgfmt cyan
-     keyword whole mt cyan
-+    keyword whole mutt cyan
-     keyword whole mv cyan
-     keyword whole netconf cyan
-     keyword whole netstat cyan
-     keyword whole nice cyan
-     keyword whole nisdomainname cyan
-+    keyword whole nm cyan
-+    keyword whole patch cyan
-+    keyword whole pinfo cyan
-     keyword whole ping cyan
-     keyword whole ps cyan
-     keyword whole pwd cyan
-+    keyword whole rar cyan
-     keyword whole red cyan
-     keyword whole remadmin cyan
-+    keyword whole rename cyan
-     keyword whole rm cyan
-     keyword whole rmdir cyan
-+    keyword whole rmmod cyan
-+    keyword whole rplay cyan
-     keyword whole rpm cyan
-+    keyword whole rpm2cpio cyan
-     keyword whole sed cyan
-     keyword whole set cyan
-     keyword whole setserial cyan
-     keyword whole sh cyan
-     keyword whole sleep cyan
-     keyword whole sort cyan
-+    keyword whole sa-learn cyan
-+    keyword whole spamassassin cyan
-+    keyword whole spamc cyan
-+    keyword whole spamd cyan
-+    keyword whole ssmtp cyan
-+    keyword whole strace cyan
-     keyword whole stty cyan
-     keyword whole su cyan
-     keyword whole sync cyan
-     keyword whole taper cyan
-     keyword whole tar cyan
-+    keyword whole tcpdump cyan
-     keyword whole tcsh cyan
-+    keyword whole tempfile cyan
-     keyword whole test cyan
-     keyword whole time cyan
-+    keyword whole tnef cyan
-     keyword whole touch cyan
-+    keyword whole tr cyan
-     keyword whole true cyan
-+    keyword whole tune2fs cyan
-     keyword whole umount cyan
-     keyword whole uname cyan
-+    keyword whole unarj cyan
-+    keyword whole uniq cyan
-+    keyword whole unzip cyan
-+    keyword whole uptime cyan
-     keyword whole userconf cyan
-     keyword whole usleep cyan
-     keyword whole vi cyan
-     keyword whole view cyan
-     keyword whole vim cyan
-+    keyword whole wc cyan
-+    keyword whole wget cyan
-+    keyword whole whiptail cyan
-+    keyword whole wvWare cyan
-     keyword whole xconf cyan
-+    keyword whole xgettext cyan
-+    keyword whole xmessage cyan
-+    keyword whole xmodmap cyan
-+    keyword whole xterm cyan
-     keyword whole ypdomainname cyan
-     keyword whole zcat cyan
-+    keyword whole zgv cyan
-+    keyword whole zoo cyan
-+    keyword whole zip cyan
-     keyword whole zsh cyan
-+    keyword whole Xdialog cyan
- 
--
-+    keyword whole gpg     red
-+    keyword whole md5sum  red
-+    keyword whole openssl red
-+    keyword whole ssh     red
-+
-+    keyword whole TEXTDOMAINDIR magenta
-+    keyword whole TEXTDOMAIN    magenta
-+    keyword whole VERSION       magenta
-+
-+    keyword whole /dev/audio  brightblue
-+    keyword whole /dev/dsp    brightblue
-+    keyword whole /dev/null   brightblue
-+    keyword whole /dev/mixed  brightblue
-+    keyword whole /dev/stdin  brightblue
-+    keyword whole /dev/stdout brightblue
-+    keyword whole /dev/stderr brightblue
-+    keyword whole /dev/zero   brightblue
-diff -urN mc-4.6.1.orig/syntax/Syntax mc-4.6.1/syntax/Syntax
---- mc-4.6.1.orig/syntax/Syntax	2005-05-26 13:21:34.000000000 +0600
-+++ mc-4.6.1/syntax/Syntax	2007-01-19 18:33:58.000000000 +0500
-@@ -45,9 +45,10 @@
- file ..\*\\.(rb|RB)$ Ruby\sProgram ^#!.\*([\s/]ruby|@RUBY@)
- include ruby.syntax
- 
--file ..\*\\.(man|[0-9n]|[0-9]x)$ NROFF\sSource
-+file ..\*\\.(man|[0-9n]|[0-9](x|ncurses|ssl|p|pm|menu|form|vga|t|td))$ NROFF\sSource
- include nroff.syntax
- 
-+
- file ..\*\\.(htm|html|HTM|HTML)$ HTML\sFile
- include html.syntax
- 
-@@ -72,9 +73,12 @@
- file ..\*\.(texi|texinfo|TEXI|TEXINFO)$ Texinfo\sDocument
- include texinfo.syntax
- 
--file ..\*\\.([chC]|CC|cxx|cc|cpp|CPP|CXX|hxx|h\.in)$ C/C\+\+\sProgram
-+file ..\*\\.c$ C\sProgram
- include c.syntax
- 
-+file ..\*\\.([hC]|CC|cxx|cc|cpp|CPP|CXX|hxx|h\.in)$ C/C\+\+\sProgram
-+include cxx.syntax
-+
- file ..\*\\.[fF]$ Fortran\sProgram
- include fortran.syntax
- 
-diff -urN mc-4.6.1.orig/vfs/cpio.c mc-4.6.1/vfs/cpio.c
---- mc-4.6.1.orig/vfs/cpio.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/cpio.c	2007-01-19 18:33:58.000000000 +0500
-@@ -83,7 +83,7 @@
-     struct vfs_s_inode *inode;
- };
- 
--static int cpio_position;
-+static off_t cpio_position;
- 
- static int cpio_find_head(struct vfs_class *me, struct vfs_s_super *super);
- static int cpio_read_bin_head(struct vfs_class *me, struct vfs_s_super *super);
-@@ -107,7 +107,7 @@
-     return l;
- }
- 
--static int cpio_skip_padding(struct vfs_s_super *super)
-+static off_t cpio_skip_padding(struct vfs_s_super *super)
- {
-     switch(super->u.arch.type) {
-     case CPIO_BIN:
-diff -urN mc-4.6.1.orig/vfs/direntry.c mc-4.6.1/vfs/direntry.c
---- mc-4.6.1.orig/vfs/direntry.c	2004-11-29 23:44:49.000000000 +0500
-+++ mc-4.6.1/vfs/direntry.c	2007-01-19 18:33:58.000000000 +0500
-@@ -243,7 +243,13 @@
-     char * const pathref = g_strdup (a_path);
-     char *path = pathref;
- 
--    canonicalize_pathname (path);
-+    if (strncmp(me->name, "ftpfs", 5) != 0)
-+	canonicalize_pathname (path);
-+    else {
-+	char *p = path + strlen (path) - 1;
-+	while (p > path && *p == PATH_SEP)
-+	    *p-- = 0;
-+    }
- 
-     while (root) {
- 	while (*path == PATH_SEP)	/* Strip leading '/' */
-@@ -313,7 +319,13 @@
-     if (root->super->root != root)
- 	vfs_die ("We have to use _real_ root. Always. Sorry.");
- 
--    canonicalize_pathname (path);
-+    if (strncmp (me->name, "ftpfs", 5) != 0)
-+	canonicalize_pathname (path);
-+    else {
-+	char *p = path + strlen (path) - 1;
-+	while (p > path && *p == PATH_SEP)
-+	    *p-- = 0;
-+    }
- 
-     if (!(flags & FL_DIR)) {
- 	char *dirname, *name, *save;
-@@ -836,13 +848,13 @@
-     return 0;
- }
- 
--static int
-+static off_t
- vfs_s_lseek (void *fh, off_t offset, int whence)
- {
-     off_t size = FH->ino->st.st_size;
- 
-     if (FH->handle != -1){	/* If we have local file opened, we want to work with it */
--	int retval = lseek (FH->handle, offset, whence);
-+	off_t retval = lseek (FH->handle, offset, whence);
- 	if (retval == -1)
- 	    FH->ino->super->me->verrno = errno;
- 	return retval;
-diff -urN mc-4.6.1.orig/vfs/extfs/uzip.in mc-4.6.1/vfs/extfs/uzip.in
---- mc-4.6.1.orig/vfs/extfs/uzip.in	2004-09-02 06:16:33.000000000 +0600
-+++ mc-4.6.1/vfs/extfs/uzip.in	2007-01-19 18:33:58.000000000 +0500
-@@ -34,6 +34,14 @@
- # Command used to extract a file to standard out
- my $cmd_extract = "$app_unzip -p";
- 
-+# -rw-r--r--  2.2 unx     2891 tx     1435 defN 20000330.211927 ./edit.html
-+# (perm) (?) (?) (size) (?) (zippedsize) (method) (yyyy)(mm)(dd)(HH)(MM) (fname)
-+my $regex_zipinfo_line = qr"^(\S{7,10})\s+(\d+\.\d+)\s+(\S+)\s+(\d+)\s+(\S\S)\s+(\d+)\s+(\S{4})\s+(\d{4})(\d\d)(\d\d)\.(\d\d)(\d\d)(\d\d)\s(.*)$";
-+
-+#     2891  Defl:N     1435  50%  03-30-00 21:19  50cbaaf8  ./edit.html
-+# (size) (method) (zippedsize) (zipratio) (mm)(dd)(yy)(HH)(MM) (cksum) (fname)
-+my $regex_nonzipinfo_line = qr"^\s*(\d+)\s+(\S+)\s+(\d+)\s+(-?\d+\%)\s+(\d?\d)-(\d?\d)-(\d\d)\s+(\d?\d):(\d\d)\s+([0-9a-f]+)\s\s(.*)$";
-+
- #
- # Main code
- #
-@@ -50,6 +58,50 @@
- my $cmd_list = ($op_has_zipinfo ? $cmd_list_zi : $cmd_list_nzi);
- my ($qarchive, $aqarchive) = map (quotemeta, $archive, $aarchive);
- 
-+# Strip all "." and ".." path components from a pathname.
-+sub zipfs_canonicalize_pathname($) {
-+  my ($fname) = @_;
-+  $fname =~ s,/+,/,g;
-+  $fname =~ s,(^|/)(?:\.?\./)+,$1,;
-+  return $fname;
-+}
-+
-+# The Midnight Commander never calls this script with archive pathnames
-+# starting with either "./" or "../". Some ZIP files contain such names,
-+# so we need to build a translation table for them.
-+my $zipfs_realpathname_table = undef;
-+sub zipfs_realpathname($) {
-+    my ($fname) = @_;
-+
-+    if (!defined($zipfs_realpathname_table)) {
-+        $zipfs_realpathname_table = {};
-+	if (!open(ZIP, "$cmd_list $qarchive |")) {
-+	    return $fname;
-+	}
-+	foreach my $line (<ZIP>) {
-+	    $line =~ s/\r*\n*$//;
-+	    if ($op_has_zipinfo) {
-+		if ($line =~ $regex_zipinfo_line) {
-+		    my ($fname) = ($14);
-+		    $zipfs_realpathname_table->{zipfs_canonicalize_pathname($fname)} = $fname;
-+		}
-+	    } else {
-+		if ($line =~ $regex_nonzipinfo_line) {
-+		    my ($fname) = ($11);
-+		    $zipfs_realpathname_table->{zipfs_canonicalize_pathname($fname)} = $fname;
-+		}
-+	    }
-+	}
-+	if (!close(ZIP)) {
-+	    return $fname;
-+	}
-+    }
-+    if (exists($zipfs_realpathname_table->{$fname})) {
-+	return $zipfs_realpathname_table->{$fname};
-+    }
-+    return $fname;
-+}
-+
- if ($cmd eq 'list')    { &mczipfs_list(@ARGV); }
- if ($cmd eq 'rm')      { &mczipfs_rm(@ARGV); }
- if ($cmd eq 'rmdir')   { &mczipfs_rmdir(@ARGV); }
-@@ -63,7 +115,12 @@
- 
- # Remove a file from the archive.
- sub mczipfs_rm {
--	my ($qfile) = map { &zipquotemeta($_) } @_;
-+	my ($qfile) = map { &zipquotemeta(zipfs_realpathname($_)) } @_;
-+
-+	# "./" at the beginning of pathnames is stripped by Info-ZIP,
-+	# so convert it to "[.]/" to prevent stripping.
-+	$qfile =~ s/^\\\./[.]/;
-+
- 	&checkargs(1, 'archive file', @_);
- 	&safesystem("$cmd_delete $qarchive $qfile >/dev/null");
- 	exit;
-@@ -74,7 +131,7 @@
- # additional slash to the directory name to remove. I am not
- # sure this is absolutely necessary, but it doesn't hurt.
- sub mczipfs_rmdir {
--	my ($qfile) = map { &zipquotemeta($_) } @_;
-+	my ($qfile) = map { &zipquotemeta(zipfs_realpathname($_)) } @_;
- 	&checkargs(1, 'archive directory', @_);
- 	&safesystem("$cmd_delete $qarchive $qfile/ >/dev/null", 12);
-   exit;
-@@ -84,7 +141,7 @@
- # Note that we don't need to check if the file is a link,
- # because mc apparently doesn't call copyout for symbolic links.
- sub mczipfs_copyout {
--	my ($qafile, $qfsfile) = map { &zipquotemeta($_) } @_;
-+	my ($qafile, $qfsfile) = map { &zipquotemeta(zipfs_realpathname($_)) } @_;
- 	&checkargs(1, 'archive file', @_);
- 	&checkargs(2, 'local file', @_);
- 	&safesystem("$cmd_extract $qarchive $qafile > $qfsfile", 11);
-@@ -195,14 +252,14 @@
- 			next if /^Archive:/;
- 			next if /^\d+ file/;
- 			next if /^Empty zipfile\.$/;
--			my @match = /^(.{10}) +([\d.]+) +([a-z\d]+) +(\d+) +([^ ]{2}) +(\d+) +([^ ]{4}) +(\d{4})(\d\d)(\d\d)\.(\d\d)(\d\d)(\d\d) +(.*)$/;
-+			my @match = /$regex_zipinfo_line/;
- 			next if ($#match != 13);
- 			&checked_print_file(@match);
- 		}
- 	} else {
- 		while (<PIPE>) {
- 			chomp;
--			my @match = /^ *(\d+) +([^ ]+) +(\d+) +(-?\d+\%) +(\d?\d)-(\d?\d)-(\d\d) (\d?\d):(\d\d) +([0-9a-f]+) +(.*)$/;
-+			my @match = /$regex_nonzipinfo_line/;
- 			next if ($#match != 10);
- 			my @rmatch = ('', '', 'unknown', $match[0], '', $match[2], $match[1],
- 					$match[6] + ($match[6] < 70 ? 2000 : 1900), $match[4], $match[5],
-@@ -230,7 +287,7 @@
- sub mczipfs_run {
- 	my ($afile) = @_;
- 	&checkargs(1, 'archive file', @_);
--	my $qafile = &zipquotemeta($afile);
-+	my $qafile = &zipquotemeta(zipfs_realpathname($afile));
- 	my $tmpdir = &mktmpdir();
- 	my $tmpfile = File::Basename::basename($afile);
- 
-diff -urN mc-4.6.1.orig/vfs/extfs.c mc-4.6.1/vfs/extfs.c
---- mc-4.6.1.orig/vfs/extfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/extfs.c	2007-01-19 18:33:58.000000000 +0500
-@@ -1125,7 +1125,7 @@
-     return 0;
- }
- 
--static int extfs_lseek (void *data, off_t offset, int whence)
-+static off_t extfs_lseek (void *data, off_t offset, int whence)
- {
-     struct pseudofile *file = (struct pseudofile *) data;
- 
-diff -urN mc-4.6.1.orig/vfs/ftpfs.c mc-4.6.1/vfs/ftpfs.c
---- mc-4.6.1.orig/vfs/ftpfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/ftpfs.c	2007-01-19 18:33:58.000000000 +0500
-@@ -114,7 +114,7 @@
- int ftpfs_use_unix_list_options = 1;
- 
- /* First "CWD <path>", then "LIST -la ." */
--int ftpfs_first_cd_then_ls;
-+int ftpfs_first_cd_then_ls = 1;
- 
- /* Use the ~/.netrc */
- int use_netrc = 1;
-diff -urN mc-4.6.1.orig/vfs/local.c mc-4.6.1/vfs/local.c
---- mc-4.6.1.orig/vfs/local.c	2004-09-25 05:00:18.000000000 +0600
-+++ mc-4.6.1/vfs/local.c	2007-01-19 18:33:58.000000000 +0500
-@@ -197,7 +197,7 @@
-     return chdir (path);
- }
- 
--int
-+off_t
- local_lseek (void *data, off_t offset, int whence)
- {
-     int fd = * (int *) data;
-diff -urN mc-4.6.1.orig/vfs/local.h mc-4.6.1/vfs/local.h
---- mc-4.6.1.orig/vfs/local.h	2004-08-17 15:17:43.000000000 +0600
-+++ mc-4.6.1/vfs/local.h	2007-01-19 18:33:58.000000000 +0500
-@@ -11,7 +11,7 @@
- extern int local_read (void *data, char *buffer, int count);
- extern int local_fstat (void *data, struct stat *buf);
- extern int local_errno (struct vfs_class *me);
--extern int local_lseek (void *data, off_t offset, int whence);
-+extern off_t local_lseek (void *data, off_t offset, int whence);
- #ifdef HAVE_MMAP
- extern caddr_t local_mmap (struct vfs_class *me, caddr_t addr, size_t len,
-                            int prot, int flags, void *data, off_t offset);
-diff -urN mc-4.6.1.orig/vfs/mcfs.c mc-4.6.1/vfs/mcfs.c
---- mc-4.6.1.orig/vfs/mcfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/mcfs.c	2007-01-19 18:33:58.000000000 +0500
-@@ -1037,7 +1037,7 @@
-     return 0;
- }
- 
--static int
-+static off_t
- mcfs_lseek (void *data, off_t offset, int whence)
- {
-     mcfs_handle *info = (mcfs_handle *) data;
-diff -urN mc-4.6.1.orig/vfs/smbfs.c mc-4.6.1/vfs/smbfs.c
---- mc-4.6.1.orig/vfs/smbfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/smbfs.c	2007-01-19 18:33:58.000000000 +0500
-@@ -283,7 +283,7 @@
- static int
- smbfs_init (struct vfs_class * me)
- {
--    const char *servicesf = CONFIGDIR PATH_SEP_STR "smb.conf";
-+    const char *servicesf = CONFIGDIR PATH_SEP_STR "samba/smb.conf";
- 
-     /*  DEBUGLEVEL = 4; */
- 
-@@ -1585,7 +1585,7 @@
- 
- #define smbfs_lstat smbfs_stat	/* no symlinks on smb filesystem? */
- 
--static int
-+static off_t
- smbfs_lseek (void *data, off_t offset, int whence)
- {
-     smbfs_handle *info = (smbfs_handle *) data;
-diff -urN mc-4.6.1.orig/vfs/tar.c mc-4.6.1/vfs/tar.c
---- mc-4.6.1.orig/vfs/tar.c	2005-07-23 22:52:04.000000000 +0600
-+++ mc-4.6.1/vfs/tar.c	2007-01-19 18:33:58.000000000 +0500
-@@ -194,7 +194,7 @@
- }
- 
- /* As we open one archive at a time, it is safe to have this static */
--static int current_tar_position = 0;
-+static off_t current_tar_position = 0;
- 
- /* Returns fd of the open tar file */
- static int
-@@ -461,7 +461,7 @@
- 	struct stat st;
- 	struct vfs_s_entry *entry;
- 	struct vfs_s_inode *inode, *parent;
--	long data_position;
-+	off_t data_position;
- 	char *q;
- 	int len;
- 	char *current_file_name, *current_link_name;
-@@ -646,8 +646,9 @@
-     int fd = FH_SUPER->u.arch.fd;
-     struct vfs_class *me = FH_SUPER->me;
- 
--    if (mc_lseek (fd, begin + FH->pos, SEEK_SET) != 
--        begin + FH->pos) ERRNOR (EIO, -1);
-+
-+    off_t o = mc_lseek(fd, begin + FH->pos, SEEK_SET);
-+    if ( o != begin + FH->pos) ERRNOR (EIO, -1);
- 
-     count = MIN(count, FH->ino->st.st_size - FH->pos);
- 
-diff -urN mc-4.6.1.orig/vfs/undelfs.c mc-4.6.1/vfs/undelfs.c
---- mc-4.6.1.orig/vfs/undelfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/undelfs.c	2007-01-19 18:33:58.000000000 +0500
-@@ -645,7 +645,7 @@
- }
- 
- /* this has to stay here for now: vfs layer does not know how to emulate it */
--static int
-+static off_t
- undelfs_lseek(void *vfs_info, off_t offset, int whence)
- {
-     return -1;
-diff -urN mc-4.6.1.orig/vfs/vfs.c mc-4.6.1/vfs/vfs.c
---- mc-4.6.1.orig/vfs/vfs.c	2005-05-27 20:19:19.000000000 +0600
-+++ mc-4.6.1/vfs/vfs.c	2007-01-19 18:33:59.000000000 +0500
-@@ -49,6 +49,11 @@
- #include "smbfs.h"
- #include "local.h"
- 
-+#include "../src/panel.h"
-+#ifdef HAVE_CHARSET
-+#include "../src/recode.h"
-+#endif
-+
- /* They keep track of the current directory */
- static struct vfs_class *current_vfs;
- static char *current_dir;
-@@ -623,14 +628,14 @@
- off_t mc_lseek (int fd, off_t offset, int whence)
- {
-     struct vfs_class *vfs;
--    int result;
-+    off_t result;
- 
-     if (fd == -1)
- 	return -1;
- 
-     vfs = vfs_op (fd);
-     result = vfs->lseek ? (*vfs->lseek)(vfs_info (fd), offset, whence) : -1;
--    if (result == -1)
-+    if (result == (off_t)-1)
-         errno = vfs->lseek ? ferrno (vfs) : E_NOTSUPP;
-     return result;
- }
-@@ -681,8 +686,66 @@
-     vfsid old_vfsid;
-     int result;
- 
-+#ifdef HAVE_CHARSET
-+    char* errmsg;
-+#endif
-+    WPanel* p=ret_panel;
-+
-     new_dir = vfs_canon (path);
-     new_vfs = vfs_get_class (new_dir);
-+    old_vfsid = vfs_getid (current_vfs, current_dir);
-+    old_vfs = current_vfs;
-+
-+    if(p) {
-+
-+      // Change from localfs to ftpfs
-+      ret_panel=NULL;
-+      if(    (strcmp(old_vfs->name,"localfs")==0) &&
-+            (strcmp(new_vfs->name,"ftpfs")==0)){
-+        p->is_return=1;
-+        strncpy(p->retdir,current_dir, MC_MAXPATHLEN);
-+#ifdef HAVE_CHARSET
-+       p->ret_codepage=p->src_codepage;
-+        p->src_codepage=ftp_codepage;
-+        errmsg=my_init_tt(display_codepage,p->src_codepage,p->tr_table);
-+        if(errmsg) {
-+          panel_reset_codepage(p);
-+          message( 1, MSG_ERROR, "%s", errmsg );
-+        }
-+        errmsg=my_init_tt(p->src_codepage,display_codepage,p->tr_table_input);
-+       if(errmsg) {
-+          panel_reset_codepage(p);
-+          message( 1, MSG_ERROR, "%s", errmsg );
-+        }
-+#endif
-+      }
-+
-+      // Change from ftpfs to localfs
-+      if(    (strcmp(old_vfs->name,"ftpfs")==0) &&
-+            (strcmp(new_vfs->name,"localfs")==0) &&
-+             p->is_return){
-+        p->is_return=0;
-+       g_free(new_dir);
-+       new_dir = vfs_canon (p->retdir);
-+        new_vfs = vfs_get_class (new_dir);
-+#ifdef HAVE_CHARSET
-+        p->src_codepage=p->ret_codepage;
-+        errmsg=my_init_tt(display_codepage,p->src_codepage,p->tr_table);
-+        if(errmsg) {
-+          panel_reset_codepage(p);
-+          message( 1, MSG_ERROR, "%s", errmsg );
-+        }
-+        errmsg=my_init_tt(p->src_codepage,display_codepage,p->tr_table_input);
-+        if(errmsg) {
-+          panel_reset_codepage(p);
-+          message( 1, MSG_ERROR, "%s", errmsg );
-+        }
-+#endif
-+      }
-+    }
-+
-+
-+
-     if (!new_vfs->chdir) {
-     	g_free (new_dir);
- 	return -1;
-@@ -696,9 +759,6 @@
- 	return -1;
-     }
- 
--    old_vfsid = vfs_getid (current_vfs, current_dir);
--    old_vfs = current_vfs;
--
-     /* Actually change directory */
-     g_free (current_dir);
-     current_dir = new_dir;
-diff -urN mc-4.6.1.orig/vfs/vfs-impl.h mc-4.6.1/vfs/vfs-impl.h
---- mc-4.6.1.orig/vfs/vfs-impl.h	2004-09-02 19:57:59.000000000 +0600
-+++ mc-4.6.1/vfs/vfs-impl.h	2007-01-19 18:33:58.000000000 +0500
-@@ -53,7 +53,7 @@
-     int (*rename) (struct vfs_class *me, const char *p1, const char *p2);
-     int (*chdir) (struct vfs_class *me, const char *path);
-     int (*ferrno) (struct vfs_class *me);
--    int (*lseek) (void *vfs_info, off_t offset, int whence);
-+    off_t (*lseek) (void *vfs_info, off_t offset, int whence);
-     int (*mknod) (struct vfs_class *me, const char *path, int mode, int dev);
- 
-     vfsid (*getid) (struct vfs_class *me, const char *path);
-diff -urN mc-4.6.1.orig/vfs/xdirentry.h mc-4.6.1/vfs/xdirentry.h
---- mc-4.6.1.orig/vfs/xdirentry.h	2004-10-07 00:04:15.000000000 +0600
-+++ mc-4.6.1/vfs/xdirentry.h	2007-01-19 18:33:58.000000000 +0500
-@@ -90,7 +90,7 @@
-     char *linkname;		/* Symlink's contents */
-     char *localname;		/* Filename of local file, if we have one */
-     struct timeval timestamp;	/* Subclass specific */
--    long data_offset;		/* Subclass specific */
-+    off_t data_offset;		/* Subclass specific */
- };
- 
- /* Data associated with an open file */
diff --git a/pkgs/tools/misc/plowshare/default.nix b/pkgs/tools/misc/plowshare/default.nix
index 4634585cbd2..199e709f16a 100644
--- a/pkgs/tools/misc/plowshare/default.nix
+++ b/pkgs/tools/misc/plowshare/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
 
-  name = "plowshare-${version}";
+  name = "plowshare4-${version}";
 
-  version = "20120916";
+  version = "20121126.47e4480";
 
   src = fetchurl {
-    url = "http://plowshare.googlecode.com/files/plowshare-snapshot-git${version}.tar.gz";
-    sha256 = "eccdb28d49ac47782abc8614202b3a88426cd587371641ecf2ec008880dc6067";
+    url = "http://plowshare.googlecode.com/files/plowshare4-snapshot-git${version}.tar.gz";
+    sha256 = "1p7bqqfbgcy41hiickgr8cilspyvrrql12rdmfasz0dmgf7nx1x6";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/misc/ttf2pt1/ttf2pt1-cl-pdf.nix b/pkgs/tools/misc/ttf2pt1/ttf2pt1-cl-pdf.nix
deleted file mode 100644
index 97a052db20d..00000000000
--- a/pkgs/tools/misc/ttf2pt1/ttf2pt1-cl-pdf.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ttf2pt1, lib, fetchurl, unzip}:
-
-lib.overrideDerivation ttf2pt1 
-(x:
-{
-  name = "ttf2pt1-cl-pdf";
-  src = fetchurl {
-    url = "http://www.fractalconcept.com/fcweb/download/ttf2pt1-src.zip";
-    sha256 = "1w6kxgnrj3x67lf346bswmcqny9lmyhbnkp6kv99l6wfaq4gs82b";
-  };
-  buildInputs = x.buildInputs ++ [unzip];
-  sourceRoot = "ttf2pt1-cl-pdf";
-  preBuild = ''
-    chmod a+x scripts/*
-  '';
-  meta = x.meta // {
-    maintainers = [lib.maintainers.raskin];
-    platforms = lib.platforms.linux;
-  };
-})
diff --git a/pkgs/tools/networking/connect/default.nix b/pkgs/tools/networking/connect/default.nix
new file mode 100644
index 00000000000..67f2b63c292
--- /dev/null
+++ b/pkgs/tools/networking/connect/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "connect-1.95";
+  
+  src = fetchurl {
+    url = http://savannah.gnu.org/maintenance/connect.c;
+    sha256 = "11dx07pcanwaq71g4xh8d4blr5j7iy0ilmb0fkgpj8p22blb74mf";
+  };
+
+  phases = "unpackPhase buildPhase fixupPhase";
+
+  unpackPhase = ''
+    cp $src connect.c
+  '';
+
+  buildPhase = ''
+    ensureDir $out/bin
+    gcc -o $out/bin/connect connect.c
+  '';
+
+  meta = {
+    description = "make network connection via SOCKS and https proxy.";
+    longDescription = ''
+      This proxy traversal tool is intended to assist OpenSSH (via ProxyCommand
+      in ~/.ssh/config) and GIT (via $GIT_PROXY_COMMAND) utilize SOCKS and https proxies. 
+      '';
+    homepage = http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html; # source URL is busted there
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.gnu;
+    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+  };
+}
diff --git a/pkgs/tools/networking/gvpe/src-for-default.nix b/pkgs/tools/networking/gvpe/src-for-default.nix
index 10094c7b129..097f275feff 100644
--- a/pkgs/tools/networking/gvpe/src-for-default.nix
+++ b/pkgs/tools/networking/gvpe/src-for-default.nix
@@ -1,8 +1,9 @@
 rec {
-  advertisedUrl="http://ftp.gnu.org/gnu/gvpe/gvpe-2.22.tar.gz";
-  version = "2.22";
-  url="http://ftp.gnu.org/gnu/gvpe/gvpe-2.22.tar.gz";
-  hash = "01p1akcib8wxpsma9i3zlnqwd78swpjhwx4drp9h57f0hp14cr7w";
-  name = "gvpe-2.22";
+   version="2.24";
+   name="gvpe-2.24";
+   hash="1szwia7n24fx9n40yvmdidna55b97459ccq6d2c4863q4pfkqpjy";
+   url="http://ftp.gnu.org/gnu/gvpe/gvpe-${version}.tar.gz";
+   advertisedUrl="http://ftp.gnu.org/gnu/gvpe/gvpe-2.24.tar.gz";
+  
   
 }
diff --git a/pkgs/tools/networking/hping/default.nix b/pkgs/tools/networking/hping/default.nix
new file mode 100644
index 00000000000..aa2574fbc1d
--- /dev/null
+++ b/pkgs/tools/networking/hping/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, libpcap, tcl }:
+
+stdenv.mkDerivation rec {
+  name = "hping-${version}";
+  version = "20051105";
+
+  src = fetchurl {
+    url = "http://www.hping.org/hping3-${version}.tar.gz";
+    sha256 = "1s5f9xd1msx05ibhwaw37jmc7l9fahcxxslqz8a83p0i5ak739pm";
+  };
+
+  buildInputs = [ libpcap tcl ];
+
+  configurePhase = ''
+    MANPATH="$out/share/man" ./configure
+    sed -i -r -e 's|/usr(/s?bin)|'"$out"'\1|g' Makefile
+  '';
+
+  TCLSH = "${tcl}/bin/tclsh";
+
+  prePatch = ''
+    sed -i -e '/#if.*defined(__i386__)/a \
+      || defined(__x86_64__) \\
+    ' bytesex.h
+
+    sed -i -e 's|#include.*net/bpf.h|#include <pcap/bpf.h>|' \
+      libpcap_stuff.c script.c
+
+    sed -i -r -e 's|"(/usr/(local/)?)?bin/"|"${tcl}/bin"|g' \
+              -e 's!/usr/(local/)?(lib|include)!${tcl}/\2!g' \
+              configure
+  '';
+
+  preInstall = ''
+    mkdir -vp "$out/sbin" "$out/share/man/man8"
+  '';
+
+  postInstall = ''
+    ln -vs hping3.8.gz "$out/share/man/man8/hping.8.gz"
+    ln -vs hping3.8.gz "$out/share/man/man8/hping2.8.gz"
+  '';
+
+  meta = {
+    description = "A command-line oriented TCP/IP packet assembler/analyzer";
+    homepage = "http://www.hping.org/";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/tools/networking/mtr/default.nix b/pkgs/tools/networking/mtr/default.nix
index d4cfaa4ce9b..7470c07d937 100644
--- a/pkgs/tools/networking/mtr/default.nix
+++ b/pkgs/tools/networking/mtr/default.nix
@@ -10,10 +10,10 @@ let
     (builtins.attrNames (builtins.removeAttrs x helperArgNames));
   sourceInfo = rec {
     baseName="mtr";
-    version="0.80";
+    version="0.82";
     name="${baseName}-${version}";
     url="ftp://ftp.bitwizard.nl/${baseName}/${name}.tar.gz";
-    hash="1h0fzxy5cwml3p2nq749sq8mk2dsvm4qb1ah7a9hbf7kzabxvfvn";
+    hash="185nx4y6xn7vv6l3pbyc0ljmwfl4si4zszwad1jkbq1scb4mgd7k";
   };
 in
 rec {
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
index 5ef4a640d2a..0c04d76e23f 100644
--- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
+++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
@@ -71,10 +71,9 @@ buildPythonPackage {
     find "$out/share/doc/${name}" -name Makefile -exec rm -v {} \;
 
     # Run the tests once everything is installed.
-    # FIXME: Some of the tests want to run $out/bin/tahoe, which isn't usable
-    # yet because it gets wrapped later on, in `postFixup'.
     export PYTHON_EGG_CACHE="$TMPDIR"
-    : python setup.py trial
+    python setup.py build
+    python setup.py trial
   '';
 
   meta = {
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/test-timeout.patch b/pkgs/tools/networking/p2p/tahoe-lafs/test-timeout.patch
deleted file mode 100644
index f9867e64bf8..00000000000
--- a/pkgs/tools/networking/p2p/tahoe-lafs/test-timeout.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-See http://thread.gmane.org/gmane.comp.file-systems.tahoe.devel/3194 .
-
---- allmydata-tahoe-1.6.1/src/allmydata/test/test_immutable.py	2010-02-28 00:36:14.000000000 +0100
-+++ allmydata-tahoe-1.6.1/src/allmydata/test/test_immutable.py	2010-03-02 11:40:38.000000000 +0100
-@@ -6,6 +6,7 @@ from twisted.trial import unittest
- import random
- 
- class Test(common.ShareManglingMixin, unittest.TestCase):
-+    timeout = 240
-     def test_test_code(self):
-         # The following process of stashing the shares, running
-         # replace_shares, and asserting that the new set of shares equals the
diff --git a/pkgs/tools/networking/samplicator/default.nix b/pkgs/tools/networking/samplicator/default.nix
new file mode 100644
index 00000000000..a8733a7305a
--- /dev/null
+++ b/pkgs/tools/networking/samplicator/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "samplicator-${version}";
+  version = "1.3.7-beta6";
+
+  src = fetchurl {
+    url = "http://samplicator.googlecode.com/files/${name}.tar.gz";
+    sha1 = "2091af1898d6508ad9fd338a07e352e2387522d4";
+  };
+
+  meta = {
+    description = "Send copies of (UDP) datagrams to multiple receivers";
+    homepage = "http://code.google.com/p/samplicator/";
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/tools/networking/tcng/default.nix b/pkgs/tools/networking/tcng/default.nix
deleted file mode 100644
index 062977b455c..00000000000
--- a/pkgs/tools/networking/tcng/default.nix
+++ /dev/null
@@ -1,80 +0,0 @@
-{ stdenv, fetchurl, bison, flex, db4, perl, kernel, iproute }:
-
-# tcc can even compile kernel modules for speed reason.
-# that would be a nice use case to test!
-
-# something is still wrong. The output can't be pasred sometimes
-# Eg it contains continue/pass,drop/pass, drop/drop. I've replaced
-# them by ok, drop, drop using sed. I'm not sure wether this is the correct way
-# Man pages are missing as well. So use the link at the bottom
-
-let version = "10b"; in
-
-stdenv.mkDerivation {
-
-  name = "tcng-${version}";
-
-  src = fetchurl {
-    url = mirror://debian/pool/main/t/tcng/tcng_10b.orig.tar.gz;
-    sha256 = "1xjs0yn90rfa8ibxybg3gab1xzcjg60njymq2bd1b0a9i0arx7ji";
-  };
-
-  iproute2Src = iproute.src;
-
-  patches =
-    [ (fetchurl {
-        url = mirror://debian/pool/main/t/tcng/tcng_10b-2.diff.gz;
-        sha256 = "17i4s2ffif0k4b78gfhkp08lvvharbfvyhwbd0vkwgpria0b9zrd";
-      })
-    ];
-  
-  # one mailinglist post says you should just add your kernel version to the list.. (?)
-  patchPhase = ''
-    unset patchPhase
-    patchPhase
-    unpackFile $iproute2Src
-    IPROUTESRC=$(echo iproute*)
-    for script in $(find . -type f); do sed -e 's@#![ ]*/bin/bash@#! /bin/sh@' -i $script; done
-    find . -type f | xargs sed -i 's@/usr/bin/perl@${perl}/bin/perl@g'
-    find . -type f | xargs sed -i 's@/lib/cpp@cpp@g'
-  '';
-
-  # gentoo ebulid says tcsim doesn't compile with 2.6 headers..
-  # DATADIR can still be overridden by env TOPDIR=...
-  # Don't know whats it for except including the default .tc files
-  configurePhase=''
-    cat >> config << EOF
-    YACC="yacc"
-    DATA_DIR="$out/lib/tcng"
-    EOF
-    ./configure \
-    --kernel ${kernel}/lib/modules/2.6.28.6-default/build \
-    --iproute2 $IPROUTESRC \
-    --install-directory $out \
-    --no-manual \
-    --with-tcsim
-  '';
-
-  # hacky, how to enable building tcc the correct way?
-  # adding shared and tcc to SUBDIRS and run make again isn't nice but works
-  buildPhase = ''
-    sed -i 's@^\(SUBDIRS.*\)@\1 shared tcc@' Makefile 
-    make
-  '';
-
-  # manually copy tcc and include files.. see comment above
-  installPhase = ''
-    mkdir -p $out{,/sbin,/lib/tcng/include}
-    make DESTDIR=$out install
-    cp tcc/tcc $out/sbin
-    cp tcc/*.tc $out/lib/tcng/include
-  '';
-
-  buildInputs = [ bison flex db4 perl ];
-
-  meta = { 
-    description = "tcng - Traffic Control Next Generation";
-    homepage = "http://tcng.sourceforge.net/";
-    license = "GPLv2";
-  };
-}
diff --git a/pkgs/tools/networking/wbox/default.nix b/pkgs/tools/networking/wbox/default.nix
new file mode 100644
index 00000000000..aa29b8be34f
--- /dev/null
+++ b/pkgs/tools/networking/wbox/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "wbox-${version}";
+  version = "5";
+
+  installPhase = ''
+    install -vD wbox "$out/bin/wbox"
+  '';
+
+  src = fetchurl {
+    url = "http://www.hping.org/wbox/${name}.tar.gz";
+    sha256 = "06daxwbysppvbh1mwprw8fgsp6mbd3kqj7a978w7ivn8hdgdi28m";
+  };
+
+  meta = {
+    description = "A simple HTTP benchmarking tool";
+    homepage = "http://www.hping.org/wbox/";
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/pkgs/tools/package-management/dpkg/cache-arch.patch b/pkgs/tools/package-management/dpkg/cache-arch.patch
new file mode 100644
index 00000000000..9677c8fdee3
--- /dev/null
+++ b/pkgs/tools/package-management/dpkg/cache-arch.patch
@@ -0,0 +1,15 @@
+Don't invoke "dpkg --print-architecture" for every call to
+Dpkg::Arch::get_raw_build_arch().
+
+diff -ru -x '*~' dpkg-1.16.9/scripts/Dpkg/Arch.pm dpkg-1.16.9-new/scripts/Dpkg/Arch.pm
+--- dpkg-1.16.9/scripts/Dpkg/Arch.pm	2012-10-20 06:34:17.000000000 +0200
++++ dpkg-1.16.9-new/scripts/Dpkg/Arch.pm	2012-12-04 19:42:20.451002537 +0100
+@@ -59,7 +59,7 @@
+ 	# dpkg-architecture itself, by avoiding computing the DEB_BUILD_
+ 	# variables when they are not requested.
+ 
+-	my $build_arch = `dpkg --print-architecture`;
++	$build_arch = `dpkg --print-architecture`;
+ 	syserr("dpkg --print-architecture failed") if $? >> 8;
+ 
+ 	chomp $build_arch;
diff --git a/pkgs/tools/package-management/dpkg/default.nix b/pkgs/tools/package-management/dpkg/default.nix
index 849780ad047..e801bcfb2c2 100644
--- a/pkgs/tools/package-management/dpkg/default.nix
+++ b/pkgs/tools/package-management/dpkg/default.nix
@@ -10,6 +10,8 @@ stdenv.mkDerivation {
     sha256 = "0ykby9x4x2zb7rfj30lfjcsrq2q32z2lnsrl8pbdvb2l9sx7zkbk";
   };
 
+  patches = [ ./cache-arch.patch ];
+
   configureFlags = "--disable-dselect --with-admindir=/var/lib/dpkg PERL_LIBDIR=$(out)/${perl.libPrefix}";
 
   preConfigure = ''
diff --git a/pkgs/tools/package-management/nix/custom.nix b/pkgs/tools/package-management/nix/custom.nix
deleted file mode 100644
index b760e4b7f4d..00000000000
--- a/pkgs/tools/package-management/nix/custom.nix
+++ /dev/null
@@ -1,68 +0,0 @@
-{ stdenv, fetchurl, aterm, db4, perl, curl, bzip2, openssl ? null
-, storeDir ? "/nix/store"
-, stateDir ? "/nix/var"
-, src
-, preConfigure ? ""
-, autoconf ? null, automake ? null, libtool ? null
-, bison ? null
-, flex ? null
-, w3m ? null
-, libxml2 ? null
-, docbook5_xsl ? null, libxslt ? null
-, docbook5 ? null, docbook_xml_dtd_43 ? null 
-, perlPackages
-, boehmgc ? null
-, pkgconfig ? null
-, sqlite ? null
-, configureFlags ? []
-, lib
-, enableScripts ? []
-}:
-
-stdenv.mkDerivation {
-  name = "nix-custom";
-  
-  inherit src;
-
-  buildInputs = [perl curl openssl bzip2 ] 
-  	++ (if automake != null then [automake] else [])
-  	++ (if autoconf != null then [autoconf] else [])
-  	++ (if libtool != null then [libtool] else [])
-  	++ (if bison != null then [bison] else [])
-  	++ (if flex != null then [flex] else [])
-  	++ (if docbook5_xsl != null then [docbook5_xsl] else [])
-  	++ (if libxslt != null then [libxslt] else [])
-  	++ (if docbook5 != null then [docbook5] else [])
-  	++ (if docbook_xml_dtd_43 != null then [docbook_xml_dtd_43] else [])
-  	++ (if w3m != null then [w3m] else [])
-  	++ (if libxml2 != null then [libxml2] else [])
-  	++ (if boehmgc != null then [boehmgc] else [])
-  	++ (if sqlite != null then [sqlite] else [])
-  	++ (if pkgconfig != null then [pkgconfig] else [])
-  ;
-
-  preConfigure = 
-    (lib.concatMapStrings (script:
-      ''
-        sed -e '/bin_SCRIPTS = /a${script} \\' -i scripts/Makefile.am
-      ''
-    ) enableScripts)
-    + preConfigure
-    + "\n./bootstrap.sh";
-
-  configureFlags = ''
-    --with-store-dir=${storeDir} --localstatedir=${stateDir}
-    --with-aterm=${aterm} --with-bdb=${db4} --with-bzip2=${bzip2}
-    --with-sqlite=${sqlite}
-    --disable-init-state
-    --with-dbi=${perlPackages.DBI}/lib/perl5/site_perl
-    --with-dbd-sqlite=${perlPackages.DBDSQLite}/lib/perl5/site_perl
-    ${toString configureFlags}
-  '';
-
-  meta = {
-    description = "The Nix Deployment System";
-    homepage = http://nixos.org/;
-    license = "LGPL";
-  };
-}
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index e433aa60579..e6f15b7a5e5 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -5,11 +5,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "nix-1.1";
+  name = "nix-1.2";
 
   src = fetchurl {
-    url = "http://hydra.nixos.org/build/2860022/download/4/${name}.tar.bz2";
-    sha256 = "edb2fc444eda49be144ca2901f1fc9472cd24896775ba02556ded5705863d324";
+    url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz";
+    sha256 = "2f7c2d27e240b6a43ebfba330127072e3fb1473c17dbfc5e9662ea589dfd16e5";
   };
 
   buildNativeInputs = [ perl pkgconfig ];
@@ -27,8 +27,9 @@ stdenv.mkDerivation rec {
   configureFlags =
     ''
       --with-store-dir=${storeDir} --localstatedir=${stateDir}
-      --with-dbi=${perlPackages.DBI}/lib/perl5/site_perl
-      --with-dbd-sqlite=${perlPackages.DBDSQLite}/lib/perl5/site_perl
+      --with-dbi=${perlPackages.DBI}/${perl.libPrefix}
+      --with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
+      --with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}
       --disable-init-state
       --enable-gc
       CFLAGS=-O3 CXXFLAGS=-O3
@@ -45,15 +46,16 @@ stdenv.mkDerivation rec {
     configureFlags =
       ''
         --with-store-dir=${storeDir} --localstatedir=${stateDir}
-        --with-dbi=${perlPackages.DBI}/lib/perl5/site_perl
-        --with-dbd-sqlite=${perlPackages.DBDSQLite}/lib/perl5/site_perl
+        --with-dbi=${perlPackages.DBI}/${perl.libPrefix}
+        --with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}
+        --with-www-curl=${perlPackages.WWWCurl}/${perl.libPrefix}
         --disable-init-state
         --enable-gc
         CFLAGS=-O3 CXXFLAGS=-O3
       '' + stdenv.lib.optionalString (
           stdenv.cross ? nix && stdenv.cross.nix ? system
       ) ''--with-system=${stdenv.cross.nix.system}'';
-      
+
     doInstallCheck = false;
   };
 
diff --git a/pkgs/tools/security/pinentry/duplicate-glib-defs.patch b/pkgs/tools/security/pinentry/duplicate-glib-defs.patch
deleted file mode 100644
index 78796ee2f53..00000000000
--- a/pkgs/tools/security/pinentry/duplicate-glib-defs.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Comment out definitions of functions that are part of Glib.
-
---- pinentry-0.7.5/gtk+-2/gtksecentry.c	2007-11-19 12:20:50.000000000 +0100
-+++ pinentry-0.7.5/gtk+-2/gtksecentry.c	2008-12-08 22:08:22.000000000 +0100
-@@ -269,6 +269,7 @@ gboolean g_use_secure_mem = FALSE;
- 				} while(0)
- 
- 
-+#if 0
- gpointer
- g_malloc(gulong size)
- {
-@@ -347,6 +348,7 @@ g_free(gpointer mem)
- 	    free(mem);
-     }
- }
-+#endif
- 
- GType
- gtk_secure_entry_get_type(void)
diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix
index 3d2360196a6..c56f9454fcd 100644
--- a/pkgs/tools/security/tor/default.nix
+++ b/pkgs/tools/security/tor/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, libevent, openssl, zlib }:
 
 stdenv.mkDerivation rec {
-  name = "tor-0.2.2.35";
+  name = "tor-0.2.3.25";
 
   src = fetchurl {
     url = "http://www.torproject.org/dist/${name}.tar.gz";
-    sha256 = "f141a41fffd31494a0f96ebbb6b999eab33ce62d5c31f81222a0acd034adbf3a";
+    sha256 = "bb2d6f1136f33e11d37e6e34184143bf191e59501613daf33ae3d6f78f3176a0";
   };
 
 #  patchPhase =
diff --git a/pkgs/tools/system/monit/src-for-default.nix b/pkgs/tools/system/monit/src-for-default.nix
index f024801515f..b74958ae19a 100644
--- a/pkgs/tools/system/monit/src-for-default.nix
+++ b/pkgs/tools/system/monit/src-for-default.nix
@@ -1,8 +1,9 @@
 rec {
-  advertisedUrl="http://mmonit.com/monit/download/../dist/monit-5.0.3.tar.gz";
-  version = "5.0.3";
-  url="http://mmonit.com/monit/download/../dist/monit-5.0.3.tar.gz";
-  hash = "1lw7qp5906cb9jg8ifhfy9cvv4gbd28mkapgfpx0klb17jdm7ljx";
-  name = "monit-5.0.3";
+   version="5.5";
+   name="monit-5.5";
+   hash="0lvw9llsnaj72dp6di74sc4sxpa4q3g23m28jwy4brphndhb0xl2";
+   url="http://mmonit.com/monit/download/../dist/monit-${version}.tar.gz";
+   advertisedUrl="http://mmonit.com/monit/download/../dist/monit-5.5.tar.gz";
+  
   
 }
diff --git a/pkgs/tools/text/ascii/default.nix b/pkgs/tools/text/ascii/default.nix
new file mode 100644
index 00000000000..769cf389426
--- /dev/null
+++ b/pkgs/tools/text/ascii/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "ascii-${version}";
+  version = "3.12";
+
+  src = fetchurl {
+    url = "http://www.catb.org/~esr/ascii/${name}.tar.gz";
+    sha256 = "17jhmmdbhzzaai0lr5aslg0nmqchq1ygdxwd8pgl7qn2jnxhc6ci";
+  };
+
+  prePatch = ''
+    sed -i -e 's|$(DESTDIR)/usr|$(out)|g' Makefile
+  '';
+
+  preInstall = ''
+    mkdir -vp "$out/bin" "$out/share/man/man1"
+  '';
+
+  meta = {
+    description = "Interactive ASCII name and synonym chart";
+    homepage = "http://www.catb.org/~esr/ascii/";
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/pkgs/tools/typesetting/hevea/builder.sh b/pkgs/tools/typesetting/hevea/builder.sh
index 7598da5d0a5..05c93fe7da7 100644
--- a/pkgs/tools/typesetting/hevea/builder.sh
+++ b/pkgs/tools/typesetting/hevea/builder.sh
@@ -10,10 +10,5 @@ cd hevea-*
 sed s+/usr/local+$out+ Makefile > Makefile.new
 mv Makefile.new Makefile
 
-if test "x$system" = "xpowerpc-darwin"; then
-  sed s/CPP=cpp\ -E\ -P/CPP=m4\ -E\ -E\ -P/ Makefile > Makefile.new
-  mv Makefile.new Makefile
-fi
-
 make
 make install
diff --git a/pkgs/tools/typesetting/tex/dblatex/default.nix b/pkgs/tools/typesetting/tex/dblatex/default.nix
index 05f4bd7a9fa..fa4746a562e 100644
--- a/pkgs/tools/typesetting/tex/dblatex/default.nix
+++ b/pkgs/tools/typesetting/tex/dblatex/default.nix
@@ -1,16 +1,19 @@
 { stdenv, fetchurl, python, libxslt, tetex }:
 
 stdenv.mkDerivation rec {
-  name = "dblatex-0.3.2";
+  name = "dblatex-0.3.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/dblatex/${name}.tar.bz2";
-    sha256 = "0jg2acv2lyrbw06l8rr0id75lj1pws7xbsmryq58r3n13xzb1p7b";
+    sha256 = "120w3wm07qx0k1grgdhjwm2vpwil71icshjvqznskp1f6ggch290";
   };
 
   buildPhase = "true";
   
-  installPhase = "python ./setup.py install --prefix=$out";
+  installPhase = ''
+    sed -i 's|self.install_layout == "deb"|False|' setup.py
+    python ./setup.py install --prefix=$out
+  '';
 
   buildInputs = [ python libxslt tetex ];
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e8bb9d0a07b..93eee9d9170 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -24,7 +24,7 @@
 , # Non-GNU/Linux OSes are currently "impure" platforms, with their libc
   # outside of the store.  Thus, GCC, GFortran, & co. must always look for
   # files in standard system directories (/usr/include, etc.)
-  noSysDirs ? (system != "x86_64-darwin" && system != "i686-darwin"
+  noSysDirs ? (system != "x86_64-darwin"
                && system != "x86_64-freebsd" && system != "i686-freebsd"
                && system != "x86_64-kfreebsd-gnu")
 
@@ -165,7 +165,7 @@ let
   x11 = xlibsWrapper;
 
   # `xlibs' is the set of X library components.  This used to be the
-  # old modular X libraries project (called `xlibs') but now it's just
+  # old modular X llibraries project (called `xlibs') but now it's just
   # the set of packages in the modular X.org tree (which also includes
   # non-library components like the server, drivers, fonts, etc.).
   xlibs = xorg // {xlibs = xlibsWrapper;};
@@ -378,6 +378,10 @@ let
     jre = jdk;
   };
 
+  argyllcms = callPackage ../tools/graphics/argyllcms {};
+
+  ascii = callPackage ../tools/text/ascii { };
+
   asymptote = builderDefsPackage ../tools/graphics/asymptote {
     inherit freeglut ghostscriptX imagemagick fftw boehmgc
       mesa ncurses readline gsl libsigsegv python zlib perl
@@ -460,6 +464,8 @@ let
 
   catdoc = callPackage ../tools/text/catdoc { };
 
+  dlx = callPackage ../misc/emulators/dlx { };
+
   eggdrop = callPackage ../tools/networking/eggdrop { };
 
   enca = callPackage ../tools/text/enca { };
@@ -527,6 +533,7 @@ let
 
   cfdg = builderDefsPackage ../tools/graphics/cfdg {
     inherit libpng bison flex;
+    ffmpeg = ffmpeg_1_0;
   };
 
   checkinstall = callPackage ../tools/package-management/checkinstall { };
@@ -543,12 +550,16 @@ let
 
   colordiff = callPackage ../tools/text/colordiff { };
 
+  connect = callPackage ../tools/networking/connect { };
+
   convertlit = callPackage ../tools/text/convertlit { };
 
   cowsay = callPackage ../tools/misc/cowsay { };
 
   unifdef = callPackage ../development/tools/misc/unifdef { };
 
+  "unionfs-fuse" = callPackage ../tools/filesystems/unionfs-fuse { };
+
   usb_modeswitch = callPackage ../development/tools/misc/usb-modeswitch { };
 
   clamav = callPackage ../tools/security/clamav { };
@@ -559,29 +570,24 @@ let
 
   convmv = callPackage ../tools/misc/convmv { };
 
-  coreutils = callPackage (if stdenv ? isDietLibC
-      then ../tools/misc/coreutils-5
-      else ../tools/misc/coreutils)
-    {
-      # TODO: Add ACL support for cross-Linux.
-      aclSupport = crossSystem == null && stdenv.isLinux;
-    };
+  coreutils = callPackage ../tools/misc/coreutils {
+    # TODO: Add ACL support for cross-Linux.
+    aclSupport = crossSystem == null && stdenv.isLinux;
+  };
 
   cpio = callPackage ../tools/archivers/cpio { };
 
   cromfs = callPackage ../tools/archivers/cromfs { };
 
-  cron = callPackage ../tools/system/cron {  # see also fcron
-  };
+  cron = callPackage ../tools/system/cron { };
 
   cudatoolkit = callPackage ../development/compilers/cudatoolkit {
     python = python26;
   };
 
-  curl = makeOverridable (import ../tools/networking/curl) rec {
+  curl = callPackage ../tools/networking/curl rec {
     fetchurl = fetchurlBoot;
-    inherit stdenv zlib openssl libssh2;
-    zlibSupport = ! ((stdenv ? isDietLibC) || (stdenv ? isStatic));
+    zlibSupport = true;
     sslSupport = zlibSupport;
     scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;
   };
@@ -590,8 +596,7 @@ let
 
   curlftpfs = callPackage ../tools/filesystems/curlftpfs { };
 
-  dadadodo = builderDefsPackage (import ../tools/text/dadadodo) {
-  };
+  dadadodo = builderDefsPackage (import ../tools/text/dadadodo) { };
 
   dar = callPackage ../tools/archivers/dar { };
 
@@ -619,6 +624,8 @@ let
 
   desktop_file_utils = callPackage ../tools/misc/desktop-file-utils { };
 
+  despotify = callPackage ../development/libraries/despotify { };
+
   dev86 = callPackage ../development/compilers/dev86 {
     /* Using GNU Make 3.82 leads to this:
          make[4]: *** No rule to make target `__ldivmod.o)'
@@ -679,8 +686,7 @@ let
 
   ecryptfs = callPackage ../tools/security/ecryptfs { };
 
-  edk2 = callPackage ../development/compilers/edk2 {
-  };
+  edk2 = callPackage ../development/compilers/edk2 { };
 
   efibootmgr = callPackage ../tools/system/efibootmgr { };
 
@@ -719,12 +725,7 @@ let
 
   fileschanged = callPackage ../tools/misc/fileschanged { };
 
-  findutils =
-    if stdenv.isDarwin
-    then findutils4227
-    else callPackage ../tools/misc/findutils { };
-
-  findutils4227 = callPackage ../tools/misc/findutils/4.2.27.nix { };
+  findutils = callPackage ../tools/misc/findutils { };
 
   finger_bsd = callPackage ../tools/networking/bsd-finger { };
 
@@ -736,7 +737,7 @@ let
 
   flvtool2 = callPackage ../tools/video/flvtool2 { };
 
-  fontforge = callPackage ../tools/misc/fontforge { };
+  fontforge = lowPrio (callPackage ../tools/misc/fontforge { });
 
   fontforgeX = callPackage ../tools/misc/fontforge {
     withX11 = true;
@@ -789,9 +790,7 @@ let
 
   gifsicle = callPackage ../tools/graphics/gifsicle { };
 
-  glusterfs = builderDefsPackage ../tools/filesystems/glusterfs {
-    inherit fuse flex bison;
-  };
+  glusterfs = callPackage ../tools/filesystems/glusterfs { };
 
   glxinfo = callPackage ../tools/graphics/glxinfo { };
 
@@ -915,6 +914,8 @@ let
 
   host = callPackage ../tools/networking/host { };
 
+  hping = callPackage ../tools/networking/hping { };
+
   httpfs2 = callPackage ../tools/filesystems/httpfs { };
 
   # FIXME: This Hydra snapshot is outdated and depends on the `nixPerl',
@@ -1466,6 +1467,8 @@ let
 
   salut_a_toi = callPackage ../applications/networking/instant-messengers/salut-a-toi {};
 
+  samplicator = callPackage ../tools/networking/samplicator { };
+
   screen = callPackage ../tools/misc/screen { };
 
   scrot = callPackage ../tools/graphics/scrot { };
@@ -1510,9 +1513,9 @@ let
 
   sourceHighlight = callPackage ../tools/text/source-highlight { };
 
-  socat2pre = builderDefsPackage ../tools/networking/socat/2.0.0-b3.nix {
+  socat2pre = lowPrio (builderDefsPackage ../tools/networking/socat/2.0.0-b3.nix {
     inherit fetchurl stdenv openssl;
-  };
+  });
 
   squashfsTools = callPackage ../tools/filesystems/squashfs { };
 
@@ -1560,12 +1563,6 @@ let
 
   tcpdump = callPackage ../tools/networking/tcpdump { };
 
-  /*
-  tcng = callPackage ../tools/networking/tcng {
-    kernel = linux_2_6_27;
-  };
-  */
-
   telnet = callPackage ../tools/networking/telnet { };
 
   texmacs = callPackage ../applications/editors/texmacs {
@@ -1583,7 +1580,6 @@ let
   trickle = callPackage ../tools/networking/trickle {};
 
   ttf2pt1 = callPackage ../tools/misc/ttf2pt1 { };
-  ttf2pt1_cl_pdf = callPackage ../tools/misc/ttf2pt1 { };
 
   ucl = callPackage ../development/libraries/ucl { };
 
@@ -1633,6 +1629,8 @@ let
 
   vtun = callPackage ../tools/networking/vtun { };
 
+  wbox = callPackage ../tools/networking/wbox {};
+
   welkin = callPackage ../tools/graphics/welkin {};
 
   testdisk = callPackage ../tools/misc/testdisk { };
@@ -1702,7 +1700,7 @@ let
 
   unzip = callPackage ../tools/archivers/unzip { };
 
-  unzipNLS = unzip.override { enableNLS = true; };
+  unzipNLS = lowPrio (unzip.override { enableNLS = true; });
 
   uptimed = callPackage ../tools/system/uptimed { };
 
@@ -1836,8 +1834,6 @@ let
 
   dash = callPackage ../shells/dash { };
 
-  ipython = callPackage ../shells/ipython { };
-
   tcsh = callPackage ../shells/tcsh { };
 
   rush = callPackage ../shells/rush { };
@@ -2136,17 +2132,14 @@ let
   }));
 
   gccApple =
-    wrapGCC (makeOverridable
-      (if stdenv.system == "i686-darwin"
-       then import ../development/compilers/gcc/4.2-apple32
-       else import ../development/compilers/gcc/4.2-apple64) {
-         inherit fetchurl noSysDirs;
-         profiledCompiler = true;
-
-         # Since it fails to build with GCC 4.6, build it with the "native"
-         # Apple-GCC.
-         stdenv = allStdenvs.stdenvNative;
-       });
+    assert stdenv.isDarwin;
+    wrapGCC (makeOverridable (import ../development/compilers/gcc/4.2-apple64) {
+      inherit fetchurl noSysDirs;
+      profiledCompiler = true;
+      # Since it fails to build with GCC 4.6, build it with the "native"
+      # Apple-GCC.
+      stdenv = allStdenvs.stdenvNative;
+    });
 
   gccupc40 = wrapGCCUPC (import ../development/compilers/gcc-upc-4.0 {
     inherit fetchurl stdenv bison autoconf gnum4 noSysDirs;
@@ -2394,6 +2387,11 @@ let
 
   haxe = callPackage ../development/compilers/haxe { };
 
+  hiphopvm = callPackage ../development/interpreters/hiphopvm {
+    libevent = libevent14;
+    boost = boost149;
+  };
+
   falcon = builderDefsPackage (import ../development/interpreters/falcon) {
     inherit cmake;
   };
@@ -2411,26 +2409,23 @@ let
 
   ikarus = callPackage ../development/compilers/ikarus { };
 
-  #TODO add packages http://cvs.haskell.org/Hugs/downloads/2006-09/packages/ and test
-  # commented out because it's using the new configuration style proposal which is unstable
   hugs = callPackage ../development/compilers/hugs { };
 
   path64 = callPackage ../development/compilers/path64 { };
 
-  openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix {};
-
-  openjdkStage1 = callPackage ../development/compilers/openjdk {
-    jdk = pkgs.openjdkBootstrap;
-    ant = pkgs.ant.override { jdk = pkgs.openjdkBootstrap; };
-  };
-
   openjdk =
     if stdenv.isDarwin then
       callPackage ../development/compilers/openjdk-darwin { }
     else
-      callPackage ../development/compilers/openjdk {
-        jdk = pkgs.openjdkStage1;
-        ant = pkgs.ant.override { jdk = pkgs.openjdkStage1; };
+      let
+        openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix {};
+        openjdkStage1 = callPackage ../development/compilers/openjdk {
+          jdk = openjdkBootstrap;
+          ant = pkgs.ant.override { jdk = openjdkBootstrap; };
+        };
+      in callPackage ../development/compilers/openjdk {
+        jdk = openjdkStage1;
+        ant = pkgs.ant.override { jdk = openjdkStage1; };
       };
 
   openjre = pkgs.openjdk.override {
@@ -2446,20 +2441,18 @@ let
 
   oraclejdk = pkgs.jdkdistro true false;
 
-  oraclejre = pkgs.jdkdistro false false;
+  oraclejre = lowPrio (pkgs.jdkdistro false false);
 
   jrePlugin = lowPrio (pkgs.jdkdistro false true);
 
   supportsJDK =
     system == "i686-linux" ||
-    system == "x86_64-linux" ||
-    system == "i686-cygwin";
+    system == "x86_64-linux";
 
   jdkdistro = installjdk: pluginSupport:
-       (assert supportsJDK;
-    (if pluginSupport then appendToName "plugin" else x: x) (import ../development/compilers/jdk {
-      inherit fetchurl stdenv unzip installjdk xlibs pluginSupport makeWrapper cabextract;
-    }));
+    assert supportsJDK;
+    (if pluginSupport then appendToName "plugin" else x: x)
+      (callPackage ../development/compilers/jdk/jdk6-linux.nix { });
 
   jikes = callPackage ../development/compilers/jikes { };
 
@@ -2906,10 +2899,6 @@ let
 
   avr8burnomat = callPackage ../development/misc/avr8-burn-omat { };
 
-  /*
-  toolbus = callPackage ../development/interpreters/toolbus { };
-  */
-
   sourceFromHead = import ../build-support/source-from-head-fun.nix {
     inherit config;
   };
@@ -2993,10 +2982,10 @@ let
     inherit noSysDirs;
   };
 
-  binutils_gold = callPackage ../development/tools/misc/binutils {
+  binutils_gold = lowPrio (callPackage ../development/tools/misc/binutils {
     inherit noSysDirs;
     gold = true;
-  };
+  });
 
   binutilsCross = lowPrio (forceBuildDrv (import ../development/tools/misc/binutils {
     inherit stdenv fetchurl zlib;
@@ -3022,6 +3011,8 @@ let
 
   byacc = callPackage ../development/tools/parsing/byacc { };
 
+  casperjs = callPackage ../development/tools/casperjs { };
+
   cbrowser = callPackage ../development/tools/misc/cbrowser { };
 
   ccache = callPackage ../development/tools/misc/ccache { };
@@ -3217,6 +3208,8 @@ let
 
   peg = callPackage ../development/tools/parsing/peg { };
 
+  phantomjs = callPackage ../development/tools/phantomjs { };
+
   pmccabe = callPackage ../development/tools/misc/pmccabe { };
 
   /* Make pkgconfig always return a buildDrv, never a proper hostDrv,
@@ -3226,7 +3219,7 @@ let
      buildNativeInput after the renaming.
      */
   pkgconfig = forceBuildDrv (callPackage ../development/tools/misc/pkgconfig { });
-  pkgconfigUpstream = pkgconfig.override { vanilla = true; };
+  pkgconfigUpstream = lowPrio (pkgconfig.override { vanilla = true; });
 
   premake = callPackage ../development/tools/misc/premake { };
 
@@ -3243,6 +3236,8 @@ let
 
   ragel = callPackage ../development/tools/parsing/ragel { };
 
+  re2c = callPackage ../development/tools/parsing/re2c { };
+
   remake = callPackage ../development/tools/build-managers/remake { };
 
   # couldn't find the source yet
@@ -3529,6 +3524,8 @@ let
 
   eigen = callPackage ../development/libraries/eigen {};
 
+  eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};
+
   enchant = callPackage ../development/libraries/enchant { };
 
   enet = callPackage ../development/libraries/enet { };
@@ -3752,26 +3749,26 @@ let
   glibcInfo = callPackage ../development/libraries/glibc/2.13/info.nix { };
 
   glibc_multi =
-      runCommand "${glibc.name}-multi"
-        { glibc64 = glibc;
-          glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;
-        }
-        ''
-          mkdir -p $out
-          ln -s $glibc64/* $out/
-
-          rm $out/lib $out/lib64
-          mkdir -p $out/lib
-          ln -s $glibc64/lib/* $out/lib
-          ln -s $glibc32/lib $out/lib/32
-          ln -s lib $out/lib64
-
-          rm $out/include
-          cp -rs $glibc32/include $out
-          chmod -R u+w $out/include
-          cp -rsf $glibc64/include $out
-        '' # */
-        ;
+    runCommand "${glibc.name}-multi"
+      { glibc64 = glibc;
+        glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;
+      }
+      ''
+        mkdir -p $out
+        ln -s $glibc64/* $out/
+
+        rm $out/lib $out/lib64
+        mkdir -p $out/lib
+        ln -s $glibc64/lib/* $out/lib
+        ln -s $glibc32/lib $out/lib/32
+        ln -s lib $out/lib64
+
+        rm $out/include
+        cp -rs $glibc32/include $out
+        chmod -R u+w $out/include
+        cp -rsf $glibc64/include $out
+      '' # */
+      ;
 
   glpk = callPackage ../development/libraries/glpk { };
 
@@ -3779,22 +3776,14 @@ let
 
   gmm = callPackage ../development/libraries/gmm { };
 
-  gmp =
-    if stdenv.system == "i686-darwin" then
-      # GMP 4.3.2 is broken on Darwin, so use 4.3.1.
-      callPackage ../development/libraries/gmp/4.3.1.nix { }
-    else
-      callPackage ../development/libraries/gmp/5.0.5.nix { };
+  gmp = gmp5;
 
   gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; });
 
   # The GHC bootstrap binaries link against libgmp.so.3, which is in GMP 4.x.
-  gmp4 =
-    if stdenv.system == "i686-darwin" then
-      # GMP 4.3.2 is broken on Darwin, so use 4.3.1.
-      callPackage ../development/libraries/gmp/4.3.1.nix { }
-    else
-      callPackage ../development/libraries/gmp/4.3.2.nix { };
+  gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { };
+
+  gmp5 = callPackage ../development/libraries/gmp/5.0.5.nix { };
 
   gobjectIntrospection = callPackage ../development/libraries/gobject-introspection { };
 
@@ -3862,6 +3851,8 @@ let
   gnutls_without_guile = gnutls.override { guileBindings = false; };
   gnutls2_without_guile = gnutls2.override { guileBindings = false; };
 
+  gpac = callPackage ../applications/video/gpac { };
+
   gpgme = callPackage ../development/libraries/gpgme {
     gnupg1 = gnupg1orig;
   };
@@ -3994,6 +3985,8 @@ let
 
   iniparser = callPackage ../development/libraries/iniparser { };
 
+  inteltbb = callPackage ../development/libraries/intel-tbb { };
+
   intltool = gnome.intltool;
   intltool_standalone = callPackage ../development/tools/misc/intltool {};
 
@@ -4145,6 +4138,8 @@ let
 
   libdvdread = callPackage ../development/libraries/libdvdread { };
 
+  libdwarf = callPackage ../development/libraries/libdwarf { };
+
   libebml = callPackage ../development/libraries/libebml { };
 
   libedit = callPackage ../development/libraries/libedit { };
@@ -4167,13 +4162,13 @@ let
 
   liblo = callPackage ../development/libraries/liblo { };
 
-  liblrdf = callPackage ../development/libraries/liblrdf {};
+  liblrdf = librdf;
 
   liblscp = callPackage ../development/libraries/liblscp { };
 
-  libev = builderDefsPackage ../development/libraries/libev {
-  };
+  libev = builderDefsPackage ../development/libraries/libev { };
 
+  libevent14 = callPackage ../development/libraries/libevent/1.4.nix { };
   libevent = callPackage ../development/libraries/libevent { };
 
   libewf = callPackage ../development/libraries/libewf { };
@@ -4232,6 +4227,8 @@ let
 
   liblockfile = callPackage ../development/libraries/liblockfile { };
 
+  libmcrypt = callPackage ../development/libraries/libmcrypt {};
+
   libmhash = callPackage ../development/libraries/libmhash {};
 
   libmtp = callPackage ../development/libraries/libmtp { };
@@ -4302,6 +4299,8 @@ let
 
   libmcs = callPackage ../development/libraries/libmcs { };
 
+  libmemcached = callPackage ../development/libraries/libmemcached { };
+
   libmicrohttpd = callPackage ../development/libraries/libmicrohttpd { };
 
   libmikmod = callPackage ../development/libraries/libmikmod { };
@@ -4431,9 +4430,9 @@ let
 
   libunwind = callPackage ../development/libraries/libunwind { };
 
-  libv4l = v4l_utils.override {
+  libv4l = lowPrio (v4l_utils.override {
     withQt4 = false;
-  };
+  });
 
   libva = callPackage ../development/libraries/libva { };
 
@@ -4485,9 +4484,9 @@ let
     pythonSupport = false;
   };
 
-  libxml2Python = libxml2.override {
+  libxml2Python = lowPrio (libxml2.override {
     pythonSupport = true;
-  };
+  });
 
   libxmlxx = callPackage ../development/libraries/libxmlxx { };
 
@@ -4534,11 +4533,7 @@ let
   # failed to build
   mediastreamer = callPackage ../development/libraries/mediastreamer { };
 
-  mesaSupported =
-    system == "i686-linux" ||
-    system == "x86_64-linux" ||
-    system == "x86_64-darwin" ||
-    system == "i686-darwin";
+  mesaSupported = lib.elem system lib.platforms.mesaPlatforms;
 
   mesa = callPackage ../development/libraries/mesa { };
 
@@ -4628,7 +4623,7 @@ let
 
   nspr = callPackage ../development/libraries/nspr { };
 
-  nss = callPackage ../development/libraries/nss { };
+  nss = lowPrio (callPackage ../development/libraries/nss { });
 
   nssTools = callPackage ../development/libraries/nss {
     includeTools = true;
@@ -4636,13 +4631,14 @@ let
 
   ntrack = callPackage ../development/libraries/ntrack { };
 
-  ode = builderDefsPackage (import ../development/libraries/ode) {
-  };
+  ode = builderDefsPackage (import ../development/libraries/ode) { };
 
   ogre = callPackage ../development/libraries/ogre {};
 
   ogrepaged = callPackage ../development/libraries/ogrepaged { };
 
+  oniguruma = callPackage ../development/libraries/oniguruma { };
+
   openal = callPackage ../development/libraries/openal { };
 
   # added because I hope that it has been easier to compile on x86 (for blender)
@@ -4709,12 +4705,10 @@ let
 
   pcre = callPackage ../development/libraries/pcre {
     unicodeSupport = config.pcre.unicode or true;
-    cplusplusSupport = !stdenv ? isDietLibC;
   };
 
   pcre_8_30 = callPackage ../development/libraries/pcre/8.30.nix {
     unicodeSupport = config.pcre.unicode or true;
-    cplusplusSupport = !stdenv ? isDietLibC;
   };
 
   pdf2xml = callPackage ../development/libraries/pdf2xml {} ;
@@ -4791,15 +4785,8 @@ let
     inherit (pkgs.gnome) libgnomeui GConf gnome_vfs;
   };
 
-  qt4_for_skype = qt48.override {
-    mysql = null;
-    postgresql = null;
-    libtiff = null;
-    libmng = null;
-    cups = null;
-    flashplayerFix = false;
-    gstreamer = null;
-    gst_plugins_base = null;
+  qt4_for_qtcreator = qt48.override {
+    developerBuild = true;
   };
 
   qtscriptgenerator = callPackage ../development/libraries/qtscriptgenerator { };
@@ -4918,6 +4905,7 @@ let
   spice = callPackage ../development/libraries/spice {
     celt = celt_0_5_1;
     inherit (xlibs) libXrandr libXfixes libXext libXrender libXinerama;
+    inherit (pythonPackages) pyparsing;
   };
 
   spice_protocol = callPackage ../development/libraries/spice-protocol { };
@@ -4972,8 +4960,6 @@ let
 
   tcltls = callPackage ../development/libraries/tcltls { };
 
-  tcp_wrappers = callPackage ../development/libraries/tcp-wrappers {};
-
   tdb = callPackage ../development/libraries/tdb { };
 
   tecla = callPackage ../development/libraries/tecla { };
@@ -5144,20 +5130,19 @@ let
     fetchurl = fetchurlBoot;
   };
 
-  zlibStatic = lowPrio (appendToName "static" (import ../development/libraries/zlib {
-    inherit fetchurl stdenv;
+  zlibStatic = lowPrio (appendToName "static" (callPackage ../development/libraries/zlib {
     static = true;
   }));
 
   zeromq2 = callPackage ../development/libraries/zeromq/2.x.nix {};
   zeromq3 = callPackage ../development/libraries/zeromq/3.x.nix {};
 
+
   ### DEVELOPMENT / LIBRARIES / JAVA
 
 
   atermjava = callPackage ../development/libraries/java/aterm {
     stdenv = overrideInStdenv stdenv [gnumake380];
-
   };
 
   commonsFileUpload = callPackage ../development/libraries/java/jakarta-commons/file-upload { };
@@ -5270,13 +5255,13 @@ let
 
   numeric = callPackage ../development/python-modules/numeric { };
 
-  pil = callPackage ../development/python-modules/pil { };
+  pil = python27Packages.pil;
 
   psyco = callPackage ../development/python-modules/psyco { };
 
   pycairo = callPackage ../development/python-modules/pycairo { };
 
-  pycrypto = callPackage ../development/python-modules/pycrypto { };
+  pycrypto = python27Packages.pycrypto;
 
   pycups = callPackage ../development/python-modules/pycups { };
 
@@ -5325,12 +5310,6 @@ let
 
   ZopeInterface = pythonPackages.zopeInterface;
 
-  /*
-  zope = callPackage ../development/python-modules/zope {
-    python = python24;
-  };
-  */
-
 
   ### SERVERS
 
@@ -5499,6 +5478,8 @@ let
 
   postgresql91 = callPackage ../servers/sql/postgresql/9.1.x.nix { };
 
+  postgresql92 = callPackage ../servers/sql/postgresql/9.2.x.nix { };
+
   postgresql_jdbc = callPackage ../servers/sql/postgresql/jdbc { };
 
   psqlodbc = callPackage ../servers/sql/postgresql/psqlodbc {
@@ -5517,7 +5498,12 @@ let
 
   radius = callPackage ../servers/radius { };
 
-  redis = callPackage ../servers/nosql/redis { };
+  redis = callPackage ../servers/nosql/redis {
+    stdenv =
+      if stdenv.isDarwin
+      then overrideGCC stdenv gccApple
+      else stdenv;
+  };
 
   redstore = callPackage ../servers/http/redstore { };
 
@@ -5531,16 +5517,15 @@ let
   samba = callPackage ../servers/samba { };
 
   # A lightweight Samba, useful for non-Linux-based OSes.
-  samba_light = callPackage ../servers/samba {
+  samba_light = lowPrio (callPackage ../servers/samba {
     pam = null;
     fam = null;
     cups = null;
     acl = null;
     openldap = null;
-
     # libunwind 1.0.1 is not ported to GNU/Hurd.
     libunwind = null;
-  };
+  });
 
   shishi = callPackage ../servers/shishi { };
 
@@ -5583,6 +5568,10 @@ let
     inherit fetchurl stdenv pkgconfig postgresql curl openssl zlib;
   });
 
+  zabbix20 = recurseIntoAttrs (import ../servers/monitoring/zabbix/2.0.nix {
+    inherit fetchurl stdenv pkgconfig postgresql curl openssl zlib gettext;
+  });
+
 
   ### OS-SPECIFIC
 
@@ -5656,10 +5645,7 @@ let
 
   dmtcp = callPackage ../os-specific/linux/dmtcp { };
 
-  dietlibc = callPackage ../os-specific/linux/dietlibc {
-    # Dietlibc 0.30 doesn't compile on PPC with GCC 4.1, bus GCC 3.4 works.
-    stdenv = if stdenv.system == "powerpc-linux" then overrideGCC stdenv gcc34 else stdenv;
-  };
+  dietlibc = callPackage ../os-specific/linux/dietlibc { };
 
   directvnc = builderDefsPackage ../os-specific/linux/directvnc {
     inherit libjpeg pkgconfig zlib directfb;
@@ -5699,11 +5685,7 @@ let
 
   ffado = callPackage ../os-specific/linux/ffado { };
 
-  fbterm = builderDefsPackage (import ../os-specific/linux/fbterm) {
-    inherit fontconfig gpm freetype pkgconfig ncurses;
-  };
-
-  fbtermStdenv = callPackage ../os-specific/linux/fbterm/stdenv.nix { };
+  fbterm = callPackage ../os-specific/linux/fbterm { };
 
   fuse = callPackage ../os-specific/linux/fuse { };
 
@@ -5868,7 +5850,6 @@ let
       [ #kernelPatches.fbcondecor_2_6_38
         kernelPatches.sec_perm_2_6_24
         kernelPatches.aufs3_0
-        #kernelPatches.aufs2_1_3_0
       ];
   };
 
@@ -5946,6 +5927,19 @@ let
       ];
   };
 
+  linux_3_7 = makeOverridable (import ../os-specific/linux/kernel/linux-3.7.nix) {
+    inherit fetchurl stdenv perl mktemp module_init_tools ubootChooser;
+    kernelPatches =
+      [
+        kernelPatches.sec_perm_2_6_24
+        kernelPatches.aufs3_7
+      ] ++ lib.optionals (platform.kernelArch == "mips")
+      [ kernelPatches.mips_fpureg_emu
+        kernelPatches.mips_fpu_sigill
+        kernelPatches.mips_ext3_n32
+      ];
+  };
+
   /* Linux kernel modules are inherently tied to a specific kernel.  So
      rather than provide specific instances of those packages for a
      specific kernel, we have a function that builds those packages
@@ -5965,8 +5959,6 @@ let
     aufs =
       if kernel.features ? aufs2 then
         callPackage ../os-specific/linux/aufs/2.nix { }
-      else if kernel.features ? aufs2_1 then
-        callPackage ../os-specific/linux/aufs/2.1.nix { }
       else if kernel.features ? aufs3 then
         callPackage ../os-specific/linux/aufs/3.nix { }
       else null;
@@ -5974,8 +5966,6 @@ let
     aufs_util =
       if kernel.features ? aufs2 then
         callPackage ../os-specific/linux/aufs-util/2.nix { }
-      else if kernel.features ? aufs2_1 then
-        callPackage ../os-specific/linux/aufs-util/2.1.nix { }
       else if kernel.features ? aufs3 then
         callPackage ../os-specific/linux/aufs-util/3.nix { }
       else null;
@@ -6010,6 +6000,7 @@ let
 
     nvidia_x11_legacy96 = callPackage ../os-specific/linux/nvidia-x11/legacy96.nix { };
     nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix { };
+    nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix { };
 
     openafsClient = callPackage ../servers/openafs-client { };
 
@@ -6076,6 +6067,7 @@ let
   linuxPackages_3_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_4 pkgs.linuxPackages_3_4);
   linuxPackages_3_5 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_5 pkgs.linuxPackages_3_5);
   linuxPackages_3_6 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_6 pkgs.linuxPackages_3_6);
+  linuxPackages_3_7 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_7 pkgs.linuxPackages_3_7);
 
   # The current default kernel / kernel modules.
   linux = linuxPackages.kernel;
@@ -6265,7 +6257,7 @@ let
   };
 
   # FIXME: `tcp-wrapper' is actually not OS-specific.
-  tcpWrapper = callPackage ../os-specific/linux/tcp-wrapper { };
+  tcp_wrappers = callPackage ../os-specific/linux/tcp-wrappers { };
 
   trackballs = callPackage ../games/trackballs {
     debug = false;
@@ -6421,8 +6413,7 @@ let
 
   anonymousPro = callPackage ../data/fonts/anonymous-pro {};
 
-  arkpandora_ttf = builderDefsPackage (import ../data/fonts/arkpandora) {
-  };
+  arkpandora_ttf = builderDefsPackage (import ../data/fonts/arkpandora) { };
 
   bakoma_ttf = callPackage ../data/fonts/bakoma-ttf { };
 
@@ -6609,10 +6600,11 @@ let
 
   autopanosiftc = callPackage ../applications/graphics/autopanosiftc { };
 
-  avidemux = callPackage ../applications/video/avidemux {
-  };
+  avidemux = callPackage ../applications/video/avidemux { };
 
-  avogadro = callPackage ../applications/science/chemistry/avogadro { };
+  avogadro = callPackage ../applications/science/chemistry/avogadro {
+    eigen = eigen2;
+  };
 
   awesome = callPackage ../applications/window-managers/awesome {
     lua = lua5;
@@ -6687,13 +6679,18 @@ let
   };
 
   chromium = lowPrio (callPackage ../applications/networking/browsers/chromium {
+    channel = "stable";
     gconf = gnome.GConf;
+    pulseSupport = config.pulseaudio or false;
   });
 
-  chromeWrapper = wrapFirefox
-    { browser = chromium; browserName = chromium.packageName; desktopName = "Chromium";
-      icon = "${chromium}/share/icons/hicolor/48x48/apps/${chromium.packageName}.png";
-    };
+  chromiumBeta = chromium.override { channel = "beta"; };
+  chromiumBetaWrapper = wrapChromium chromiumBeta;
+
+  chromiumDev = chromium.override { channel = "dev"; };
+  chromiumDevWrapper = wrapChromium chromiumDev;
+
+  chromiumWrapper = wrapChromium chromium;
 
   cinelerra = callPackage ../applications/video/cinelerra { };
 
@@ -6737,7 +6734,7 @@ let
 
   d4x = callPackage ../applications/misc/d4x { };
 
-  darcs = haskellPackages.darcs;
+  darcs = lib.setName "darcs-${haskellPackages.darcs.version}" haskellPackages.darcs;
 
   darktable = callPackage ../applications/graphics/darktable {
     inherit (gnome) GConf libglade;
@@ -7029,13 +7026,6 @@ let
 
   firefox13Wrapper = lowPrio (wrapFirefox { browser = firefox13Pkgs.firefox; });
 
-  firefox16Pkgs = callPackage ../applications/networking/browsers/firefox/16.0.nix {
-    inherit (gnome) libIDL;
-    inherit (pythonPackages) pysqlite;
-  };
-
-  firefox16Wrapper = lowPrio (wrapFirefox { browser = firefox16Pkgs.firefox; });
-
   firefox17Pkgs = callPackage ../applications/networking/browsers/firefox/17.0.nix {
     inherit (gnome) libIDL;
     inherit (pythonPackages) pysqlite;
@@ -7051,7 +7041,6 @@ let
   };
 
   freecad = callPackage ../applications/graphics/freecad {
-    boost = boost146;
   };
 
   freemind = callPackage ../applications/misc/freemind {
@@ -7109,8 +7098,6 @@ let
     slibGuile = slibGuile.override { scheme = guile_1_8; };
   };
 
-  qcad = callPackage ../applications/misc/qcad { };
-
   libquvi = callPackage ../applications/video/quvi/library.nix { };
 
   praat = callPackage ../applications/audio/praat { };
@@ -7277,7 +7264,7 @@ let
     librsvg = null;
   };
 
-  imagemagickBig = callPackage ../applications/graphics/ImageMagick { };
+  imagemagickBig = lowPrio (callPackage ../applications/graphics/ImageMagick { });
 
   # Impressive, formerly known as "KeyJNote".
   impressive = callPackage ../applications/office/impressive {
@@ -7353,6 +7340,8 @@ let
 
   librecad = callPackage ../applications/misc/librecad { };
 
+  librecad2 = callPackage ../applications/misc/librecad/2.0.nix { };
+
   libreoffice = callPackage ../applications/office/openoffice/libreoffice.nix {
     inherit (perlPackages) ArchiveZip CompressZlib;
     inherit (gnome) GConf ORBit2 gnome_vfs;
@@ -7406,7 +7395,7 @@ let
 
   mercurial = callPackage ../applications/version-management/mercurial {
     inherit (pythonPackages) curses docutils;
-    guiSupport = false;		# use mercurialFull to get hgk GUI
+    guiSupport = false; # use mercurialFull to get hgk GUI
   };
 
   mercurialFull = lowPrio (appendToName "full" (pkgs.mercurial.override { guiSupport = true; }));
@@ -7485,7 +7474,9 @@ let
 
   ncmpcpp = callPackage ../applications/audio/ncmpcpp { };
 
-  MPlayer = callPackage ../applications/video/MPlayer { };
+  MPlayer = callPackage ../applications/video/MPlayer {
+    pulseSupport = config.pulseaudio or false;
+  };
 
   MPlayerPlugin = browser:
     import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in {
@@ -7512,8 +7503,7 @@ let
 
   msmtp = callPackage ../applications/networking/msmtp { };
 
-  mupdf = callPackage ../applications/misc/mupdf {
-  };
+  mupdf = callPackage ../applications/misc/mupdf { };
 
   mythtv = callPackage ../applications/video/mythtv { };
 
@@ -7523,8 +7513,7 @@ let
 
   nano = callPackage ../applications/editors/nano { };
 
-  navipowm = callPackage ../applications/misc/navipowm {
-  };
+  navipowm = callPackage ../applications/misc/navipowm { };
 
   navit = callPackage ../applications/misc/navit { };
 
@@ -7533,15 +7522,15 @@ let
   ncdu = callPackage ../tools/misc/ncdu { };
 
   nedit = callPackage ../applications/editors/nedit {
-      motif = lesstif;
+    motif = lesstif;
   };
 
   netsurfBrowser = netsurf.browser;
   netsurf = recurseIntoAttrs (import ../applications/networking/browsers/netsurf { inherit pkgs; });
 
   notmuch = callPackage ../applications/networking/mailreaders/notmuch {
-      # use emacsPackages.notmuch if you want emacs support
-      emacs = null;
+    # use emacsPackages.notmuch if you want emacs support
+    emacs = null;
   };
 
   nova = callPackage ../applications/virtualization/nova { };
@@ -7653,10 +7642,6 @@ let
 
   qemu_1_0 = callPackage ../applications/virtualization/qemu/1.0.nix { };
 
-  qemu_0_13 = callPackage ../applications/virtualization/qemu/0.13.nix { };
-
-  qemuSVN = callPackage ../applications/virtualization/qemu/svn-6642.nix { };
-
   qemuImage = callPackage ../applications/virtualization/qemu/linux-img { };
 
   qsampler = callPackage ../applications/audio/qsampler { };
@@ -7903,6 +7888,8 @@ let
     gtk = gtk3;
   };
 
+  vbindiff = callPackage ../applications/editors/vbindiff { };
+
   vdpauinfo = callPackage ../tools/X11/vdpauinfo { };
 
   veracity = callPackage ../applications/version-management/veracity {};
@@ -7985,6 +7972,13 @@ let
 
   wordnet = callPackage ../applications/misc/wordnet { };
 
+  wrapChromium = browser: wrapFirefox {
+    inherit browser;
+    browserName = browser.packageName;
+    desktopName = "Chromium";
+    icon = "${browser}/share/icons/hicolor/48x48/apps/${browser.packageName}.png";
+  };
+
   wrapFirefox =
     { browser, browserName ? "firefox", desktopName ? "Firefox", nameSuffix ? ""
     , icon ? "${browser}/lib/${browser.name}/icons/mozicon128.png" }:
@@ -8030,6 +8024,8 @@ let
 
   xbindkeys = callPackage ../tools/X11/xbindkeys { };
 
+  xcalib = callPackage ../tools/X11/xcalib { };
+
   xchat = callPackage ../applications/networking/irc/xchat { };
 
   xchm = callPackage ../applications/misc/xchm { };
@@ -8073,8 +8069,7 @@ let
     base14Fonts = "${ghostscript}/share/ghostscript/fonts";
   };
 
-  libxpdf = callPackage ../applications/misc/xpdf/libxpdf.nix {
-  };
+  libxpdf = callPackage ../applications/misc/xpdf/libxpdf.nix { };
 
   xpra = callPackage ../tools/X11/xpra {
     inherit (pythonPackages) notify;
@@ -8160,10 +8155,10 @@ let
 
   castle_combat = callPackage ../games/castle-combat { };
 
-  construoBase = callPackage ../games/construo {
+  construoBase = lowPrio (callPackage ../games/construo {
     mesa = null;
     freeglut = null;
-  };
+  });
 
   construo = construoBase.override {
     inherit mesa freeglut;
@@ -8184,13 +8179,6 @@ let
     libpng = libpng12;
   };
 
-  /*
-  exultSnapshot = lowPrio (import ../games/exult/snapshot.nix {
-    inherit fetchurl stdenv SDL SDL_mixer zlib libpng unzip
-      autoconf automake libtool flex bison;
-  });
-  */
-
   flightgear = callPackage ../games/flightgear {};
 
   freeciv = callPackage ../games/freeciv { };
@@ -8242,6 +8230,8 @@ let
     inherit libpng zlib;
   };
 
+  lincity_ng = callPackage ../games/lincity/ng.nix {};
+
   mars = callPackage ../games/mars { };
 
   micropolis = callPackage ../games/micropolis { };
@@ -8258,6 +8248,8 @@ let
 
   opentyrian = callPackage ../games/opentyrian { };
 
+  pingus = callPackage ../games/pingus {};
+
   pioneers = callPackage ../games/pioneers { };
 
   pong3d = callPackage ../games/pong3d { };
@@ -8287,10 +8279,11 @@ let
 
   sauerbraten = callPackage ../games/sauerbraten {};
 
+  scid = callPackage ../games/scid { };
+
   scummvm = callPackage ../games/scummvm { };
 
-  scorched3d = callPackage ../games/scorched3d {
-  };
+  scorched3d = callPackage ../games/scorched3d { };
 
   sgtpuzzles = builderDefsPackage (import ../games/sgt-puzzles) {
     inherit pkgconfig fetchsvn perl gtk;
@@ -8385,12 +8378,14 @@ let
     libpng = libpng12;
   };
 
-  xboard = builderDefsPackage (import ../games/xboard) {
-    inherit (xlibs) libX11 xproto libXt libXaw libSM
-      libICE libXmu libXext libXpm;
-    inherit gnuchess texinfo;
+  worldofgoo_demo = callPackage ../games/worldofgoo {
+    demo = true;
   };
 
+  worldofgoo = callPackage ../games/worldofgoo { };
+
+  xboard =  callPackage ../games/xboard { };
+
   xconq = callPackage ../games/xconq {};
 
   # TODO: the corresponding nix file is missing
@@ -8445,9 +8440,15 @@ let
 
   kde4 = recurseIntoAttrs pkgs.kde47;
 
-  kde47 = kdePackagesFor (pkgs.kde47 // {boost = boost149;}) ../desktops/kde-4.7;
+  kde47 = kdePackagesFor (pkgs.kde47 // {
+      boost = boost149;
+      eigen = eigen2;
+    }) ../desktops/kde-4.7;
 
-  kde48 = kdePackagesFor (pkgs.kde48 // {boost = boost149;}) ../desktops/kde-4.8;
+  kde48 = kdePackagesFor (pkgs.kde48 // {
+      boost = boost149;
+      eigen = eigen2;
+    }) ../desktops/kde-4.8;
 
   kdePackagesFor = self: dir:
     let callPackageOrig = callPackage; in
@@ -8630,8 +8631,6 @@ let
 
   paml = callPackage ../applications/science/biology/paml { };
 
-  /* slr = callPackage ../applications/science/biology/slr { }; */
-
   pal2nal = callPackage ../applications/science/biology/pal2nal { };
 
 
@@ -8659,6 +8658,21 @@ let
 
   openblas = callPackage ../development/libraries/science/math/openblas { };
 
+
+  ### SCIENCE/MOLECULAR-DYNAMICS
+
+  gromacs = callPackage ../applications/science/molecular-dynamics/gromacs {
+    singlePrec = true;
+    fftw = fftwSinglePrec;
+    cmake = cmakeCurses;
+  };
+
+  gromacsDouble = lowPrio (callPackage ../applications/science/molecular-dynamics/gromacs {
+    singlePrec = false;
+    fftw = fftw;
+    cmake = cmakeCurses;
+  });
+
   ### SCIENCE/LOGIC
 
   coq = callPackage ../applications/science/logic/coq {
@@ -8673,7 +8687,7 @@ let
 
   cvc3 = callPackage ../applications/science/logic/cvc3 {};
 
-  eprover = callPackage ../applications/science/logic/eProver {
+  eprover = callPackage ../applications/science/logic/eprover {
     texLive = texLiveAggregationFun {
       paths = [
         texLive texLiveExtra
@@ -8885,20 +8899,14 @@ let
     stateDir = config.nix.stateDir or "/nix/var";
   };
 
+  nixUnstable = nixStable;
+
+  /*
   nixUnstable = callPackage ../tools/package-management/nix/unstable.nix {
     storeDir = config.nix.storeDir or "/nix/store";
     stateDir = config.nix.stateDir or "/nix/var";
   };
-
-  nixCustomFun = src: preConfigure: enableScripts: configureFlags:
-    import ../tools/package-management/nix/custom.nix {
-      inherit fetchurl stdenv perl curl bzip2 openssl src preConfigure automake
-        autoconf libtool configureFlags enableScripts lib libxml2 boehmgc
-        pkgconfig flex bison sqlite perlPackages;
-      aterm = aterm25;
-      db4 = db45;
-      inherit docbook5_xsl libxslt docbook5 docbook_xml_dtd_43 w3m;
-    };
+  */
 
   nut = callPackage ../applications/misc/nut { };
 
@@ -8957,6 +8965,15 @@ let
 
   xlockmore = callPackage ../misc/screensavers/xlockmore { };
 
+  samsungUnifiedLinuxDriver = import ../misc/cups/drivers/samsung {
+    inherit fetchurl stdenv;
+    inherit cups ghostscript glibc patchelf;
+    gcc = import ../development/compilers/gcc/4.4 {
+      inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gettext which;
+      profiledCompiler = true;
+    };
+  };
+
   saneBackends = callPackage ../applications/graphics/sane/backends.nix {
     gt68xxFirmware = config.sane.gt68xxFirmware or null;
     hotplugSupport = config.sane.hotplugSupport or true;
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 2dc7c6d118a..8cfd3f72d13 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -483,6 +483,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   base64Bytestring = callPackage ../development/libraries/haskell/base64-bytestring {};
 
+  base64Conduit = callPackage ../development/libraries/haskell/base64-conduit {};
+
   baseUnicodeSymbols = callPackage ../development/libraries/haskell/base-unicode-symbols {};
 
   basicPrelude = callPackage ../development/libraries/haskell/basic-prelude {};
@@ -514,11 +516,15 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   blazeMarkup = callPackage ../development/libraries/haskell/blaze-markup {};
 
+  blazeSvg = callPackage ../development/libraries/haskell/blaze-svg {};
+
   blazeTextual = callPackage ../development/libraries/haskell/blaze-textual {};
 
   bloomfilter = callPackage ../development/libraries/haskell/bloomfilter {};
 
-  bmp = callPackage ../development/libraries/haskell/bmp {};
+  bmp_1_2_2_1 = callPackage ../development/libraries/haskell/bmp/1.2.2.1.nix {};
+  bmp_1_2_3_2 = callPackage ../development/libraries/haskell/bmp/1.2.3.2.nix {};
+  bmp = self.bmp_1_2_2_1;       # later versions work only with ghc 7.6 and beyond
 
   Boolean = callPackage ../development/libraries/haskell/Boolean {};
 
@@ -630,6 +636,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   cryptoPubkeyTypes = callPackage ../development/libraries/haskell/crypto-pubkey-types {};
 
+  cryptoRandomApi = callPackage ../development/libraries/haskell/crypto-random-api {};
+
   cuda = callPackage ../development/libraries/haskell/cuda {
     inherit (pkgs.linuxPackages) nvidia_x11;
   };
@@ -683,12 +691,11 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   derp = callPackage ../development/libraries/haskell/derp {};
 
   diagrams = callPackage ../development/libraries/haskell/diagrams/diagrams.nix {};
-
   diagramsCairo = callPackage ../development/libraries/haskell/diagrams/cairo.nix {};
-
   diagramsCore = callPackage ../development/libraries/haskell/diagrams/core.nix {};
-
+  diagramsContrib = callPackage ../development/libraries/haskell/diagrams/contrib.nix {};
   diagramsLib = callPackage ../development/libraries/haskell/diagrams/lib.nix {};
+  diagramsSvg = callPackage ../development/libraries/haskell/diagrams/svg.nix {};
 
   Diff = callPackage ../development/libraries/haskell/Diff {};
 
@@ -730,6 +737,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   dstring = callPackage ../development/libraries/haskell/dstring {};
 
+  dualTree = callPackage ../development/libraries/haskell/dual-tree {};
+
   editDistance = callPackage ../development/libraries/haskell/edit-distance {};
 
   editline = callPackage ../development/libraries/haskell/editline {};
@@ -744,6 +753,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   erf = callPackage ../development/libraries/haskell/erf {};
 
+  errors = callPackage ../development/libraries/haskell/errors {};
+
+  either = callPackage ../development/libraries/haskell/either {};
+
   exceptionMtl = callPackage ../development/libraries/haskell/exception-mtl {};
 
   exceptionTransformers = callPackage ../development/libraries/haskell/exception-transformers {};
@@ -790,6 +803,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   fingertree = callPackage ../development/libraries/haskell/fingertree {};
 
+  forceLayout = callPackage ../development/libraries/haskell/force-layout {};
+
   fsnotify = callPackage ../development/libraries/haskell/fsnotify {};
 
   gamma = callPackage ../development/libraries/haskell/gamma {};
@@ -1092,6 +1107,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   jsonTypes = callPackage ../development/libraries/haskell/jsonTypes {};
 
+  kansasLava = callPackage ../development/libraries/haskell/kansas-lava {};
+
   languageC_0_4_2   = callPackage ../development/libraries/haskell/language-c/0.4.2.nix {};
   languageC_0_3_2_1 = callPackage ../development/libraries/haskell/language-c/0.3.2.1.nix {};
   languageC = self.languageC_0_4_2;
@@ -1150,6 +1167,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   mersenneRandomPure64 = callPackage ../development/libraries/haskell/mersenne-random-pure64 {};
 
+  minimorph = callPackage ../development/libraries/haskell/minimorph {};
+
+  miniutter = callPackage ../development/libraries/haskell/miniutter {};
+
   mimeMail = callPackage ../development/libraries/haskell/mime-mail {};
 
   mimeTypes = callPackage ../development/libraries/haskell/mime-types {};
@@ -1184,6 +1205,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   monadsTf = callPackage ../development/libraries/haskell/monads-tf {};
 
+  monoidExtras = callPackage ../development/libraries/haskell/monoid-extras {};
+
   mongoDB = callPackage ../development/libraries/haskell/mongoDB {};
 
   mpppc = callPackage ../development/libraries/haskell/mpppc {};
@@ -1207,7 +1230,9 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   multirec = callPackage ../development/libraries/haskell/multirec {};
 
-  multiset = callPackage ../development/libraries/haskell/multiset {};
+  multiset_0_2_1 = callPackage ../development/libraries/haskell/multiset/0.2.1.nix {};
+  multiset_0_2_2 = callPackage ../development/libraries/haskell/multiset/0.2.2.nix {};
+  multiset = self.multiset_0_2_1;   # later versions work only with ghc 7.6 and beyond
 
   murmurHash = callPackage ../development/libraries/haskell/murmur-hash {};
 
@@ -1215,6 +1240,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   NanoProlog = callPackage ../development/libraries/haskell/NanoProlog {};
 
+  netlist = callPackage ../development/libraries/haskell/netlist {};
+
+  netlistToVhdl = callPackage ../development/libraries/haskell/netlist-to-vhdl {};
+
   network_2_2_1_4 = callPackage ../development/libraries/haskell/network/2.2.1.4.nix {};
   network_2_2_1_7 = callPackage ../development/libraries/haskell/network/2.2.1.7.nix {};
   network_2_3_0_2 = callPackage ../development/libraries/haskell/network/2.3.0.2.nix {};
@@ -1465,6 +1494,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
 
   silently = callPackage ../development/libraries/haskell/silently {};
 
+  sizedTypes = callPackage ../development/libraries/haskell/sized-types {};
+
   skein = callPackage ../development/libraries/haskell/skein {};
 
   smallcheck = callPackage ../development/libraries/haskell/smallcheck {};
@@ -1633,6 +1664,8 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y);
   # pass it explicitly in rare circumstances.
   time = null;
 
+  timeCompat = callPackage ../development/libraries/haskell/time-compat {};
+
   tls = callPackage ../development/libraries/haskell/tls {};
 
   tlsExtra = callPackage ../development/libraries/haskell/tls-extra {};
diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix
index d2f74fe74c0..e8d775a9a30 100644
--- a/pkgs/top-level/make-tarball.nix
+++ b/pkgs/top-level/make-tarball.nix
@@ -47,16 +47,16 @@ releaseTools.sourceTarball {
     export NIX_DB_DIR=$TMPDIR
     export NIX_STATE_DIR=$TMPDIR
     nix-store --init
-  
+
     # Run the regression tests in `lib'.
     res="$(nix-instantiate --eval-only --strict pkgs/lib/tests.nix)"
     if test "$res" != "[ ]"; then
         echo "regression tests for lib failed, got: $res"
         exit 1
     fi
-  
+
     # Check that all-packages.nix evaluates on a number of platforms.
-    for platform in i686-linux x86_64-linux powerpc-linux i686-freebsd powerpc-darwin i686-darwin; do
+    for platform in i686-linux x86_64-linux powerpc-linux i686-freebsd; do
         header "checking pkgs/top-level/all-packages.nix on $platform"
         nix-env --readonly-mode -f pkgs/top-level/all-packages.nix \
             --show-trace --argstr system "$platform" \
@@ -72,7 +72,7 @@ releaseTools.sourceTarball {
 
   distPhase = ''
     find . -name "\.svn" -exec rm -rvf {} \; -prune
-  
+
     mkdir -p $out/tarballs
     mkdir ../$releaseName
     cp -prd . ../$releaseName
diff --git a/pkgs/top-level/platforms.nix b/pkgs/top-level/platforms.nix
index 14f967bf8cf..f00ad36f2e4 100644
--- a/pkgs/top-level/platforms.nix
+++ b/pkgs/top-level/platforms.nix
@@ -14,7 +14,7 @@ rec {
       ''
         # Virtualisation (KVM, Xen...).
         PARAVIRT_GUEST y
-        KVM_CLOCK y
+        KVM_CLOCK? y #Part of KVM_GUEST since linux 3.7
         KVM_GUEST y
         XEN y
         KSM y
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index ddd25ad03b2..9c81ffc2882 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -9,7 +9,13 @@ let pythonPackages = python.modules // rec {
 
   buildPythonPackage = import ../development/python-modules/generic {
     inherit (pkgs) lib;
-    inherit python wrapPython setuptools;
+    inherit python wrapPython setuptools setuptoolsSite offlineDistutils;
+  };
+
+
+  recursivePthLoader = import ../development/python-modules/recursive-pth-loader {
+    inherit (pkgs) stdenv;
+    inherit python;
   };
 
 
@@ -18,12 +24,30 @@ let pythonPackages = python.modules // rec {
     inherit python wrapPython;
   };
 
+  setuptoolsSite = import ../development/python-modules/setuptools/site.nix {
+    inherit (pkgs) stdenv;
+    inherit python setuptools;
+  };
+
+  offlineDistutils = import ../development/python-modules/offline-distutils {
+    inherit (pkgs) stdenv;
+    inherit python;
+  };
 
   ipython = import ../shells/ipython {
     inherit (pkgs) stdenv fetchurl;
     inherit buildPythonPackage pythonPackages;
   };
 
+  pil = import ../development/python-modules/pil {
+    inherit (pkgs) fetchurl stdenv libjpeg zlib freetype;
+    inherit python buildPythonPackage;
+  };
+
+  pycrypto = import ../development/python-modules/pycrypto {
+    inherit (pkgs) fetchurl stdenv gmp;
+    inherit python buildPythonPackage;
+  };
 
   wrapPython = pkgs.makeSetupHook
     { deps = pkgs.makeWrapper;
@@ -44,6 +68,7 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs = [ notmuch pkgs.dbacl ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     postInstall = ''
@@ -61,15 +86,16 @@ let pythonPackages = python.modules // rec {
 
 
   alot = buildPythonPackage rec {
-    rev = "5ed59825ffaeaacea90ea10be4b932c60428ed8e";
+    rev = "09804636609b4245cde4faceddffdb5361f3d390";
     name = "alot-0.3.3_${rev}";
 
     src = fetchurl {
       url = "https://github.com/pazz/alot/tarball/${rev}";
       name = "${name}.tar.bz";
-      sha256 = "1b724d47bf766ba3ca7cb6d27c7bb597dbc67dcae1347c5a0f01f80c2246ca07";
+      sha256 = "b5239c4dfcd9882608fb48ef80fe9ba9223949ab7e6a2c1abe970ac307ebcd4a";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     propagatedBuildInputs = [ notmuch urwid twisted magic configobj pygpgme ];
@@ -113,6 +139,7 @@ let pythonPackages = python.modules // rec {
       sha1 = "f124e5e4a6644bf6d1734032a01ac44db1b25a29";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -132,6 +159,7 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ pkgs.unzip pkgs.sqlite ];
 
+    # python: double free or corruption (fasttop): 0x0000000002fd4660 ***
     doCheck = false;
 
     meta = {
@@ -149,9 +177,14 @@ let pythonPackages = python.modules // rec {
       rev = "b2c9cdcabd";
       sha256 = "b0c12b8c48ed9180c7475fab18de50d63e1b517cfb46da4d2c66fc406fe902bc";
     };
+
     installCommand = "python setup.py install --prefix=$out";
+
+    # error: invalid command 'test'
     doCheck = false;
+
     propagatedBuildInputs = [ boto ];
+
   });
 
 
@@ -165,7 +198,7 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ pkgs.unzip ];
 
-    # How do we run the tests?
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -206,7 +239,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1gasiy5lwbhsxw27g36d88n36xbj52434klisvqhljgckd4xqcy7";
     };
 
-    # No tests implemented
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -272,23 +305,23 @@ let pythonPackages = python.modules // rec {
   };
 
 
-  bugz = buildPythonPackage (rec {
-    name = "bugz-0.9.3";
-
-    src = fetchgit {
-      url = "git://github.com/williamh/pybugz.git";
-      rev = "refs/tags/0.9.3";
-    };
-
-    propagatedBuildInputs = [ argparse python.modules.ssl ];
-
-    doCheck = false;
-
-    meta = {
-      homepage = http://www.liquidx.net/pybugz/;
-      description = "Command line interface for Bugzilla";
-    };
-  });
+  # bugz = buildPythonPackage (rec {
+  #   name = "bugz-0.9.3";
+  #
+  #   src = fetchgit {
+  #     url = "https://github.com/williamh/pybugz.git";
+  #     rev = "refs/tags/0.9.3";
+  #   };
+  #
+  #   propagatedBuildInputs = [ argparse python.modules.ssl ];
+  #
+  #   doCheck = false;
+  #
+  #   meta = {
+  #     homepage = http://www.liquidx.net/pybugz/;
+  #     description = "Command line interface for Bugzilla";
+  #   };
+  # });
 
 
   carrot = buildPythonPackage rec {
@@ -338,6 +371,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1xlvanhnxgvwd7vvypbafyl6yqfkpnwa9rs9k3058z84gd86bz8d";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -373,6 +407,10 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs = [ stompclient distribute ];
 
+    buildInputs = [ coverage sqlalchemy ];
+
+    # ValueError: Could not parse auth file:
+    # /tmp/nix-build-.../CoilMQ-0.6.1/coilmq/tests/resources/auth.ini
     doCheck = false;
 
     meta = {
@@ -391,6 +429,7 @@ let pythonPackages = python.modules // rec {
       md5 = "201dbaa732a9049c839f9bb6c27fc7b5";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -402,6 +441,23 @@ let pythonPackages = python.modules // rec {
     };
   });
 
+  coverage = buildPythonPackage rec {
+    name = "coverage-3.5.3";
+
+    src = fetchurl {
+      url = "http://pypi.python.org/packages/source/c/coverage/${name}.tar.gz";
+      md5 = "5f1f523940c473faa8a9f6ca29f78efc";
+    };
+
+    meta = {
+      description = "Code coverage measurement for python";
+      homepage = http://nedbatchelder.com/code/coverage/;
+      license = pkgs.lib.licenses.bsd3;
+      maintainers = [ stdenv.lib.maintainers.shlevy ];
+      platforms = python.meta.platforms;
+    };
+  };
+
   cssutils = buildPythonPackage (rec {
     name = "cssutils-0.9.9";
 
@@ -410,9 +466,9 @@ let pythonPackages = python.modules // rec {
       sha256 = "139yfm9yz9k33kgqw4khsljs10rkhhxyywbq9i82bh2r31cil1pp";
     };
 
-    buildInputs = [ pkgs.unzip ];
+    buildInputs = [ pkgs.unzip mock ];
 
-    # The tests fail - I don't know why
+    # couple of failing tests
     doCheck = false;
 
     meta = {
@@ -439,7 +495,7 @@ let pythonPackages = python.modules // rec {
     # http://thread.gmane.org/gmane.comp.file-systems.tahoe.devel/3200 for a
     # discussion.
 
-    # Gives "ValueError: Empty module name" with no clue as to why.
+    # AttributeError: 'module' object has no attribute 'test_darcsver'
     doCheck = false;
 
     meta = {
@@ -497,6 +553,8 @@ let pythonPackages = python.modules // rec {
         # ehm, YES, the --verbose flags needs to be there, otherwise it tries to patch setuptools!
         easy_install --verbose --prefix=$out .
       '';
+
+    # test for 27 fails
     doCheck = false;
 
     meta = {
@@ -532,6 +590,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "16s0anvpaccbqmdrhl71z73k0dy2sl166nnc2fbd5lshlgmj13ad";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -549,6 +608,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "0snlrcvk92qj1v0n9dpycn6sw56w4zns4mpc30837q6yi7ylrx4f";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -583,7 +643,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1d8vg5a9q2ldnbxqap1893lqb66jwcsli2brbjx7mcnqrzcz449x";
     };
 
-    propagatedBuildInputs = [ pkgs.pil django_1_3 ];
+    propagatedBuildInputs = [ pil django_1_3 ];
 
     meta = {
       description = "A collection of useful extensions for Django";
@@ -604,7 +664,10 @@ let pythonPackages = python.modules // rec {
     installCommand = ''
       python setup.py install --prefix="$out" --root=/ --record="$out/lib/${python.libPrefix}/site-packages/dulwich/list.txt" --single-version-externally-managed
     '';
-    doCheck = false;
+
+    # For some reason "python setup.py test" doesn't work with Python 2.6.
+    # pretty sure that is about import behaviour.
+    doCheck = python.majorVersion != "2.6";
 
     meta = {
       description = "Simple Python implementation of the Git file formats and protocols.";
@@ -638,6 +701,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "0wfz4nxl95jcr2f2mc5gijgighavcghg33plzbz5jyi531jpffss";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -712,6 +776,9 @@ let pythonPackages = python.modules // rec {
       md5 = "abfdbb25d37c28e9da05f1b5c3596d1a";
     };
 
+    buildInputs = [ nose ];
+
+    # 3 failing tests
     doCheck = false;
 
     meta = {
@@ -767,9 +834,6 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs = [ twisted pkgs.pyopenssl ];
 
-    # For some reason "python setup.py test" doesn't work with Python 2.6.
-    doCheck = false;
-
     meta = {
       homepage = http://foolscap.lothar.com/;
 
@@ -816,7 +880,8 @@ let pythonPackages = python.modules // rec {
       sha256 = "0jrajyppdzb3swcxv3w1mpp88vcy7400gy1v2h2gm3pq0dmggaij";
     };
 
-    # two tests fail on x86_64 at least. I don't know why.
+    # FAIL: test_sanitize_remove_script_elem (genshi.filters.tests.html.HTMLSanitizerTestCase)
+    # FAIL: test_sanitize_remove_src_javascript (genshi.filters.tests.html.HTMLSanitizerTestCase)
     doCheck = false;
 
     buildInputs = [ pkgs.setuptools ];
@@ -842,7 +907,8 @@ let pythonPackages = python.modules // rec {
       sha256 = "0bhiyx41kilvy04cgjbvjy2r4b6l7zz31fbrg3l6lvnqm26nihb0";
     };
 
-    buildInputs = [ pkgs.setuptools ];
+    buildInputs = [ pkgs.setuptools ] ++
+                  (if python.majorVersion == "2.6" then [ argparse ] else []);
 
     meta = {
       description = "automatically generated zsh completion function for Python's option parser modules";
@@ -878,6 +944,9 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ nose mox ];
 
+    # tests fail for python2.6
+    doCheck = python.majorVersion != "2.6";
+
     propagatedBuildInputs = [ gflags sqlalchemy webob routes eventlet ];
 
     PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
@@ -914,6 +983,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1wmd1svx5344alb8ff9vzdam1ccqdl0h7shp1xnsk843hqwc0fz0";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     postUnpack = "find . -print0 | xargs -0 touch";
@@ -926,15 +996,13 @@ let pythonPackages = python.modules // rec {
 
 
   httplib2 = buildPythonPackage rec {
-    name = "httplib2-0.7.6";
+    name = "httplib2-0.7.7";
 
     src = fetchurl {
       url = "http://httplib2.googlecode.com/files/${name}.tar.gz";
-      sha256 = "baa7bf431fa9d3c1016562de717e1ebb322a99df72a2918f6b5b8f65fa65bc2e";
+      sha256 = "2e2ce18092c32d1ec54f8a447e14e33585e30f240b883bfeeca65f12b3bcfaf6";
     };
 
-    doCheck = false; # doesn't have a test
-
     meta = {
       homepage = "http://code.google.com/p/httplib2";
       description = "A comprehensive HTTP client library";
@@ -970,6 +1038,7 @@ let pythonPackages = python.modules // rec {
       md5 = "f4f7ddc7c5e55a47222a5cc6c0a87b6d";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1009,6 +1078,7 @@ let pythonPackages = python.modules // rec {
       md5 = "506cf1b13020b3ed2f3c845ea0c9830e";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1027,10 +1097,13 @@ let pythonPackages = python.modules // rec {
       sha256 = "11qilrs4sd4c1mkd64ikrjsc2vwrshhc54n5mh4xrark9c7ayp0y";
     };
 
-    buildInputs = [ zopeInterface ];
+    buildInputs = [ zopeInterface mock ];
 
     preConfigure = "cp test/secrets.py-dist test/secrets.py";
 
+    # failing tests for 26 and 27
+    doCheck = false;
+
     meta = {
       description = "A unified interface to many cloud providers";
       homepage = http://incubator.apache.org/libcloud/;
@@ -1046,7 +1119,8 @@ let pythonPackages = python.modules // rec {
       sha1 = "1eebaee375641c9f29aeb21768f917dd2b985752";
     };
 
-    doCheck = false; # no tests
+    # error: invalid command 'test'
+    doCheck = false;
 
     meta = {
       homepage = http://code.google.com/p/pylockfile/;
@@ -1137,6 +1211,7 @@ let pythonPackages = python.modules // rec {
       md5 = "751e8055be2433dfd1a82e0fb1b12f13";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1152,6 +1227,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "be37e1d86c65ecacae6683f8805e051e9904e5f2e02bf2b7a34262c46a6d06a7";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     propagatedBuildInputs = [ dateutil numpy pkgs.freetype pkgs.libpng pkgs.pkgconfig pkgs.tcl pkgs.tk pkgs.xlibs.libX11 ];
@@ -1228,6 +1304,7 @@ let pythonPackages = python.modules // rec {
       sha1 = "b71aeaacf31898c3b38d8b9ca5bcc0664499c0de";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1256,6 +1333,7 @@ let pythonPackages = python.modules // rec {
   MySQL_python = buildPythonPackage {
     name = "MySQL-python-1.2.3";
 
+    # plenty of failing tests
     doCheck = false;
 
     src = fetchurl {
@@ -1263,7 +1341,9 @@ let pythonPackages = python.modules // rec {
       sha256 = "0vkyg9dmj29hzk7fy77f42p7bfj28skyzsjsjry4wqr3z6xnzrkx";
     };
 
-    propagatedBuildInputs = [ pkgs.mysql pkgs.zlib nose ];
+    buildInputs = [ nose ];
+
+    propagatedBuildInputs = [ pkgs.mysql pkgs.zlib ];
 
     meta = {
       description = "MySQL database binding for Python";
@@ -1283,6 +1363,7 @@ let pythonPackages = python.modules // rec {
 
     # No support of GUI yet.
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1315,7 +1396,8 @@ let pythonPackages = python.modules // rec {
       sha256 = "0ssxic389rdc79zkz8dxcjpqdi5qs80h12khkag410cl9cwk11f2";
     };
 
-    doCheck = false; # there is no test command
+    # error: invalid command 'test'
+    doCheck = false;
 
     meta = {
       homepage = https://github.com/drkjam/netaddr/;
@@ -1329,60 +1411,55 @@ let pythonPackages = python.modules // rec {
     version = "0.10.0";
 
     src = fetchurl {
-      url = "http://divmod.org/trac/attachment/wiki/SoftwareReleases/Nevow-${version}.tar.gz?format=raw";
+      url = "http://pypi.python.org/packages/source/N/Nevow/Nevow-${version}.tar.gz";
       sha256 = "90631f68f626c8934984908d3df15e7c198939d36be7ead1305479dfc67ff6d0";
       name = "${name}.tar.gz";
     };
 
-    propagatedBuildInputs = [ twisted ];
+   propagatedBuildInputs = [ twisted ];
 
-    postInstall = "twistd --help > /dev/null";
+   postInstall = "twistd --help > /dev/null";
 
-    meta = {
-      description = "Nevow, a web application construction kit for Python";
+   meta = {
+     description = "Nevow, a web application construction kit for Python";
 
-      longDescription = ''
-        Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
-        is a web application construction kit written in Python.  It is
-        designed to allow the programmer to express as much of the view
-        logic as desired in Python, and includes a pure Python XML
-        expression syntax named stan to facilitate this.  However it
-        also provides rich support for designer-edited templates, using
-        a very small XML attribute language to provide bi-directional
-        template manipulation capability.
-
-        Nevow also includes formless, a declarative syntax for
-        specifying the types of method parameters and exposing these
-        methods to the web.  Forms can be rendered automatically, and
-        form posts will be validated and input coerced, rendering error
-        pages if appropriate.  Once a form post has validated
-        successfully, the method will be called with the coerced values.
-      '';
+     longDescription = ''
+       Nevow - Pronounced as the French "nouveau", or "noo-voh", Nevow
+       is a web application construction kit written in Python.  It is
+       designed to allow the programmer to express as much of the view
+       logic as desired in Python, and includes a pure Python XML
+       expression syntax named stan to facilitate this.  However it
+       also provides rich support for designer-edited templates, using
+       a very small XML attribute language to provide bi-directional
+       template manipulation capability.
 
-      homepage = http://divmod.org/trac/wiki/DivmodNevow;
+       Nevow also includes formless, a declarative syntax for
+       specifying the types of method parameters and exposing these
+       methods to the web.  Forms can be rendered automatically, and
+       form posts will be validated and input coerced, rendering error
+       pages if appropriate.  Once a form post has validated
+       successfully, the method will be called with the coerced values.
+     '';
 
-      license = "BSD-style";
-    };
-  });
+     homepage = http://divmod.org/trac/wiki/DivmodNevow;
+
+     license = "BSD-style";
+   };
+ });
 
   nose = buildPythonPackage rec {
-    name = "nose-1.0.0";
+    name = "nose-1.2.1";
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/n/nose/${name}.tar.gz";
-      md5 = "47a4784c817afa6ef11a505b574584ed";
+      md5 = "735e3f1ce8b07e70ee1b742a8a53585a";
     };
 
-    # Fails with ‘This platform lacks a functioning sem_open
-    # implementation, therefore, the required synchronization
-    # primitives needed will not function, see issue 3770.’ However,
-    # our Python does seem to be built with the necessary
-    # functionality.
-    doCheck = false;
-
     meta = {
       description = "A unittest-based testing framework for python that makes writing and running tests easier";
     };
+
+    buildInputs = [ coverage ];
   };
 
   notify = pkgs.stdenv.mkDerivation (rec {
@@ -1439,6 +1516,8 @@ let pythonPackages = python.modules // rec {
       python setup.py build --fcompiler="gnu95"
       python setup.py install --prefix=$out
     '';
+
+    # error: invalid command 'test'
     doCheck = false;
 
     buildInputs = [ pkgs.gfortran ];
@@ -1451,7 +1530,7 @@ let pythonPackages = python.modules // rec {
   });
 
   oauth2 = buildPythonPackage (rec {
-    name = "auth2-1.5.211";
+    name = "oauth2-1.5.211";
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/o/oauth2/oauth2-1.5.211.tar.gz";
@@ -1459,6 +1538,10 @@ let pythonPackages = python.modules // rec {
     };
 
     propagatedBuildInputs = [ httplib2 ];
+
+    buildInputs = [ mock coverage ];
+
+    # ServerNotFoundError: Unable to find the server at oauth-sandbox.sevengoslings.net
     doCheck = false;
 
     meta = {
@@ -1470,27 +1553,27 @@ let pythonPackages = python.modules // rec {
     };
   });
 
-  optfunc = buildPythonPackage ( rec {
-    name = "optfunc-git";
-
-    src = pkgs.fetchgit {
-      url = "http://github.com/simonw/optfunc.git";
-      rev = "e3fa034a545ed94ac5a039cf5b170c7d0ee21b7b";
-    };
-
-    installCommand = ''
-      dest=$(toPythonPath $out)/optfunc
-      mkdir -p $dest
-      cp * $dest/
-    '';
-
-    doCheck = false;
-
-    meta = {
-      description = "A new experimental interface to optparse which works by introspecting a function definition";
-      homepage = "http://simonwillison.net/2009/May/28/optfunc/";
-    };
-  });
+  # optfunc = buildPythonPackage ( rec {
+  #   name = "optfunc-git";
+  #
+  #   src = pkgs.fetchgit {
+  #     url = "https://github.com/simonw/optfunc.git";
+  #     rev = "e3fa034a545ed94ac5a039cf5b170c7d0ee21b7b";
+  #   };
+  #
+  #   installCommand = ''
+  #     dest=$(toPythonPath $out)/optfunc
+  #     mkdir -p $dest
+  #     cp * $dest/
+  #   '';
+  #
+  #   doCheck = false;
+  #
+  #   meta = {
+  #     description = "A new experimental interface to optparse which works by introspecting a function definition";
+  #     homepage = "http://simonwillison.net/2009/May/28/optfunc/";
+  #   };
+  # });
 
   ply = buildPythonPackage (rec {
     name = "ply-3.2";
@@ -1535,7 +1618,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1bjy4jn51c50mpq51jbwk0glzd8bxz83gxdfkr9p95dmrd17c7hh";
     };
 
-    buildInputs = [ pkgs.pycrypto ];
+    buildInputs = [ pycrypto ];
 
     meta = {
       homepage = "http://www.lag.net/paramiko/";
@@ -1623,6 +1706,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "0x8bfjjqygriry1iyygm5048ykl5qpbpzqfp6i8dhkslm3ryf5fk";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1661,6 +1745,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1sr2bb3g7rl7gr6156j5qv71kg06q1x01r1lbps9ksnyz37djn2q";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1702,6 +1787,7 @@ let pythonPackages = python.modules // rec {
   psycopg2 = buildPythonPackage rec {
     name = "psycopg2-2.0.13";
 
+    # error: invalid command 'test'
     doCheck = false;
 
     src = fetchurl {
@@ -1770,8 +1856,6 @@ let pythonPackages = python.modules // rec {
       python setup.py install --prefix=$out
     '';
 
-    doCheck = false;
-
     meta = {
       description = "Python bindings for PortAudio";
       homepage = "http://people.csail.mit.edu/hubert/pyaudio/";
@@ -1788,7 +1872,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "4a3a085ecf1fcd2736573538ffa114f1f4331b3bbbdd69381e6e172c49c9750f";
     };
 
-    doCheck = false;
+    buildInputs = [ pytz ];
 
     meta = {
       homepage = http://babel.edgewall.org;
@@ -1837,14 +1921,13 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ pkgs.curl ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     preConfigure = ''
       substituteInPlace setup.py --replace '--static-libs' '--libs'
     '';
 
-    installCommand = "python setup.py install --prefix=$out";
-
     meta = {
       homepage = http://pycurl.sourceforge.net/;
       description = "Python wrapper for libcurl";
@@ -1875,7 +1958,7 @@ let pythonPackages = python.modules // rec {
     };
     propagatedBuildInputs = [xe];
 
-    # tests not described in setup.py
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -1908,6 +1991,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     propagatedBuildInputs = [ pkgs.gpgme ];
@@ -1953,7 +2037,10 @@ let pythonPackages = python.modules // rec {
       url = "http://pypi.python.org/packages/source/p/pyparsing/${name}.tar.gz";
       md5 = "1e41cb219dae9fc353bd4cd47636b283";
     };
+
+    # error: invalid command 'test'
     doCheck = false;
+
     meta = {
       homepage = http://pyparsing.wikispaces.com/;
       description = "The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions.";
@@ -1983,6 +2070,8 @@ let pythonPackages = python.modules // rec {
       sha256 = "1idks7j9bn62xzsaxkvhl7bdq6ws8kv8aa0wahfh7724qlbbcf1k";
     };
 
+    # ERROR: testExtended (tests.test_acls.AclExtensions)
+    # IOError: [Errno 0] Error
     doCheck = false;
 
     buildInputs = [ pkgs.acl ];
@@ -2078,6 +2167,7 @@ let pythonPackages = python.modules // rec {
       md5 = "3076164a7079891d149a23f9435581db";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2107,7 +2197,7 @@ let pythonPackages = python.modules // rec {
               --replace "/usr/local/lib" "${pkgs.sqlite}/lib"
     '';
 
-    # FIXME: How do we run the tests?
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2169,9 +2259,6 @@ let pythonPackages = python.modules // rec {
       sed -i -e 's|libpython2.7.dylib|lib/libpython2.7.dylib|' Makefile
     '');
 
-    # The regression test suite expects locale support, which our glibc
-    # doesn't have by default.
-    doCheck = false;
     checkPhase = "make -C ../Tests";
 
     installPhase = ''
@@ -2248,6 +2335,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "0jmkffik6hdzs7ng8c65bggss2ai40nm59jykswdf5lpd36cxddq";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     buildInputs = [ pkgs.attr ];
@@ -2317,6 +2405,8 @@ let pythonPackages = python.modules // rec {
     };
 
     buildInputs = [freetype];
+
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2336,8 +2426,8 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs =
       [ recaptcha_client pytz memcached dateutil paramiko flup pygments
-        djblets django_1_3 django_evolution pkgs.pycrypto python.modules.sqlite3
-        pysvn pkgs.pil psycopg2
+        djblets django_1_3 django_evolution pycrypto python.modules.sqlite3
+        pysvn pil psycopg2
       ];
   };
 
@@ -2350,6 +2440,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1c7ipk5vwqnln83rmai5jzyxkjdajdzbk5cgy1z83nyr5hbkgkqr";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2432,6 +2523,8 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [pkgs.gfortran];
     propagatedBuildInputs = [ numpy ];
+
+    # error: invalid command 'test'
     doCheck = false;
 
     # TODO: add ATLAS=${pkgs.atlas}
@@ -2570,6 +2663,7 @@ let pythonPackages = python.modules // rec {
       md5 = "9e8099b57cd27493a6988e9c9b313e23";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2593,6 +2687,7 @@ let pythonPackages = python.modules // rec {
       sourceRoot=`pwd`/`ls -d S*`
     '';
 
+    # error: invalid command 'test'
     doCheck = false;
 
     propagatedBuildInputs = [ pkgs.xlibs.libX11 pkgs.pythonDBus pkgs.pygobject ];
@@ -2682,7 +2777,9 @@ let pythonPackages = python.modules // rec {
       md5 = "af0a314b6106dd80da24a918c24a1eab";
     };
 
-    doCheck = false;
+    buildInputs = [ mock nose ];
+
+    # XXX: Ran 0 tests in 0.217s
 
     meta = {
       description = "Lightweight and extensible STOMP messaging client";
@@ -2693,19 +2790,20 @@ let pythonPackages = python.modules // rec {
   });
 
 
-  svneverever =  buildPythonPackage rec {
-    name = "svneverever-778489a8";
-
-    src = pkgs.fetchgit {
-      url = git://git.goodpoint.de/svneverever.git;
-      rev = "778489a8c6f07825fb18c9da3892a781c3d659ac";
-      sha256 = "41c9da1dab2be7b60bff87e618befdf5da37c0a56287385cb0cbd3f91e452bb6";
-    };
-
-    propagatedBuildInputs = [ pysvn argparse ];
-
-    doCheck = false;
-  };
+  # XXX: ValueError: ZIP does not support timestamps before 1980
+  # svneverever =  buildPythonPackage rec {
+  #   name = "svneverever-778489a8";
+  #
+  #   src = pkgs.fetchgit {
+  #     url = git://git.goodpoint.de/svneverever.git;
+  #     rev = "778489a8c6f07825fb18c9da3892a781c3d659ac";
+  #     sha256 = "41c9da1dab2be7b60bff87e618befdf5da37c0a56287385cb0cbd3f91e452bb6";
+  #   };
+  #
+  #   propagatedBuildInputs = [ pysvn argparse ];
+  #
+  #   doCheck = false;
+  # };
 
   taskcoach = buildPythonPackage rec {
     name = "TaskCoach-1.3.8";
@@ -2725,6 +2823,7 @@ let pythonPackages = python.modules // rec {
         --prefix LD_LIBRARY_PATH : $libspaths
     '';
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -2760,6 +2859,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "1ihf5031pc1wpwbxpfzzz2bcpwww795n5y22baglyim1lalivd65";
     };
 
+    # couple of failing tests
     doCheck = false;
 
     PYTHON_EGG_CACHE = "`pwd`/.egg-cache";
@@ -2781,7 +2881,12 @@ let pythonPackages = python.modules // rec {
       sha256 = "c0f32fa31e2c5fa42f5cc19f3dba4e73f0438bf36bf756ba137f2423c0ac4637";
     };
 
-    propagatedBuildInputs = [ oauth2 urwid tweepy ];
+    propagatedBuildInputs = [ oauth2 urwid tweepy ] ++
+                            (if python.majorVersion == "2.6" then [ argparse ]
+                                                             else []);
+
+    #buildInputs = [ tox ];
+    # needs tox
     doCheck = false;
 
     meta = {
@@ -2794,15 +2899,13 @@ let pythonPackages = python.modules // rec {
   });
 
   tweepy = buildPythonPackage (rec {
-    name = "tweepy-1.11";
+    name = "tweepy-1.12";
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/t/tweepy/${name}.tar.gz";
-      sha256 = "2b9fa225e9254e2cbbb01e59c6e92d9c42e5d41d97e8c74dee93eb09babffde5";
+      sha256 = "66d728527ab3d5f5e4d6725654783f99169172678105f609d14353f6626c1315";
     };
 
-    doCheck = false;
-
     meta = {
       homepage = "https://github.com/tweepy/tweepy";
       description = "Twitter library for python";
@@ -2869,6 +2972,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "4437076c8708e5754ea04540e46c7f4f233734ee3590bb8a96389264fb0650d0";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     propagatedBuildInputs = [ pycurl ];
@@ -2883,13 +2987,14 @@ let pythonPackages = python.modules // rec {
 
 
   urwid = buildPythonPackage (rec {
-    name = "urwid-1.0.2";
+    name = "urwid-1.1.1";
 
+    # multiple:  NameError: name 'evl' is not defined
     doCheck = false;
 
     src = fetchurl {
       url = "http://excess.org/urwid/${name}.tar.gz";
-      md5 = "00542bbd15fae7ea60b02a7570edee2b";
+      md5 = "eca2e0413cf7216b01c84b99e0f2576d";
     };
 
     meta = {
@@ -2912,7 +3017,9 @@ let pythonPackages = python.modules // rec {
 
     propagatedBuildInputs = [ python.modules.readline python.modules.sqlite3 ];
 
-    doCheck = false;
+    buildInputs = [ mock nose ];
+
+    # XXX: Ran 0 tests in 0.003s
 
     meta = with stdenv.lib; {
       description = "a tool to create isolated Python environments";
@@ -2931,6 +3038,7 @@ let pythonPackages = python.modules // rec {
       md5 = "8492e46496e187b49fe5569b5639804e";
     };
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -3030,7 +3138,7 @@ let pythonPackages = python.modules // rec {
       sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42";
     };
 
-    # tests not described in setup.py
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -3119,8 +3227,6 @@ let pythonPackages = python.modules // rec {
       sha256 = "294c3c0529e84169177bce78d616c768fa1c028a2fbc1854f615d32ed88dbc6c";
     };
 
-    doCheck = false;
-
     meta = {
       description = "Zope.Interface";
       homepage = http://zope.org/Products/ZopeInterface;
@@ -3128,22 +3234,23 @@ let pythonPackages = python.modules // rec {
     };
   };
 
-  hgsvn = buildPythonPackage rec {
-    name = "hgsvn-0.1.8";
-    src = fetchurl rec {
-      name = "hgsvn-0.1.8.tar.gz";
-      url = "http://pypi.python.org/packages/source/h/hgsvn/${name}.tar.gz#md5=56209eae48b955754e09185712123428";
-      sha256 = "18a7bj1i0m4shkxmdvw1ci5i0isq5vqf0bpwgrhnk305rijvbpch";
-    };
-
-    buildInputs = [ pkgs.setuptools ];
-    doCheck = false;
-
-    meta = {
-      description = "HgSVN";
-      homepage = http://pypi.python.org/pypi/hgsvn;
-    };
-  };
+  # XXX: link broken
+  # hgsvn = buildPythonPackage rec {
+  #   name = "hgsvn-0.1.8";
+  #   src = fetchurl rec {
+  #     name = "hgsvn-0.1.8.tar.gz";
+  #     url = "http://pypi.python.org/packages/source/h/hgsvn/${name}.tar.gz#md5=56209eae48b955754e09185712123428";
+  #     sha256 = "18a7bj1i0m4shkxmdvw1ci5i0isq5vqf0bpwgrhnk305rijvbpch";
+  #   };
+  #
+  #   buildInputs = [ pkgs.setuptools ];
+  #   doCheck = false;
+  #
+  #     meta = {
+  #     description = "HgSVN";
+  #     homepage = http://pypi.python.org/pypi/hgsvn;
+  #   };
+  # };
 
   cliapp = buildPythonPackage rec {
     name = "cliapp-1.20120929";
@@ -3155,6 +3262,7 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ sphinx ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -3175,6 +3283,7 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ sphinx ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -3195,6 +3304,7 @@ let pythonPackages = python.modules // rec {
 
     buildInputs = [ sphinx ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
@@ -3216,6 +3326,7 @@ let pythonPackages = python.modules // rec {
     buildInputs = [ sphinx ];
     propagatedBuildInputs = [ tracing ttystatus cliapp ];
 
+    # error: invalid command 'test'
     doCheck = false;
 
     meta = {
diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix
index a1af20acc77..63fffd7d316 100644
--- a/pkgs/top-level/release-cross.nix
+++ b/pkgs/top-level/release-cross.nix
@@ -17,9 +17,9 @@ let
       #xorgserver.hostDrv = nativePlatforms;
     };
     nixUnstable.hostDrv = nativePlatforms;
-    linuxPackages_2_6_39.kernel.hostDrv = linux;
     linuxPackages_3_3.kernel.hostDrv = linux;
     linuxPackages_3_4.kernel.hostDrv = linux;
+    linuxPackages_3_6.kernel.hostDrv = linux;
   };
 
   /* Basic list of packages to be natively built,
diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix
index f6db077b313..4a5f7602d02 100644
--- a/pkgs/top-level/release-lib.nix
+++ b/pkgs/top-level/release-lib.nix
@@ -10,7 +10,6 @@ rec {
     if system == "x86_64-linux" then pkgs_x86_64_linux
     else if system == "i686-linux" then pkgs_i686_linux
     else if system == "x86_64-darwin" then pkgs_x86_64_darwin
-    else if system == "i686-darwin" then pkgs_i686_darwin
     else if system == "x86_64-freebsd" then pkgs_x86_64_freebsd
     else if system == "i686-freebsd" then pkgs_i686_freebsd
     else if system == "i686-cygwin" then pkgs_i686_cygwin
@@ -19,7 +18,6 @@ rec {
   pkgs_x86_64_linux = allPackages { system = "x86_64-linux"; };
   pkgs_i686_linux = allPackages { system = "i686-linux"; };
   pkgs_x86_64_darwin = allPackages { system = "x86_64-darwin"; };
-  pkgs_i686_darwin = allPackages { system = "i686-darwin"; };
   pkgs_x86_64_freebsd = allPackages { system = "x86_64-freebsd"; };
   pkgs_i686_freebsd = allPackages { system = "i686-freebsd"; };
   pkgs_i686_cygwin = allPackages { system = "i686-cygwin"; };
@@ -75,37 +73,37 @@ rec {
         job = toJob value;
         getPkg = pkgs: (pkgs.lib.addMetaAttrs {
             schedulingPriority = toString job.schedulingPriority;
-            maintainers = crossMaintainers; 
+            maintainers = crossMaintainers;
           }
           (pkgs.lib.getAttrFromPath path pkgs));
       in testOnCross crossSystem job.systems getPkg);
 
   /* Find all packages that have a meta.platforms field listing the
      supported platforms. */
-  packagesWithMetaPlatform = attrSet: 
-    if builtins ? tryEval then 
-      let pairs = pkgs.lib.concatMap 
+  packagesWithMetaPlatform = attrSet:
+    if builtins ? tryEval then
+      let pairs = pkgs.lib.concatMap
         (x:
-	  let pair = builtins.tryEval
-	        (let 
-		   attrVal = (builtins.getAttr x attrSet);
-		 in
-		   {val=(processPackage attrVal); 
-		    attrVal = attrVal;
-		    attrValIsAttrs = builtins.isAttrs attrVal;
-		    });
-	      success = (builtins.tryEval pair.value.attrVal).success;
-	  in
-          if success && pair.value.attrValIsAttrs && 
-	      pair.value.val != [] then 
-	    [{name= x; value=pair.value.val;}] else [])
+          let pair = builtins.tryEval
+                (let
+                   attrVal = (builtins.getAttr x attrSet);
+                 in
+                   {val=(processPackage attrVal);
+                    attrVal = attrVal;
+                    attrValIsAttrs = builtins.isAttrs attrVal;
+                    });
+              success = (builtins.tryEval pair.value.attrVal).success;
+          in
+          if success && pair.value.attrValIsAttrs &&
+              pair.value.val != [] then
+            [{name= x; value=pair.value.val;}] else [])
         (builtins.attrNames attrSet);
       in
         builtins.listToAttrs pairs
     else {};
-    
+
   # May fail as much as it wishes, we will catch the error.
-  processPackage = attrSet: 
+  processPackage = attrSet:
     if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
       packagesWithMetaPlatform attrSet
     else if attrSet ? recurseForRelease && attrSet.recurseForRelease then
@@ -121,6 +119,6 @@ rec {
   /* Platform groups for specific kinds of applications. */
   x11Supported = linux;
   gtkSupported = linux;
-  ghcSupported = linux ++ ["i686-darwin"] ;
+  ghcSupported = linux;
 
 }
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index 98de86369c5..e4efb2cbd9c 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -353,7 +353,6 @@ with (import ./release-lib.nix);
   };
 
   firefox36Pkgs.firefox = linux;
-  firefox16Pkgs.firefox = linux;
   firefox17Pkgs.firefox = linux;
 
   gnome = {