diff --git a/.gitignore b/.gitignore
index b2d5a9aa5bd7..165e92c7fc32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
,*
.*.swp
.*.swo
-cpan-info
-cpan_tmp/
result
+doc/NEWS.html
+doc/NEWS.txt
+doc/manual.html
+doc/manual.pdf
diff --git a/doc/language-support.xml b/doc/language-support.xml
index 6cc028c0b0a2..cb40be4bf57f 100644
--- a/doc/language-support.xml
+++ b/doc/language-support.xml
@@ -21,7 +21,7 @@ standard Makefile.PL. It’s implemented in pkgs/development/perl-modules/generic.
Perl packages from CPAN are defined in pkgs/perl-packages.nix,
+xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix">pkgs/top-level/perl-packages.nix,
rather than pkgs/all-packages.nix. Most Perl
packages are so straight-forward to build that they are defined here
directly, rather than having a separate function for each package
@@ -151,6 +151,43 @@ ClassC3Componentised = buildPerlPackage rec {
+Generation from CPAN
+
+Nix expressions for Perl packages can be generated (almost)
+automatically from CPAN. This is done by the program
+nix-generate-from-cpan, which can be installed
+as follows:
+
+
+$ nix-env -i nix-generate-from-cpan
+
+
+This program takes a Perl module name, looks it up on CPAN,
+fetches and unpacks the corresponding package, and prints a Nix
+expression on standard output. For example:
+
+
+$ nix-generate-from-cpan XML::Simple
+ XMLSimple = buildPerlPackage {
+ name = "XML-Simple-2.20";
+ src = fetchurl {
+ url = mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz;
+ sha256 = "5cff13d0802792da1eb45895ce1be461903d98ec97c9c953bc8406af7294434a";
+ };
+ propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
+ meta = {
+ description = "Easily read/write XML (esp config files)";
+ license = "perl";
+ };
+ };
+
+
+The output can be pasted into
+pkgs/top-level/perl-packages.nix or wherever else
+you need it.
+
+
+
diff --git a/doc/release-notes.xml b/doc/release-notes.xml
index 0551b36cdbff..2a1fb9f31091 100644
--- a/doc/release-notes.xml
+++ b/doc/release-notes.xml
@@ -237,12 +237,12 @@ fetchurl {
fetchurl will first try to download this file
from .
+ xlink:href="http://tarballs.nixos.org/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
If that file doesn’t exist, it will try the original URL. In
general, the “content-addressed” location is
mirror/hash-type/hash.
There is currently only one content-addressable mirror (), but more can be
+ xlink:href="http://tarballs.nixos.org"/>), but more can be
specified in the hashedMirrors attribute in
pkgs/build-support/fetchurl/mirrors.nix, or by
setting the NIX_HASHED_MIRRORS environment variable
diff --git a/maintainers/scripts/generate-cpan-package b/maintainers/scripts/generate-cpan-package
deleted file mode 100755
index 2817e23e2fa9..000000000000
--- a/maintainers/scripts/generate-cpan-package
+++ /dev/null
@@ -1,120 +0,0 @@
-#! /bin/sh -e
-
-name="$1"
-[ -n "$name" ] || { echo "no name"; exit 1; }
-
-cpan -D "$name" > cpan-info
-
-url="$(echo $(cat cpan-info | sed '6!d'))"
-[ -n "$url" ] || { echo "no URL"; exit 1; }
-url="mirror://cpan/authors/id/$url"
-echo "URL = $url" >&2
-
-version=$(cat cpan-info | grep 'CPAN: ' | awk '{ print $2 }')
-echo "VERSION = $version"
-
-declare -a xs=($(PRINT_PATH=1 nix-prefetch-url "$url"))
-hash=${xs[0]}
-path=${xs[1]}
-echo "HASH = $hash" >&2
-
-namedash="$(echo $name | sed s/::/-/g)-$version"
-
-attr=$(echo $name | sed s/:://g)
-
-rm -rf cpan_tmp
-mkdir cpan_tmp
-tar xf "$path" -C cpan_tmp
-
-shopt -s nullglob
-meta=$(echo cpan_tmp/*/META.json)
-if [ -z "$meta" ]; then
- yaml=$(echo cpan_tmp/*/META.yml)
- [ -n "$yaml" ] || { echo "no meta file"; exit 1; }
- meta=$(echo $yaml | sed s/\.yml$/.json/)
- perl -e '
- use YAML;
- use JSON;
- local $/;
- $x = YAML::Load(<>);
- print encode_json $x;
- ' < $yaml > $meta
-fi
-
-description="$(json abstract < $meta | perl -e '$x = <>; print uc(substr($x, 0, 1)), substr($x, 1);')"
-homepage="$(json resources.homepage < $meta)"
-if [ -z "$homepage" ]; then
- #homepage="$(json meta-spec.url < $meta)"
- true
-fi
-
-license="$(json license < $meta | json -a 2> /dev/null || true)"
-if [ -z "$license" ]; then
- license="$(json -a license < $meta)"
-fi
-license="$(echo $license | sed s/perl_5/perl5/)"
-
-f() {
- local type="$1"
- perl -e '
- use JSON;
- local $/;
- $x = decode_json <>;
- if (defined $x->{prereqs}) {
- $x2 = $x->{prereqs}->{'$type'}->{requires};
- } elsif ("'$type'" eq "runtime") {
- $x2 = $x->{requires};
- } elsif ("'$type'" eq "configure") {
- $x2 = $x->{configure_requires};
- } elsif ("'$type'" eq "build") {
- $x2 = $x->{build_requires};
- }
- foreach my $y (keys %{$x2}) {
- next if $y eq "perl";
- eval "use $y;";
- if (!$@) {
- print STDERR "skipping Perl-builtin module $y\n";
- next;
- }
- print $y, "\n";
- };
- ' < $meta | sed s/:://g
-}
-
-confdeps=$(f configure)
-builddeps=$(f build)
-testdeps=$(f test)
-runtimedeps=$(f runtime)
-
-buildInputs=$(echo $(for i in $confdeps $builddeps $testdeps; do echo $i; done | sort | uniq))
-propagatedBuildInputs=$(echo $(for i in $runtimedeps; do echo $i; done | sort | uniq))
-
-echo "===" >&2
-
-cat <\n" unless defined $module_name;
+
+my $cb = CPANPLUS::Backend->new;
+
+my @modules = $cb->search(type => "name", allow => [$module_name]);
+die "module $module_name not found\n" if scalar @modules == 0;
+die "multiple packages that match module $module_name\n" if scalar @modules > 1;
+my $module = $modules[0];
+
+sub pkg_to_attr {
+ my ($pkg_name) = @_;
+ my $attr_name = $pkg_name;
+ $attr_name =~ s/-\d.*//; # strip version
+ return "LWP" if $attr_name eq "libwww-perl";
+ $attr_name =~ s/-//g;
+ return $attr_name;
+}
+
+sub get_pkg_name {
+ my ($module) = @_;
+ my $pkg_name = $module->package;
+ $pkg_name =~ s/\.tar.*//;
+ $pkg_name =~ s/\.zip//;
+ return $pkg_name;
+}
+
+my $pkg_name = get_pkg_name $module;
+my $attr_name = pkg_to_attr $pkg_name;
+
+print STDERR "attribute name: ", $attr_name, "\n";
+print STDERR "module: ", $module->module, "\n";
+print STDERR "version: ", $module->version, "\n";
+print STDERR "package: ", $module->package, , " (", $pkg_name, ", ", $attr_name, ")\n";
+print STDERR "path: ", $module->path, "\n";
+
+my $tar_path = $module->fetch();
+print STDERR "downloaded to: $tar_path\n";
+print STDERR "sha-256: ", $module->status->checksum_value, "\n";
+
+my $pkg_path = $module->extract();
+print STDERR "unpacked to: $pkg_path\n";
+
+my $meta;
+if (-e "$pkg_path/META.yml") {
+ eval {
+ $meta = YAML::XS::LoadFile("$pkg_path/META.yml");
+ };
+ if ($@) {
+ system("iconv -f windows-1252 -t utf-8 '$pkg_path/META.yml' > '$pkg_path/META.yml.tmp'");
+ $meta = YAML::XS::LoadFile("$pkg_path/META.yml.tmp");
+ }
+}
+
+print STDERR "metadata: ", encode_json($meta), "\n";
+
+# Map a module to the attribute corresponding to its package
+# (e.g. HTML::HeadParser will be mapped to HTMLParser, because that
+# module is in the HTML-Parser package).
+sub module_to_pkg {
+ my ($module_name) = @_;
+ my @modules = $cb->search(type => "name", allow => [$module_name]);
+ if (scalar @modules == 0) {
+ # Fallback.
+ $module_name =~ s/:://g;
+ return $module_name;
+ }
+ my $module = $modules[0];
+ my $attr_name = pkg_to_attr(get_pkg_name $module);
+ print STDERR "mapped dep $module_name to $attr_name\n";
+ return $attr_name;
+}
+
+sub get_deps {
+ my ($type) = @_;
+ my $deps;
+ if (defined $meta->{prereqs}) {
+ die "unimplemented";
+ } elsif ($type eq "runtime") {
+ $deps = $meta->{requires};
+ } elsif ($type eq "configure") {
+ $deps = $meta->{configure_requires};
+ } elsif ($type eq "build") {
+ $deps = $meta->{build_requires};
+ }
+ my @res;
+ foreach my $n (keys %{$deps}) {
+ next if $n eq "perl";
+ # Hacky way to figure out if this module is part of Perl.
+ if ($n !~ /^JSON/ && $n !~ /^YAML/) {
+ eval "use $n;";
+ if (!$@) {
+ print STDERR "skipping Perl-builtin module $n\n";
+ next;
+ }
+ }
+ push @res, module_to_pkg($n);
+ }
+ return @res;
+}
+
+sub uniq {
+ return keys %{{ map { $_ => 1 } @_ }};
+}
+
+my @build_deps = sort(uniq(get_deps("configure"), get_deps("build"), get_deps("test")));
+print STDERR "build deps: @build_deps\n";
+
+my @runtime_deps = sort(uniq(get_deps("runtime")));
+print STDERR "runtime deps: @runtime_deps\n";
+
+my $homepage = $meta->{resources}->{homepage};
+print STDERR "homepage: $homepage\n" if defined $homepage;
+
+my $description = $meta->{abstract};
+$description = uc(substr($description, 0, 1)) . substr($description, 1); # capitalise first letter
+$description =~ s/\.$//; # remove period at the end
+$description =~ s/\s*$//;
+$description =~ s/^\s*//;
+print STDERR "description: $description\n";
+
+my $license = $meta->{license};
+if (defined $license) {
+ $license = "perl5" if $license eq "perl_5";
+ print STDERR "license: $license\n";
+}
+
+my $build_fun = -e "$pkg_path/Build.PL" && ! -e "$pkg_path/Makefile.PL" ? "buildPerlModule" : "buildPerlPackage";
+
+print STDERR "===\n";
+
+print <path}/${\$module->package};
+ sha256 = "${\$module->status->checksum_value}";
+ };
+EOF
+print < 0;
+ buildInputs = [ @build_deps ];
+EOF
+print < 0;
+ propagatedBuildInputs = [ @runtime_deps ];
+EOF
+print < $out/share/tessdata/${lang}.traineddata";
+ "tar xfvz ${src} -C $out/share/ --strip=1";
extraLanguages = ''
- ${f "cat" "1qndk8qygw9bq7nzn7kzgxkm3jhlq7jgvdqpj5id4rrcaavjvifw"}
- ${f "rus" "0yjzks189bgcmi2vr4v0l0fla11qdrw3cb1nvpxl9mdis8qr9vcc"}
- ${f "spa" "1q1hw3qi95q5ww3l02fbhjqacxm34cp65fkbx10wjdcg0s5p9q2x"}
- ${f "nld" "0cbqfhl2rwb1mg4y1140nw2vhhcilc0nk7bfbnxw6bzj1y5n49i8"}
+ ${f "cat" "0d1smiv1b3k9ay2s05sl7q08mb3ln4w5iiiymv2cs8g8333z8jl9"}
+ ${f "rus" "059336mkhsj9m3hwfb818xjlxkcdpy7wfgr62qwz65cx914xl709"}
+ ${f "spa" "1c9iza5mbahd9pa7znnq8yv09v5kz3gbd2sarcgcgc1ps1jc437l"}
+ ${f "nld" "162acxp1yb6gyki2is3ay2msalmfcsnrlsd9wml2ja05k94m6bjy"}
+ ${f "eng" "1y5xf794n832s3lymzlsdm2s9nlrd2v27jjjp0fd9xp7c2ah4461"}
+ ${f "slv" "0rqng43435cly32idxm1lvxkcippvc3xpxbfizwq5j0155ym00dr"}
'';
in
-stdenv.mkDerivation {
- name = "tesseract-3.0.1";
+stdenv.mkDerivation rec {
+ name = "tesseract-${version}";
src = fetchurl {
- url = http://tesseract-ocr.googlecode.com/files/tesseract-3.01.tar.gz;
- sha256 = "c24b0bd278291bc93ab242f93841c1d8743689c943bd804afbc5b898dc0a1c9b";
+ url = "http://tesseract-ocr.googlecode.com/files/tesseract-ocr-${version}.tar.gz";
+ sha256 = "0g81m9y4iydp7kgr56mlkvjdwpp3mb01q385yhdnyvra7z5kkk96";
};
buildInputs = [ autoconf automake libtool leptonica libpng libtiff ];
diff --git a/pkgs/applications/misc/blender/fix-include.patch b/pkgs/applications/misc/blender/fix-include.patch
new file mode 100644
index 000000000000..44e2147d073c
--- /dev/null
+++ b/pkgs/applications/misc/blender/fix-include.patch
@@ -0,0 +1,12 @@
+diff --git a/intern/smoke/intern/WAVELET_NOISE.h b/intern/smoke/intern/WAVELET_NOISE.h
+index fce901b..1f73c5e 100644
+--- a/intern/smoke/intern/WAVELET_NOISE.h
++++ b/intern/smoke/intern/WAVELET_NOISE.h
+@@ -43,6 +43,7 @@
+ #ifndef WAVELET_NOISE_H
+ #define WAVELET_NOISE_H
+
++#include
+ #include
+
+ #ifdef WIN32
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index 562a9dd52ad4..23b5092cd4d8 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -1,17 +1,15 @@
{ stdenv, fetchurl, python, pyqt4, sip, popplerQt4, pkgconfig, libpng
, imagemagick, libjpeg, fontconfig, podofo, qt4, icu, sqlite
-, pil, makeWrapper, unrar, chmlib, pythonPackages, xz
+, pil, makeWrapper, unrar, chmlib, pythonPackages, xz, udisks, libusb1, libmtp
}:
stdenv.mkDerivation rec {
- name = "calibre-0.8.51";
+ name = "calibre-0.8.70";
+ # 0.9.* versions won't build: https://bugs.launchpad.net/calibre/+bug/1094719
src = fetchurl {
- urls = [
- "http://calibre-ebook.googlecode.com/files/${name}.tar.xz"
- "mirror://sourceforge/calibre/${name}.tar.xz"
- ];
- sha256 = "1grcc0k9qpfpwp863x52rl9wj4wz61hcz67l8h2jmli0wxiq44z1";
+ url = "mirror://sourceforge/calibre/${name}.tar.xz";
+ sha256 = "12avwp8r6cnrw6c32gmd2hksa9rszdb76zs6fcmr3n8r1wkwa71g";
};
inherit python;
@@ -23,7 +21,7 @@ stdenv.mkDerivation rec {
fontconfig podofo qt4 pil chmlib icu
pythonPackages.mechanize pythonPackages.lxml pythonPackages.dateutil
pythonPackages.cssutils pythonPackages.beautifulsoup
- pythonPackages.sqlite3 sqlite
+ pythonPackages.sqlite3 sqlite udisks libusb1 libmtp
];
installPhase = ''
diff --git a/pkgs/applications/misc/cgminer/default.nix b/pkgs/applications/misc/cgminer/default.nix
new file mode 100644
index 000000000000..4ae404a002f1
--- /dev/null
+++ b/pkgs/applications/misc/cgminer/default.nix
@@ -0,0 +1,44 @@
+{ fetchgit, stdenv, pkgconfig, libtool, autoconf, automake,
+ curl, ncurses, amdappsdk, amdadlsdk, xorg }:
+
+stdenv.mkDerivation rec {
+ version = "2.11.4";
+ name = "cgminer-${version}";
+
+ src = fetchgit {
+ url = "https://github.com/ckolivas/cgminer.git";
+ rev = "96c8ff5f10f2d8f0cf4d1bd889e8eeac2e4aa715";
+ sha256 = "1vf9agy4vw50cap03qig2y65hdrsdy7cknkzyagv89w5xb230r9a";
+ };
+
+ buildInputs = [ autoconf automake pkgconfig libtool curl ncurses amdappsdk amdadlsdk xorg.libX11 xorg.libXext xorg.libXinerama ];
+ configureScript = "./autogen.sh";
+ configureFlags = "--enable-scrypt";
+ NIX_LDFLAGS = "-lgcc_s -lX11 -lXext -lXinerama";
+
+ preConfigure = ''
+ ln -s ${amdadlsdk}/include/* ADL_SDK/
+ '';
+
+ postBuild = ''
+ gcc api-example.c -I compat/jansson -o cgminer-api
+ '';
+
+ postInstall = ''
+ cp cgminer-api $out/bin/
+ chmod 444 $out/bin/*.cl
+ '';
+
+ meta = with stdenv.lib; {
+ description = "CPU/GPU miner in c for bitcoin";
+ longDescription= ''
+ This is a multi-threaded multi-pool GPU, FPGA and ASIC miner with ATI GPU
+ monitoring, (over)clocking and fanspeed support for bitcoin and derivative
+ coins. Do not use on multiple block chains at the same time!
+ '';
+ homepage = "https://github.com/ckolivas/cgminer";
+ license = licenses.gpl3;
+ maintainers = [ maintainers.offline ];
+ platforms = [ "i686-linux" "x86_64-linux" ];
+ };
+}
diff --git a/pkgs/applications/misc/djvulibre/default.nix b/pkgs/applications/misc/djvulibre/default.nix
index e22dce72b628..4a51ec2d1acd 100644
--- a/pkgs/applications/misc/djvulibre/default.nix
+++ b/pkgs/applications/misc/djvulibre/default.nix
@@ -1,16 +1,14 @@
-{ stdenv, fetchurl, libjpeg, libtiff, libpng, ghostscript, libungif, zlib }:
+{ stdenv, fetchurl, libjpeg, libtiff, librsvg }:
stdenv.mkDerivation rec {
- name = "djvulibre-3.5.24";
+ name = "djvulibre-3.5.25.3";
src = fetchurl {
url = "mirror://sourceforge/djvu/${name}.tar.gz";
- sha256 = "0d1592cmc7scg2jzah47mnvbqldhxb1x9vxm7y64a3iasa0lqwy0";
+ sha256 = "1q5i5ha4zmj2ahjfhi8cv1rah80vm43m9ads46ji38rgvpb7x3c9";
};
- buildInputs = [ libjpeg libtiff libpng ghostscript zlib libungif ];
-
- patches = [ ./gcc-4.6.patch ];
+ buildInputs = [ libjpeg libtiff librsvg ];
meta = {
description = "A library and viewer for the DJVU file format for scanned images";
diff --git a/pkgs/applications/misc/djvulibre/gcc-4.6.patch b/pkgs/applications/misc/djvulibre/gcc-4.6.patch
deleted file mode 100644
index 48fbc2bc7aca..000000000000
--- a/pkgs/applications/misc/djvulibre/gcc-4.6.patch
+++ /dev/null
@@ -1,658 +0,0 @@
-commit 3341545edba359b292a8ef6db1b7d342caf3dcf1
-Author: Leon Bottou
-Date: Wed May 4 21:25:35 2011 -0700
-
- Added include for gcc-4.6
-
-diff --git a/libdjvu/BSByteStream.cpp b/libdjvu/BSByteStream.cpp
-index b762ccf..d662ab0 100644
---- a/libdjvu/BSByteStream.cpp
-+++ b/libdjvu/BSByteStream.cpp
-@@ -62,6 +62,7 @@
-
- // - Author: Leon Bottou, 07/1998
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/BSEncodeByteStream.cpp b/libdjvu/BSEncodeByteStream.cpp
-index 5d80e51..68bc3e3 100644
---- a/libdjvu/BSEncodeByteStream.cpp
-+++ b/libdjvu/BSEncodeByteStream.cpp
-@@ -71,6 +71,7 @@
- #include "GOS.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/ByteStream.cpp b/libdjvu/ByteStream.cpp
-index 158c33c..be01847 100644
---- a/libdjvu/ByteStream.cpp
-+++ b/libdjvu/ByteStream.cpp
-@@ -73,6 +73,7 @@
- #include "GOS.h"
- #include "GURL.h"
- #include "DjVuMessage.h"
-+#include
- #include
- #if defined(WIN32) || defined(__CYGWIN32__)
- # include
-diff --git a/libdjvu/DjVuFileCache.cpp b/libdjvu/DjVuFileCache.cpp
-index 6b1e85d..7d7a192 100644
---- a/libdjvu/DjVuFileCache.cpp
-+++ b/libdjvu/DjVuFileCache.cpp
-@@ -63,6 +63,7 @@
- #include "DjVuFileCache.h"
- #include "debug.h"
-
-+#include
- #include
-
-
-diff --git a/libdjvu/DjVuGlobal.cpp b/libdjvu/DjVuGlobal.cpp
-index e6d3cec..df9278e 100644
---- a/libdjvu/DjVuGlobal.cpp
-+++ b/libdjvu/DjVuGlobal.cpp
-@@ -76,6 +76,8 @@
- #include "GThreads.h"
- #include "GException.h"
- #include "GContainer.h"
-+
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/DjVuGlobalMemory.cpp b/libdjvu/DjVuGlobalMemory.cpp
-index 3c6012c..c8ba309 100644
---- a/libdjvu/DjVuGlobalMemory.cpp
-+++ b/libdjvu/DjVuGlobalMemory.cpp
-@@ -67,6 +67,8 @@
-
- #include "DjVuGlobal.h"
- #include "GException.h"
-+
-+#include
- #include
- #include
- #include "debug.h"
-diff --git a/libdjvu/DjVuMessage.cpp b/libdjvu/DjVuMessage.cpp
-index 6f5a735..1726025 100644
---- a/libdjvu/DjVuMessage.cpp
-+++ b/libdjvu/DjVuMessage.cpp
-@@ -71,6 +71,7 @@
- #include "debug.h"
- #include
- #include
-+#include
- #include
- #ifdef WIN32
- # include
-diff --git a/libdjvu/DjVuMessageLite.cpp b/libdjvu/DjVuMessageLite.cpp
-index b8c1010..5daa9d9 100644
---- a/libdjvu/DjVuMessageLite.cpp
-+++ b/libdjvu/DjVuMessageLite.cpp
-@@ -73,8 +73,8 @@
- #include "debug.h"
- #include
- #include
-+#include
- #include
--// #include
- #ifdef WIN32
- #include
- #include
-diff --git a/libdjvu/DjVuPalette.cpp b/libdjvu/DjVuPalette.cpp
-index c489f7b..76b0bf4 100644
---- a/libdjvu/DjVuPalette.cpp
-+++ b/libdjvu/DjVuPalette.cpp
-@@ -64,6 +64,8 @@
- #include "ByteStream.h"
- #include "BSByteStream.h"
- #include "DjVuPalette.h"
-+
-+#include
- #include
- #include
-
-diff --git a/libdjvu/DjVuPort.h b/libdjvu/DjVuPort.h
-index f6a92f6..e2b3125 100644
---- a/libdjvu/DjVuPort.h
-+++ b/libdjvu/DjVuPort.h
-@@ -65,6 +65,7 @@
-
- #include "GThreads.h"
- #include "GURL.h"
-+#include "stddef.h"
-
- #ifdef HAVE_NAMESPACES
- namespace DJVU {
-diff --git a/libdjvu/DjVuToPS.cpp b/libdjvu/DjVuToPS.cpp
-index 5517bf3..6914ff9 100644
---- a/libdjvu/DjVuToPS.cpp
-+++ b/libdjvu/DjVuToPS.cpp
-@@ -72,6 +72,7 @@
- #include "GPixmap.h"
- #include "debug.h"
- #include
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GBitmap.cpp b/libdjvu/GBitmap.cpp
-index ab5c0de..797edcc 100644
---- a/libdjvu/GBitmap.cpp
-+++ b/libdjvu/GBitmap.cpp
-@@ -66,6 +66,8 @@
- #include "GString.h"
- #include "GThreads.h"
- #include "GException.h"
-+#include
-+#include
- #include
-
- // - Author: Leon Bottou, 05/1997
-diff --git a/libdjvu/GException.cpp b/libdjvu/GException.cpp
-index 2ea179a..89da70f 100644
---- a/libdjvu/GException.cpp
-+++ b/libdjvu/GException.cpp
-@@ -60,6 +60,7 @@
- # pragma implementation
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GOS.cpp b/libdjvu/GOS.cpp
-index e784932..d2088e2 100644
---- a/libdjvu/GOS.cpp
-+++ b/libdjvu/GOS.cpp
-@@ -65,6 +65,7 @@
- #include "GOS.h"
- #include "GURL.h"
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GPixmap.cpp b/libdjvu/GPixmap.cpp
-index 392df54..4bf6f57 100644
---- a/libdjvu/GPixmap.cpp
-+++ b/libdjvu/GPixmap.cpp
-@@ -75,6 +75,8 @@
- #include "GThreads.h"
- #include "Arrays.h"
- #include "JPEGDecoder.h"
-+
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GSmartPointer.cpp b/libdjvu/GSmartPointer.cpp
-index 6e523e7..58aef5b 100644
---- a/libdjvu/GSmartPointer.cpp
-+++ b/libdjvu/GSmartPointer.cpp
-@@ -67,6 +67,7 @@
- // Our original implementation consisted of multiple classes.
- // .
-
-+#include
- #include
- #if PARANOID_DEBUG
- # include
-diff --git a/libdjvu/GSmartPointer.h b/libdjvu/GSmartPointer.h
-index 82781bd..8a8bb8a 100644
---- a/libdjvu/GSmartPointer.h
-+++ b/libdjvu/GSmartPointer.h
-@@ -97,6 +97,8 @@
- #include "DjVuGlobal.h"
- #include "atomic.h"
-
-+#include
-+
- #ifdef HAVE_NAMESPACES
- namespace DJVU {
- # ifdef NOT_DEFINED // Just to fool emacs c++ mode
-diff --git a/libdjvu/GString.cpp b/libdjvu/GString.cpp
-index 03f6226..350b11b 100644
---- a/libdjvu/GString.cpp
-+++ b/libdjvu/GString.cpp
-@@ -73,6 +73,7 @@
- #include "GThreads.h"
- #include "debug.h"
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GString.h b/libdjvu/GString.h
-index b63b753..3aa1f76 100644
---- a/libdjvu/GString.h
-+++ b/libdjvu/GString.h
-@@ -108,6 +108,7 @@
- #include "DjVuGlobal.h"
- #include "GContainer.h"
-
-+#include
- #include
- #include
- #ifdef WIN32
-diff --git a/libdjvu/GThreads.cpp b/libdjvu/GThreads.cpp
-index d81f3c3..253fed8 100644
---- a/libdjvu/GThreads.cpp
-+++ b/libdjvu/GThreads.cpp
-@@ -71,6 +71,8 @@
- #include "GThreads.h"
- #include "GException.h"
- #include "DjVuMessageLite.h"
-+
-+#include
- #include
- #include
-
-diff --git a/libdjvu/GURL.cpp b/libdjvu/GURL.cpp
-index c37bf52..a80078c 100644
---- a/libdjvu/GURL.cpp
-+++ b/libdjvu/GURL.cpp
-@@ -72,6 +72,7 @@
- #include "GURL.h"
- #include "debug.h"
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/GUnicode.cpp b/libdjvu/GUnicode.cpp
-index 415c081..a8b25b8 100644
---- a/libdjvu/GUnicode.cpp
-+++ b/libdjvu/GUnicode.cpp
-@@ -62,6 +62,8 @@
-
- #include "GString.h"
-
-+#include
-+
- #if HAS_ICONV
- #include
- #endif
-diff --git a/libdjvu/IFFByteStream.h b/libdjvu/IFFByteStream.h
-index a653f8c..e31b216 100644
---- a/libdjvu/IFFByteStream.h
-+++ b/libdjvu/IFFByteStream.h
-@@ -124,6 +124,7 @@
-
-
- #include "DjVuGlobal.h"
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/IW44EncodeCodec.cpp b/libdjvu/IW44EncodeCodec.cpp
-index 8d7b12c..49081b7 100644
---- a/libdjvu/IW44EncodeCodec.cpp
-+++ b/libdjvu/IW44EncodeCodec.cpp
-@@ -76,6 +76,7 @@
- #include "IFFByteStream.h"
- #include "GRect.h"
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/IW44Image.cpp b/libdjvu/IW44Image.cpp
-index 9476726..4a19fb5 100644
---- a/libdjvu/IW44Image.cpp
-+++ b/libdjvu/IW44Image.cpp
-@@ -76,6 +76,7 @@
- #include "IFFByteStream.h"
- #include "GRect.h"
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/JPEGDecoder.h b/libdjvu/JPEGDecoder.h
-index bd430a0..fad1d4c 100644
---- a/libdjvu/JPEGDecoder.h
-+++ b/libdjvu/JPEGDecoder.h
-@@ -64,6 +64,7 @@
-
- #ifdef NEED_JPEG_DECODER
-
-+#include
- #include
- #include
-
-diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp
-index 5ab60bb..528dab6 100644
---- a/libdjvu/MMX.cpp
-+++ b/libdjvu/MMX.cpp
-@@ -62,6 +62,7 @@
-
- #include "MMX.h"
- #include
-+#include
- #include
-
-
-diff --git a/libdjvu/UnicodeByteStream.h b/libdjvu/UnicodeByteStream.h
-index 0ae112b..9b49a17 100644
---- a/libdjvu/UnicodeByteStream.h
-+++ b/libdjvu/UnicodeByteStream.h
-@@ -88,6 +88,7 @@
- #include "GString.h"
- #include "ByteStream.h"
-
-+#include
-
- #ifdef HAVE_NAMESPACES
- namespace DJVU {
-diff --git a/libdjvu/XMLParser.cpp b/libdjvu/XMLParser.cpp
-index 84386c5..7da923a 100644
---- a/libdjvu/XMLParser.cpp
-+++ b/libdjvu/XMLParser.cpp
-@@ -75,6 +75,7 @@
- #include "debug.h"
- #include
- #include
-+#include
- #include
-
-
-diff --git a/libdjvu/ZPCodec.cpp b/libdjvu/ZPCodec.cpp
-index f6e971d..ff5b9bf 100644
---- a/libdjvu/ZPCodec.cpp
-+++ b/libdjvu/ZPCodec.cpp
-@@ -66,6 +66,8 @@
- #include "ZPCodec.h"
- #include "ByteStream.h"
- #include "GException.h"
-+
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/atomic.cpp b/libdjvu/atomic.cpp
-index bdc193e..63fd483 100644
---- a/libdjvu/atomic.cpp
-+++ b/libdjvu/atomic.cpp
-@@ -28,6 +28,7 @@
- # include "config.h"
- #endif
-
-+#include
- #include
- #include
- #include "atomic.h"
-diff --git a/libdjvu/ddjvuapi.cpp b/libdjvu/ddjvuapi.cpp
-index b18b84b..f40f5aa 100644
---- a/libdjvu/ddjvuapi.cpp
-+++ b/libdjvu/ddjvuapi.cpp
-@@ -60,6 +60,7 @@
- # pragma implementation "ddjvuapi.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h
-index d0ed48f..841f223 100644
---- a/libdjvu/ddjvuapi.h
-+++ b/libdjvu/ddjvuapi.h
-@@ -64,6 +64,7 @@ extern "C" {
- }
- #endif
-
-+#include
- #include
- #include
-
-diff --git a/libdjvu/miniexp.cpp b/libdjvu/miniexp.cpp
-index e0fb087..fc51297 100644
---- a/libdjvu/miniexp.cpp
-+++ b/libdjvu/miniexp.cpp
-@@ -23,6 +23,7 @@
- # pragma implementation "miniexp.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/libdjvu/miniexp.h b/libdjvu/miniexp.h
-index 91e345d..993005b 100644
---- a/libdjvu/miniexp.h
-+++ b/libdjvu/miniexp.h
-@@ -38,7 +38,8 @@ extern "C" {
- #ifndef MINILISPAPI
- # define MINILISPAPI /**/
- #endif
--
-+
-+#include
-
- /* -------------------------------------------------- */
- /* LISP EXPRESSIONS */
-diff --git a/tools/bzz.cpp b/tools/bzz.cpp
-index ca092e1..2ebc7b9 100644
---- a/tools/bzz.cpp
-+++ b/tools/bzz.cpp
-@@ -94,6 +94,7 @@
- #include "GURL.h"
- #include "DjVuMessage.h"
- #include
-+#include
- #include
-
- static const char *program = "(unknown)";
-diff --git a/tools/c44.cpp b/tools/c44.cpp
-index 6f23b53..855504b 100644
---- a/tools/c44.cpp
-+++ b/tools/c44.cpp
-@@ -226,6 +226,7 @@
- #include
- #include
- #include
-+#include
- #include
-
- // command line data
-diff --git a/tools/cjb2.cpp b/tools/cjb2.cpp
-index 8cf89b9..11eb662 100644
---- a/tools/cjb2.cpp
-+++ b/tools/cjb2.cpp
-@@ -120,6 +120,7 @@
- #include "jb2tune.h"
-
- #include
-+#include
- #include
- #if HAVE_TIFF
- #include
-diff --git a/tools/cpaldjvu.cpp b/tools/cpaldjvu.cpp
-index 111cbd3..b640a7a 100644
---- a/tools/cpaldjvu.cpp
-+++ b/tools/cpaldjvu.cpp
-@@ -118,6 +118,7 @@
- #include "jb2tune.h"
-
- #include
-+#include
- #include
- #include
-
-diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp
-index cd721f8..d5203d5 100644
---- a/tools/csepdjvu.cpp
-+++ b/tools/csepdjvu.cpp
-@@ -162,6 +162,7 @@
- #include "jb2tune.h"
-
- #include
-+#include
- #include
-
- #undef MIN
-diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
-index 817e045..981a270 100644
---- a/tools/ddjvu.cpp
-+++ b/tools/ddjvu.cpp
-@@ -62,6 +62,7 @@
- # include "config.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/tools/djvm.cpp b/tools/djvm.cpp
-index 951bd66..6ea88c2 100644
---- a/tools/djvm.cpp
-+++ b/tools/djvm.cpp
-@@ -135,9 +135,9 @@
- #include "DjVuMessage.h"
-
- #include
-+#include
- #include
- #include
--#include
-
- static const char * progname;
-
-diff --git a/tools/djvmcvt.cpp b/tools/djvmcvt.cpp
-index 9ca1c54..20b468a 100644
---- a/tools/djvmcvt.cpp
-+++ b/tools/djvmcvt.cpp
-@@ -144,6 +144,7 @@
-
- #include
- #include
-+#include
- #include
-
- static const char * progname;
-diff --git a/tools/djvudump.cpp b/tools/djvudump.cpp
-index 6a0215a..2dddbdf 100644
---- a/tools/djvudump.cpp
-+++ b/tools/djvudump.cpp
-@@ -119,6 +119,7 @@ xxx
- #include
- #include
- #include
-+#include
- #include
-
- void
-diff --git a/tools/djvuextract.cpp b/tools/djvuextract.cpp
-index 4a9f381..907b99c 100644
---- a/tools/djvuextract.cpp
-+++ b/tools/djvuextract.cpp
-@@ -105,6 +105,7 @@
- #include "GOS.h"
- #include "DjVuMessage.h"
- #include
-+#include
- #include
-
-
-diff --git a/tools/djvumake.cpp b/tools/djvumake.cpp
-index 7020484..4c5fc0f 100644
---- a/tools/djvumake.cpp
-+++ b/tools/djvumake.cpp
-@@ -153,6 +153,7 @@
-
- #include
- #include
-+#include
- #include
- #include
-
-diff --git a/tools/djvups.cpp b/tools/djvups.cpp
-index 51aa999..632b832 100644
---- a/tools/djvups.cpp
-+++ b/tools/djvups.cpp
-@@ -57,6 +57,7 @@
- # include "config.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/tools/djvused.cpp b/tools/djvused.cpp
-index de84dcd..687fdca 100644
---- a/tools/djvused.cpp
-+++ b/tools/djvused.cpp
-@@ -61,6 +61,7 @@
- #endif
-
- #include
-+#include
- #include
- #include
- #include
-diff --git a/tools/djvuserve.cpp b/tools/djvuserve.cpp
-index 19a17da..818fe78 100644
---- a/tools/djvuserve.cpp
-+++ b/tools/djvuserve.cpp
-@@ -73,6 +73,7 @@
-
- #include
- #include
-+#include
- #include
- #include
- #include
-diff --git a/tools/djvutxt.cpp b/tools/djvutxt.cpp
-index ba2c745..9e9124c 100644
---- a/tools/djvutxt.cpp
-+++ b/tools/djvutxt.cpp
-@@ -61,6 +61,7 @@
- # include "config.h"
- #endif
-
-+#include
- #include
- #include
- #include
-diff --git a/tools/tiff2pdf.h b/tools/tiff2pdf.h
-index 082f5fb..656dc43 100644
---- a/tools/tiff2pdf.h
-+++ b/tools/tiff2pdf.h
-@@ -22,6 +22,7 @@
- # endif
- # if HAVE_TIFF
- # include
-+# include
- # include
- # include
- # include
-diff --git a/xmltools/djvutoxml.cpp b/xmltools/djvutoxml.cpp
-index 17c769b..b40535e 100644
---- a/xmltools/djvutoxml.cpp
-+++ b/xmltools/djvutoxml.cpp
-@@ -71,6 +71,7 @@
-
- #include
- #include
-+#include
- #include
- #include
- #include
-diff --git a/xmltools/djvuxmlparser.cpp b/xmltools/djvuxmlparser.cpp
-index bdc5768..6679a9d 100644
---- a/xmltools/djvuxmlparser.cpp
-+++ b/xmltools/djvuxmlparser.cpp
-@@ -70,6 +70,7 @@
- #include
- #include
- #include
-+#include
- #include
-
- static void
diff --git a/pkgs/applications/misc/evince/default.nix b/pkgs/applications/misc/evince/default.nix
deleted file mode 100644
index 793c7bda2994..000000000000
--- a/pkgs/applications/misc/evince/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ fetchurl, stdenv, perl, perlXMLParser, gettext, intltool
-, pkgconfig, glib, gtk, gnomedocutils, gnomeicontheme
-, libgnome, libgnomeui, scrollkeeper, libxslt
-, libglade, libgnome_keyring, dbus, dbus_glib
-, poppler, libspectre, djvulibre, shared_mime_info
-, makeWrapper, which, ghostscript
-, recentListSize ? null # 5 is not enough, allow passing a different number
-}:
-
-stdenv.mkDerivation rec {
- name = "evince-2.32.0";
-
- src = fetchurl {
- url = "http://ftp.gnome.org/pub/GNOME/sources/evince/2.32/${name}.tar.bz2";
- sha256 = "2a4c91ae38f8b5028cebb91b9da9ddc50ea8ae3f3d429df89ba351da2d787ff7";
- };
-
- buildInputs = [
- perl perlXMLParser gettext intltool pkgconfig glib gtk
- gnomedocutils gnomeicontheme libgnome libgnomeui libglade
- scrollkeeper libgnome_keyring
- libxslt # for `xsltproc'
- dbus dbus_glib poppler libspectre djvulibre makeWrapper which
- ghostscript
- ];
-
- configureFlags = "--with-libgnome --enable-dbus --enable-pixbuf "
-
- # Do not use nautilus
- + " --disable-nautilus "
- # Do not update Scrollkeeper's database (GNOME's help system).
- + "--disable-scrollkeeper";
-
- postUnpack = if recentListSize != null then ''
- sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' */shell/ev-open-recent-action.c
- sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' */shell/ev-window.c
- '' else "";
-
- postInstall = ''
- # Tell Glib/GIO about the MIME info directory, which is used
- # by `g_file_info_get_content_type ()'.
- wrapProgram "$out/bin/evince" \
- --prefix XDG_DATA_DIRS : "${shared_mime_info}/share:$out/share"
- '';
-
- meta = {
- homepage = http://www.gnome.org/projects/evince/;
- description = "Evince, GNOME's document viewer";
-
- longDescription = ''
- Evince is a document viewer for multiple document formats. It
- currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal
- of Evince is to replace the multiple document viewers that exist
- on the GNOME Desktop with a single simple application.
- '';
-
- license = "GPLv2+";
- };
-}
diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix
new file mode 100644
index 000000000000..0098e626b424
--- /dev/null
+++ b/pkgs/applications/misc/keepass/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, unzip, makeDesktopItem, mono }:
+
+stdenv.mkDerivation rec {
+ name = "keepass-${version}";
+ version = "2.22";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/keepass/KeePass-${version}.zip";
+ sha256 = "0mman7r1jmirfwzix5qww0yn4rrgzcg7546basxjvvfc8flp43j0";
+ };
+
+ sourceRoot = ".";
+
+ phases = [ "unpackPhase" "installPhase" ];
+
+ desktopItem = makeDesktopItem {
+ name = "keepass";
+ exec = "keepass";
+ comment = "Password manager";
+ desktopName = "Keepass";
+ genericName = "Password manager";
+ categories = "Application;Other;";
+ };
+
+
+ installPhase = ''
+ ensureDir "$out/bin"
+ echo "${mono}/bin/mono $out/KeePass.exe" > $out/bin/keepass
+ chmod +x $out/bin/keepass
+ echo $out
+ cp -r ./* $out/
+ ensureDir "$out/share/applications"
+ cp ${desktopItem}/share/applications/* $out/share/applications
+ '';
+
+ buildInputs = [ unzip ];
+
+ meta = {
+ description = "GUI password manager with strong cryptography";
+ homepage = http://www.keepass.info/;
+ maintainers = with stdenv.lib.maintainers; [amorsillo];
+ platforms = with stdenv.lib.platforms; all;
+ license = stdenv.lib.licenses.gpl2;
+ };
+}
diff --git a/pkgs/applications/misc/sdcv/default.nix b/pkgs/applications/misc/sdcv/default.nix
new file mode 100644
index 000000000000..8ac4730de9a7
--- /dev/null
+++ b/pkgs/applications/misc/sdcv/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, glib, gettext }:
+
+stdenv.mkDerivation rec {
+ name= "sdcv-0.4.2";
+
+ meta = {
+ homepage = http://sdcv.sourceforge.net/;
+ description = "Console version of StarDict program";
+ maintainers = with stdenv.lib.maintainers; [ lovek323 ];
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.unix;
+ };
+
+ src = fetchurl {
+ url = "mirror://sourceforge/sdcv/${name}.tar.bz2";
+ sha256 = "1cnyv7gd1qvz8ma8545d3aq726wxrx4km7ykl97831irx5wz0r51";
+ };
+
+ patches = ( if stdenv.isDarwin
+ then [ ./sdcv.cpp.patch-darwin ./utils.hpp.patch ]
+ else [ ./sdcv.cpp.patch ] );
+
+ buildInputs = [ pkgconfig glib gettext ];
+
+ preBuild = ''
+ sed -i 's/guint32 page_size/size_t page_size/' src/lib/lib.cpp
+ '';
+
+ NIX_CFLAGS_COMPILE = "-D__GNU_LIBRARY__";
+}
+
diff --git a/pkgs/applications/misc/sdcv/sdcv.cpp.patch b/pkgs/applications/misc/sdcv/sdcv.cpp.patch
new file mode 100644
index 000000000000..6f835f16e458
--- /dev/null
+++ b/pkgs/applications/misc/sdcv/sdcv.cpp.patch
@@ -0,0 +1,12 @@
+--- a/src/utils.hpp
++++ b/src/utils.hpp
+@@ -2,6 +2,9 @@
+ #define _UTILS_HPP_
+
+ #include
++#include
++#include
++
+ using std::string;
+
+ extern bool stdio_getline(FILE *in, string &str);
diff --git a/pkgs/applications/misc/sdcv/sdcv.cpp.patch-darwin b/pkgs/applications/misc/sdcv/sdcv.cpp.patch-darwin
new file mode 100644
index 000000000000..2ee9a24e0347
--- /dev/null
+++ b/pkgs/applications/misc/sdcv/sdcv.cpp.patch-darwin
@@ -0,0 +1,19 @@
+--- a/src/sdcv.cpp
++++ b/src/sdcv.cpp
+@@ -27,13 +27,13 @@
+ #include
+ #include
+ #include
++#include
++#include
++#include
+ #include
+ #include
+ #include
+ #include
+-#include
+-#include
+-#include
+
+ #include "libwrapper.hpp"
+ #include "readline.hpp"
diff --git a/pkgs/applications/misc/sdcv/utils.hpp.patch b/pkgs/applications/misc/sdcv/utils.hpp.patch
new file mode 100644
index 000000000000..c08641abd6b9
--- /dev/null
+++ b/pkgs/applications/misc/sdcv/utils.hpp.patch
@@ -0,0 +1,10 @@
+--- a/src/utils.hpp
++++ b/src/utils.hpp
+@@ -2,6 +2,7 @@
+ #define _UTILS_HPP_
+
+ #include
++#include
+ using std::string;
+
+ extern bool stdio_getline(FILE *in, string &str);
diff --git a/pkgs/applications/misc/synergy/cryptopp.patch b/pkgs/applications/misc/synergy/cryptopp.patch
new file mode 100644
index 000000000000..f20ef9544a22
--- /dev/null
+++ b/pkgs/applications/misc/synergy/cryptopp.patch
@@ -0,0 +1,54 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3b61fc0..2206646 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -133,6 +133,9 @@ if (UNIX)
+ check_type_size(long SIZEOF_LONG)
+ check_type_size(short SIZEOF_SHORT)
+
++ # let's just assume cryptopp exists (provided by the Nix expression)
++ list(APPEND libs cryptopp)
++
+ # pthread is used on both Linux and Mac
+ check_library_exists("pthread" pthread_create "" HAVE_PTHREAD)
+ if (HAVE_PTHREAD)
+@@ -303,7 +306,6 @@ if (VNC_SUPPORT)
+ endif()
+
+ add_subdirectory(src)
+-add_subdirectory(tools)
+
+ if (WIN32)
+ # add /analyze in order to unconver potential bugs in the source code
+diff --git a/src/lib/synergy/CCryptoMode.h b/src/lib/synergy/CCryptoMode.h
+index 9b7e8ad..0d659ac 100644
+--- a/src/lib/synergy/CCryptoMode.h
++++ b/src/lib/synergy/CCryptoMode.h
+@@ -17,9 +17,9 @@
+
+ #pragma once
+
+-#include
+-#include
+-#include
++#include
++#include
++#include
+ #include "ECryptoMode.h"
+ #include "CString.h"
+
+diff --git a/src/lib/synergy/CCryptoStream.h b/src/lib/synergy/CCryptoStream.h
+index 104b1f6..09c4dc4 100644
+--- a/src/lib/synergy/CCryptoStream.h
++++ b/src/lib/synergy/CCryptoStream.h
+@@ -20,8 +20,8 @@
+ #include "BasicTypes.h"
+ #include "CStreamFilter.h"
+ #include "CCryptoMode.h"
+-#include
+-#include
++#include
++#include
+
+ class CCryptoOptions;
+
diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix
index 4bb3ef9e64a4..0b3734ea147a 100644
--- a/pkgs/applications/misc/synergy/default.nix
+++ b/pkgs/applications/misc/synergy/default.nix
@@ -1,19 +1,34 @@
-{ stdenv, fetchurl, cmake, x11, libX11, libXi, libXtst }:
+{ stdenv, fetchurl, cmake, x11, libX11, libXi, libXtst, libXrandr, xinput
+, cryptopp ? null, unzip ? null }:
+
+assert stdenv.isLinux -> cryptopp != null;
+assert !stdenv.isLinux -> unzip != null;
+
+with stdenv.lib;
stdenv.mkDerivation rec {
- name = "synergy-1.4.10";
+ name = "synergy-1.4.12";
src = fetchurl {
url = "http://synergy.googlecode.com/files/${name}-Source.tar.gz";
- sha256 = "1ghgf96gbk4sdw8sqlc3pjschkmmqybihi12mg6hi26gnk7a5m86";
+ sha256 = "0j884skwqy8r8ckj9a4rlwsbjwb1yrj9wqma1nwhr2inff6hrdim";
};
- buildInputs = [ cmake x11 libX11 libXi libXtst ];
-
+ patches = optional stdenv.isLinux ./cryptopp.patch;
+
+ postPatch = if stdenv.isLinux then ''
+ sed -i -e '/HAVE_X11_EXTENSIONS_XRANDR_H/c \
+ set(HAVE_X11_EXTENSIONS_XRANDR_H true)' CMakeLists.txt
+ '' else ''
+ ${unzip}/bin/unzip -d tools/cryptopp562 tools/cryptopp562.zip
+ '';
+
+ buildInputs = [ cmake x11 libX11 libXi libXtst libXrandr xinput ]
+ ++ optional stdenv.isLinux cryptopp;
+
# At this moment make install doesn't work for synergy
# http://synergy-foss.org/spit/issues/details/3317/
-
installPhase = ''
ensureDir $out/bin
cp ../bin/synergyc $out/bin
@@ -21,10 +36,14 @@ stdenv.mkDerivation rec {
cp ../bin/synergyd $out/bin
'';
- meta = {
+ doCheck = true;
+ checkPhase = "../bin/unittests";
+
+ meta = {
description = "Tool to share the mouse keyboard and the clipboard between computers";
homepage = http://synergy-foss.org;
- license = stdenv.lib.licenses.gpl2;
- platforms = stdenv.lib.platforms.all;
+ license = licenses.gpl2;
+ maintainers = [ maintainers.aszlig ];
+ platforms = platforms.all;
};
}
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index b0dc87217476..b5557cc1200f 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -84,6 +84,11 @@ let
buildPath = "out/${buildType}";
libExecPath = "$out/libexec/${packageName}";
+ # user namespace sandbox patch
+ userns_patch = if versionOlder sourceInfo.version "29.0.0.0"
+ then ./sandbox_userns.patch
+ else ./sandbox_userns_29.patch;
+
in stdenv.mkDerivation rec {
name = "${packageName}-${version}";
inherit packageName;
@@ -116,18 +121,14 @@ in stdenv.mkDerivation rec {
prePatch = "patchShebangs .";
- patches = [ ./sandbox_userns.patch ]
+ patches = [ userns_patch ]
++ optional cupsSupport ./cups_allow_deprecated.patch;
postPatch = ''
sed -i -r -e 's/-f(stack-protector)(-all)?/-fno-\1/' build/common.gypi
+ sed -i -e 's|/usr/bin/gcc|gcc|' third_party/WebKit/Source/core/core.gypi
'' + optionalString useOpenSSL ''
cat $opensslPatches | patch -p1 -d third_party/openssl/openssl
- '' + ''
- sed -i -e 's|/usr/bin/gcc|gcc|' \
- third_party/WebKit/Source/${if !versionOlder sourceInfo.version "28.0.0.0"
- then "core/core.gypi"
- else "WebCore/WebCore.gyp/WebCore.gyp"}
'';
gypFlags = mkGypFlags (gypFlagsUseSystemLibs // {
diff --git a/pkgs/applications/networking/browsers/chromium/sandbox_userns_29.patch b/pkgs/applications/networking/browsers/chromium/sandbox_userns_29.patch
new file mode 100644
index 000000000000..c1987c43e150
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/sandbox_userns_29.patch
@@ -0,0 +1,287 @@
+commit 557daf9cc9c02b8f17e6ee84f9b1ae6e6132d478
+Author: aszlig
+Date: Thu May 16 14:17:56 2013 +0200
+
+ zygote: Add support for user namespaces on Linux.
+
+ The implementation is done by patching the Zygote host to execute the sandbox
+ binary with CLONE_NEWUSER and setting the uid and gid mapping so that the child
+ process is using uid 0 and gid 0 which map to the current user of the parent.
+ Afterwards, the sandbox will continue as if it was called as a setuid binary.
+
+ In addition, this adds new_user_namespace as an option in process_util in order
+ to set the UID and GID mapping correctly. The reason for this is that just
+ passing CLONE_NEWUSER to clone_flags doesn't help in LaunchProcess(), because
+ without setting the mappings exec*() will clear the process's capability sets.
+
+ If the kernel doesn't support unprivileged user namespaces and the sandbox
+ binary doesn't have the setuid flag, the Zygote main process will run without a
+ sandbox. This is to mimic the behaviour if no SUID sandbox binary path is set.
+
+ Signed-off-by: aszlig
+
+diff --git a/base/process_util.h b/base/process_util.h
+index 0bec8e0..6b6f566 100644
+--- a/base/process_util.h
++++ b/base/process_util.h
+@@ -175,6 +175,7 @@ struct LaunchOptions {
+ new_process_group(false)
+ #if defined(OS_LINUX)
+ , clone_flags(0)
++ , new_user_namespace(false)
+ #endif // OS_LINUX
+ #if defined(OS_CHROMEOS)
+ , ctrl_terminal_fd(-1)
+@@ -249,6 +250,9 @@ struct LaunchOptions {
+ #if defined(OS_LINUX)
+ // If non-zero, start the process using clone(), using flags as provided.
+ int clone_flags;
++
++ // If true, start the process in a new user namespace.
++ bool new_user_namespace;
+ #endif // defined(OS_LINUX)
+
+ #if defined(OS_CHROMEOS)
+diff --git a/base/process_util_posix.cc b/base/process_util_posix.cc
+index 83afe44..e529b2b 100644
+--- a/base/process_util_posix.cc
++++ b/base/process_util_posix.cc
+@@ -34,6 +34,13 @@
+ #include "base/threading/platform_thread.h"
+ #include "base/threading/thread_restrictions.h"
+
++#if defined(OS_LINUX)
++#include
++#if !defined(CLONE_NEWUSER)
++#define CLONE_NEWUSER 0x10000000
++#endif
++#endif
++
+ #if defined(OS_CHROMEOS)
+ #include
+ #endif
+@@ -621,8 +628,19 @@ bool LaunchProcess(const std::vector& argv,
+
+ pid_t pid;
+ #if defined(OS_LINUX)
+- if (options.clone_flags) {
+- pid = syscall(__NR_clone, options.clone_flags, 0, 0, 0);
++ int map_pipe_fd[2];
++ int flags = options.clone_flags;
++
++ if (options.new_user_namespace) {
++ flags |= CLONE_NEWUSER;
++ if (pipe(map_pipe_fd) < 0) {
++ DPLOG(ERROR) << "user namespace pipe";
++ return false;
++ }
++ }
++
++ if (options.clone_flags || options.new_user_namespace) {
++ pid = syscall(__NR_clone, flags, 0, 0, 0);
+ } else
+ #endif
+ {
+@@ -635,6 +653,21 @@ bool LaunchProcess(const std::vector& argv,
+ } else if (pid == 0) {
+ // Child process
+
++#if defined(OS_LINUX)
++ if (options.new_user_namespace) {
++ // Close the write end of the pipe so we get an EOF when the parent closes
++ // the FD. This is to avoid race conditions when the UID/GID mappings are
++ // written _after_ execvp().
++ close(map_pipe_fd[1]);
++
++ char dummy;
++ if (HANDLE_EINTR(read(map_pipe_fd[0], &dummy, 1)) != 0) {
++ RAW_LOG(ERROR, "Unexpected input in uid/gid mapping pipe.");
++ _exit(127);
++ }
++ }
++#endif
++
+ // DANGER: fork() rule: in the child, if you don't end up doing exec*(),
+ // you call _exit() instead of exit(). This is because _exit() does not
+ // call any previously-registered (in the parent) exit handlers, which
+@@ -749,6 +782,40 @@ bool LaunchProcess(const std::vector& argv,
+ _exit(127);
+ } else {
+ // Parent process
++#if defined(OS_LINUX)
++ if (options.new_user_namespace) {
++ // We need to write UID/GID mapping here to map the current user outside
++ // the namespace to the root user inside the namespace in order to
++ // correctly "fool" the child process.
++ char buf[256];
++ int map_fd, map_len;
++
++ snprintf(buf, sizeof(buf), "/proc/%d/uid_map", pid);
++ map_fd = open(buf, O_RDWR);
++ DPCHECK(map_fd >= 0);
++ snprintf(buf, sizeof(buf), "0 %d 1", geteuid());
++ map_len = strlen(buf);
++ if (write(map_fd, buf, map_len) != map_len) {
++ RAW_LOG(WARNING, "Can't write to uid_map.");
++ }
++ close(map_fd);
++
++ snprintf(buf, sizeof(buf), "/proc/%d/gid_map", pid);
++ map_fd = open(buf, O_RDWR);
++ DPCHECK(map_fd >= 0);
++ snprintf(buf, sizeof(buf), "0 %d 1", getegid());
++ map_len = strlen(buf);
++ if (write(map_fd, buf, map_len) != map_len) {
++ RAW_LOG(WARNING, "Can't write to gid_map.");
++ }
++ close(map_fd);
++
++ // Close the pipe on the parent, so the child can continue doing the
++ // execvp() call.
++ close(map_pipe_fd[1]);
++ }
++#endif
++
+ if (options.wait) {
+ // While this isn't strictly disk IO, waiting for another process to
+ // finish is the sort of thing ThreadRestrictions is trying to prevent.
+diff --git a/content/browser/zygote_host/zygote_host_impl_linux.cc b/content/browser/zygote_host/zygote_host_impl_linux.cc
+index 130f44a..c1232d4 100644
+--- a/content/browser/zygote_host/zygote_host_impl_linux.cc
++++ b/content/browser/zygote_host/zygote_host_impl_linux.cc
+@@ -118,25 +118,31 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
+
+ sandbox_binary_ = sandbox_cmd.c_str();
+
+- // A non empty sandbox_cmd means we want a SUID sandbox.
+- using_suid_sandbox_ = !sandbox_cmd.empty();
++ bool userns_sandbox = false;
++ const std::vector cmd_line_unwrapped(cmd_line.argv());
+
+- if (using_suid_sandbox_) {
++ if (!sandbox_cmd.empty()) {
+ struct stat st;
+ if (stat(sandbox_binary_.c_str(), &st) != 0) {
+ LOG(FATAL) << "The SUID sandbox helper binary is missing: "
+ << sandbox_binary_ << " Aborting now.";
+ }
+
+- if (access(sandbox_binary_.c_str(), X_OK) == 0 &&
+- (st.st_uid == 0) &&
+- (st.st_mode & S_ISUID) &&
+- (st.st_mode & S_IXOTH)) {
++ if (access(sandbox_binary_.c_str(), X_OK) == 0) {
++ using_suid_sandbox_ = true;
++
+ cmd_line.PrependWrapper(sandbox_binary_);
+
+ scoped_ptr
+ sandbox_client(sandbox::SetuidSandboxClient::Create());
+ sandbox_client->SetupLaunchEnvironment();
++
++ if (!((st.st_uid == 0) &&
++ (st.st_mode & S_ISUID) &&
++ (st.st_mode & S_IXOTH))) {
++ userns_sandbox = true;
++ sandbox_client->SetNoSuid();
++ }
+ } else {
+ LOG(FATAL) << "The SUID sandbox helper binary was found, but is not "
+ "configured correctly. Rather than run without sandboxing "
+@@ -160,7 +166,19 @@ void ZygoteHostImpl::Init(const std::string& sandbox_cmd) {
+ base::ProcessHandle process = -1;
+ base::LaunchOptions options;
+ options.fds_to_remap = &fds_to_map;
++ if (userns_sandbox)
++ options.new_user_namespace = true;
+ base::LaunchProcess(cmd_line.argv(), options, &process);
++
++ if (process == -1 && userns_sandbox) {
++ LOG(ERROR) << "User namespace sandbox failed to start, running without "
++ << "sandbox! You need at least kernel 3.8.0 with CONFIG_USER_NS "
++ << "enabled in order to use the sandbox without setuid bit.";
++ using_suid_sandbox_ = false;
++ options.new_user_namespace = false;
++ base::LaunchProcess(cmd_line_unwrapped, options, &process);
++ }
++
+ CHECK(process != -1) << "Failed to launch zygote process";
+
+ if (using_suid_sandbox_) {
+diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
+index 7d01722..2f445ef 100644
+--- a/content/zygote/zygote_main_linux.cc
++++ b/content/zygote/zygote_main_linux.cc
+@@ -395,6 +395,13 @@ static bool EnterSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
+ *has_started_new_init = true;
+ }
+
++ // Don't set non-dumpable, as it causes trouble when the host tries to find
++ // the zygote process (XXX: Not quite sure why this happens with user
++ // namespaces). Fortunately, we also have the seccomp filter sandbox which
++ // should disallow the use of ptrace.
++ if (setuid_sandbox->IsNoSuid())
++ return true;
++
+ #if !defined(OS_OPENBSD)
+ // Previously, we required that the binary be non-readable. This causes the
+ // kernel to mark the process as non-dumpable at startup. The thinking was
+diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.cc b/sandbox/linux/suid/client/setuid_sandbox_client.cc
+index 34231d4..36e3201 100644
+--- a/sandbox/linux/suid/client/setuid_sandbox_client.cc
++++ b/sandbox/linux/suid/client/setuid_sandbox_client.cc
+@@ -166,6 +166,10 @@ bool SetuidSandboxClient::IsInNewNETNamespace() const {
+ return env_->HasVar(kSandboxNETNSEnvironmentVarName);
+ }
+
++bool SetuidSandboxClient::IsNoSuid() const {
++ return env_->HasVar(kSandboxNoSuidVarName);
++}
++
+ bool SetuidSandboxClient::IsSandboxed() const {
+ return sandboxed_;
+ }
+@@ -175,5 +179,9 @@ void SetuidSandboxClient::SetupLaunchEnvironment() {
+ SetSandboxAPIEnvironmentVariable(env_);
+ }
+
++void SetuidSandboxClient::SetNoSuid() {
++ env_->SetVar(kSandboxNoSuidVarName, "1");
++}
++
+ } // namespace sandbox
+
+diff --git a/sandbox/linux/suid/client/setuid_sandbox_client.h b/sandbox/linux/suid/client/setuid_sandbox_client.h
+index a9f6536..2e8113a 100644
+--- a/sandbox/linux/suid/client/setuid_sandbox_client.h
++++ b/sandbox/linux/suid/client/setuid_sandbox_client.h
+@@ -39,6 +39,8 @@ class SetuidSandboxClient {
+ bool IsInNewPIDNamespace() const;
+ // Did the setuid helper create a new network namespace ?
+ bool IsInNewNETNamespace() const;
++ // Is sandboxed without SUID binary ?
++ bool IsNoSuid() const;
+ // Are we done and fully sandboxed ?
+ bool IsSandboxed() const;
+
+@@ -46,6 +48,8 @@ class SetuidSandboxClient {
+ // helper.
+ void SetupLaunchEnvironment();
+
++ void SetNoSuid();
++
+ private:
+ // Holds the environment. Will never be NULL.
+ base::Environment* env_;
+diff --git a/sandbox/linux/suid/common/sandbox.h b/sandbox/linux/suid/common/sandbox.h
+index aad4ff8..bd710d5 100644
+--- a/sandbox/linux/suid/common/sandbox.h
++++ b/sandbox/linux/suid/common/sandbox.h
+@@ -18,6 +18,7 @@ static const char kAdjustLowMemMarginSwitch[] = "--adjust-low-mem";
+
+ static const char kSandboxDescriptorEnvironmentVarName[] = "SBX_D";
+ static const char kSandboxHelperPidEnvironmentVarName[] = "SBX_HELPER_PID";
++static const char kSandboxNoSuidVarName[] = "SBX_NO_SUID";
+
+ static const long kSUIDSandboxApiNumber = 1;
+ static const char kSandboxEnvironmentApiRequest[] = "SBX_CHROME_API_RQ";
diff --git a/pkgs/applications/networking/browsers/chromium/sources.nix b/pkgs/applications/networking/browsers/chromium/sources.nix
index 54d9f44f7fba..dce02893a56c 100644
--- a/pkgs/applications/networking/browsers/chromium/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/sources.nix
@@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory.
{
dev = {
- version = "29.0.1516.3";
- url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-29.0.1516.3.tar.xz";
- sha256 = "0pdn9c6v0v55d7g4amivxrv132bpj9sfqywk5b8l6kqfjq28mw5k";
+ version = "29.0.1541.2";
+ url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-29.0.1541.2.tar.xz";
+ sha256 = "0i3vp2zrk1sjdhkwdhig08jh0qmzahn96pm0i22r63cp8i9vny1p";
};
beta = {
- version = "28.0.1500.36";
- url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-28.0.1500.36.tar.xz";
- sha256 = "1bz9w46ps8gj056hfwbcj4myyxyr7y759nagz9idraia8116m3pp";
+ version = "28.0.1500.52";
+ url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-28.0.1500.52.tar.xz";
+ sha256 = "1d0q8lsvwqkaninmnyc8jjj0pnqxc5rr3lr3mgzj37avksxvyg3v";
};
stable = {
- version = "27.0.1453.110";
- url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-27.0.1453.110.tar.xz";
- sha256 = "1y61shbzrkcv70x9zyj559g2yyp40hi9y59f7wwx5g076lsaxsw5";
+ version = "28.0.1500.52";
+ url = "http://commondatastorage.googleapis.com/chromium-browser-official/chromium-28.0.1500.52.tar.xz";
+ sha256 = "1d0q8lsvwqkaninmnyc8jjj0pnqxc5rr3lr3mgzj37avksxvyg3v";
};
}
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh
index 0c21213a751c..0c4881bb3962 100755
--- a/pkgs/applications/networking/browsers/chromium/update.sh
+++ b/pkgs/applications/networking/browsers/chromium/update.sh
@@ -1,6 +1,7 @@
#!/bin/sh
channels_url="http://omahaproxy.appspot.com/all?csv=1";
+history_url="http://omahaproxy.appspot.com/history";
bucket_url="http://commondatastorage.googleapis.com/chromium-browser-official/";
output_file="$(cd "$(dirname "$0")" && pwd)/sources.nix";
@@ -41,6 +42,17 @@ sha_insert()
ver_sha_table="$ver_sha_table $version:$sha256";
}
+get_newest_ver()
+{
+ versions="$(for v in $@; do echo "$v"; done)";
+ if oldest="$(echo "$versions" | sort -V 2> /dev/null | tail -n1)";
+ then
+ echo "$oldest";
+ else
+ echo "$versions" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -n1;
+ fi;
+}
+
if [ -e "$output_file" ];
then
get_sha256()
@@ -53,38 +65,55 @@ then
echo -n "Checking if $oldver ($channel) is up to date..." >&2;
- if [ "x$version" != "x$oldver" ];
+ if [ "x$(get_newest_ver "$version" "$oldver")" != "x$oldver" ];
then
echo " no, getting sha256 for new version $version:" >&2;
- sha256="$(nix-prefetch-url "$url")";
+ sha256="$(nix-prefetch-url "$url")" || return 1;
else
echo " yes, keeping old sha256." >&2;
- sha256="$(nix_getattr "$output_file" "$channel.sha256")";
+ sha256="$(nix_getattr "$output_file" "$channel.sha256")" \
+ || return 1;
fi;
sha_insert "$version" "$sha256";
echo "$sha256";
+ return 0;
}
else
get_sha256()
{
- nix-prefetch-url "$url";
+ nix-prefetch-url "$3";
}
fi;
+fetch_filtered_history()
+{
+ curl -s "$history_url" | sed -nr 's/^'"linux,$1"',([^,]+).*$/\1/p';
+}
+
+get_prev_sha256()
+{
+ channel="$1";
+ current_version="$2";
+
+ for version in $(fetch_filtered_history "$channel");
+ do
+ [ "x$version" = "x$current_version" ] && continue;
+ url="${bucket_url%/}/chromium-$version.tar.xz";
+ sha256="$(get_sha256 "$channel" "$version" "$url")" || continue;
+ echo "$sha256:$version:$url";
+ return 0;
+ done;
+}
+
get_channel_exprs()
{
- for chline in $(echo "$1" | cut -d, -f-2);
+ for chline in $1;
do
channel="${chline%%,*}";
version="${chline##*,}";
- # XXX: Remove case after version 26 is stable:
- if [ "${version%%.*}" -ge 26 ]; then
- url="${bucket_url%/}/chromium-$version.tar.xz";
- else
- url="${bucket_url%/}/chromium-$version.tar.bz2";
- fi;
+ url="${bucket_url%/}/chromium-$version.tar.xz";
echo -n "Checking if sha256 of version $version is cached..." >&2;
if sha256="$(sha_lookup "$version")";
@@ -93,6 +122,17 @@ get_channel_exprs()
else
echo " no." >&2;
sha256="$(get_sha256 "$channel" "$version" "$url")";
+ if [ $? -ne 0 ];
+ then
+ echo "Whoops, failed to fetch $version, trying previous" \
+ "versions:" >&2;
+
+ sha_ver_url="$(get_prev_sha256 "$channel" "$version")";
+ sha256="${sha_ver_url%%:*}";
+ ver_url="${sha_ver_url#*:}";
+ version="${ver_url%%:*}";
+ url="${ver_url#*:}";
+ fi;
fi;
sha_insert "$version" "$sha256";
@@ -108,7 +148,7 @@ get_channel_exprs()
cd "$(dirname "$0")";
omaha="$(curl -s "$channels_url")";
-versions="$(echo "$omaha" | sed -n -e 's/^linux,\(\([^,]\+,\)\{2\}\).*$/\1/p')";
+versions="$(echo "$omaha" | sed -nr -e 's/^linux,([^,]+,[^,]+).*$/\1/p')";
channel_exprs="$(get_channel_exprs "$versions")";
cat > "$output_file" <<-EOF
diff --git a/pkgs/applications/networking/browsers/firefox/20.0.nix b/pkgs/applications/networking/browsers/firefox/20.0.nix
index 1480a300820c..39cf69dcfb05 100644
--- a/pkgs/applications/networking/browsers/firefox/20.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/20.0.nix
@@ -35,7 +35,7 @@ rec {
#"--enable-profiling"
"--disable-debug"
"--enable-strip"
- # "--with-system-jpeg" # Too old in nixpkgs
+ "--with-system-jpeg" # now we use recent libjpeg-turbo
"--with-system-zlib"
"--with-system-bz2"
"--with-system-nspr"
@@ -135,7 +135,6 @@ rec {
[ "--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";
diff --git a/pkgs/applications/networking/browsers/firefox/21.0.nix b/pkgs/applications/networking/browsers/firefox/21.0.nix
index 02766a9ccff6..35ba2cad1244 100644
--- a/pkgs/applications/networking/browsers/firefox/21.0.nix
+++ b/pkgs/applications/networking/browsers/firefox/21.0.nix
@@ -1,8 +1,10 @@
{ stdenv, fetchurl, pkgconfig, gtk, pango, perl, python, zip, libIDL
-, libjpeg, libpng, zlib, cairo, dbus, dbus_glib, bzip2, xlibs
+, libjpeg, libpng, zlib, dbus, dbus_glib, bzip2, xlibs
, freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
, yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
-
+, hunspell, libevent, libstartup_notification, libvpx
+, cairo ? null
+, useSystemCairo ? false
, # 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
@@ -12,8 +14,10 @@
}:
assert stdenv.gcc ? libc && stdenv.gcc.libc != null;
+assert useSystemCairo -> cairo != null;
-rec {
+let optional = stdenv.lib.optional;
+in rec {
firefoxVersion = "21.0";
@@ -35,20 +39,25 @@ rec {
#"--enable-profiling"
"--disable-debug"
"--enable-strip"
- # "--with-system-jpeg" # Too old in nixpkgs
+ "--with-system-jpeg"
"--with-system-zlib"
"--with-system-bz2"
"--with-system-nspr"
"--with-system-nss"
+ "--with-system-libevent"
+ "--with-system-libvpx"
# "--with-system-png" # <-- "--with-system-png won't work because the system's libpng doesn't have APNG support"
- # "--enable-system-cairo" # <-- doesn't build
+ "--enable-startup-notification"
+ "--enable-system-ffi"
+ "--enable-system-hunspell"
+ "--enable-system-pixman"
"--enable-system-sqlite"
"--disable-crashreporter"
"--disable-tests"
"--disable-necko-wifi" # maybe we want to enable this at some point
"--disable-installer"
"--disable-updater"
- ];
+ ] ++ optional useSystemCairo "--enable-system-cairo";
xulrunner = stdenv.mkDerivation rec {
@@ -57,13 +66,14 @@ rec {
inherit src;
buildInputs =
- [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib cairo bzip2
+ [ pkgconfig gtk perl zip libIDL libjpeg libpng zlib 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
- ];
+ hunspell libevent libstartup_notification libvpx
+ ] ++ optional useSystemCairo cairo;
configureFlags =
[ "--enable-application=xulrunner"
@@ -72,6 +82,8 @@ rec {
enableParallelBuilding = true;
+ patches = optional useSystemCairo ./system-cairo.patch; # probably in 22
+
preConfigure =
''
export NIX_LDFLAGS="$NIX_LDFLAGS -L$out/lib/xulrunner-${xulVersion}"
@@ -124,10 +136,15 @@ rec {
enableParallelBuilding = true;
buildInputs =
- [ pkgconfig gtk perl zip libIDL libjpeg zlib cairo bzip2 python
+ [ pkgconfig gtk perl zip libIDL libjpeg zlib bzip2 python
dbus dbus_glib pango freetype fontconfig alsaLib nspr nss libnotify
xlibs.pixman yasm mesa sqlite file unzip pysqlite
- ];
+ hunspell libevent libstartup_notification libvpx
+ ] ++ optional useSystemCairo cairo;
+
+ patches = [
+ ./disable-reporter.patch # fixes "search box not working when built on xulrunner"
+ ];
propagatedBuildInputs = [xulrunner];
@@ -135,7 +152,6 @@ rec {
[ "--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";
diff --git a/pkgs/applications/networking/browsers/firefox/disable-reporter.patch b/pkgs/applications/networking/browsers/firefox/disable-reporter.patch
new file mode 100644
index 000000000000..0a71a7210f2a
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox/disable-reporter.patch
@@ -0,0 +1,20 @@
+# from:
+# - https://www.linuxquestions.org/questions/linux-from-scratch-13/blfs-xulrunner-firefox-21-0-and-search-4175462532/
+# - http://www.mail-archive.com/blfs-support@linuxfromscratch.org/msg17359.html
+
+--- mozilla-release/browser/base/content/browser.js.orig 2013-05-11 16:19:21.000000000 -0300
++++ mozilla-release/browser/base/content/browser.js 2013-06-07 00:39:16.114862388 -0300
+@@ -3559,10 +3559,12 @@
+ */
+ recordSearchInHealthReport: function (engine, source) {
+ #ifdef MOZ_SERVICES_HEALTHREPORT
+- let reporter = Cc["@mozilla.org/datareporting/service;1"]
++ /*let reporter = Cc["@mozilla.org/datareporting/service;1"]
+ .getService()
+ .wrappedJSObject
+ .healthReporter;
++ */
++ return;
+
+ // This can happen if the FHR component of the data reporting service is
+ // disabled. This is controlled by a pref that most will never use.
diff --git a/pkgs/applications/networking/browsers/firefox/system-cairo.patch b/pkgs/applications/networking/browsers/firefox/system-cairo.patch
new file mode 100644
index 000000000000..76cf4d51c9cb
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox/system-cairo.patch
@@ -0,0 +1,73 @@
+# HG changeset patch
+# From: https://hg.mozilla.org/mozilla-central/rev/52b02042b27f
+# User Connor Behan
+# Date 1370038985 -7200
+# Node ID 52b02042b27f75acbcb2bd4822bedb00ab680e67
+# Parent 08ed531fed70978385cf9253bbc8389b0abe76ca
+Bug 722975: Unbreak builds using --with-system-cairo. r=bas
+
+diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
+--- a/gfx/thebes/gfxPlatform.cpp
++++ b/gfx/thebes/gfxPlatform.cpp
+@@ -548,23 +548,31 @@ struct SourceSurfaceUserData
+ BackendType mBackendType;
+ };
+
+ void SourceBufferDestroy(void *srcSurfUD)
+ {
+ delete static_cast(srcSurfUD);
+ }
+
++#if MOZ_TREE_CAIRO
+ void SourceSnapshotDetached(cairo_surface_t *nullSurf)
+ {
+ gfxImageSurface* origSurf =
+ static_cast(cairo_surface_get_user_data(nullSurf, &kSourceSurface));
+
+ origSurf->SetData(&kSourceSurface, NULL, NULL);
+ }
++#else
++void SourceSnapshotDetached(void *nullSurf)
++{
++ gfxImageSurface* origSurf = static_cast(nullSurf);
++ origSurf->SetData(&kSourceSurface, NULL, NULL);
++}
++#endif
+
+ RefPtr
+ gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface)
+ {
+ void *userData = aSurface->GetData(&kSourceSurface);
+
+ if (userData) {
+ SourceSurfaceUserData *surf = static_cast(userData);
+@@ -667,24 +675,28 @@ gfxPlatform::GetSourceSurfaceForSurface(
+ }
+
+ srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(),
+ imgSurface->Stride(),
+ size, format);
+
+ }
+
++#if MOZ_TREE_CAIRO
+ cairo_surface_t *nullSurf =
+ cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA);
+ cairo_surface_set_user_data(nullSurf,
+ &kSourceSurface,
+ imgSurface,
+ NULL);
+ cairo_surface_attach_snapshot(imgSurface->CairoSurface(), nullSurf, SourceSnapshotDetached);
+ cairo_surface_destroy(nullSurf);
++#else
++ cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic", (const unsigned char*) "data", 4, SourceSnapshotDetached, imgSurface.get());
++#endif
+ }
+
+ SourceSurfaceUserData *srcSurfUD = new SourceSurfaceUserData;
+ srcSurfUD->mBackendType = aTarget->GetType();
+ srcSurfUD->mSrcSurface = srcBuffer;
+ aSurface->SetData(&kSourceSurface, srcSurfUD, SourceBufferDestroy);
+
+ return srcBuffer;
+
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix
index 5587f3b732ce..7cb1abf31537 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
preConfigure = ''
sed -e 's@/usr/bin/@@g' -i configure
sed -e '/gthread[.]h/d' -i src/npw-player.c
+ export NIX_LDFLAGS="$NIX_LDFLAGS -lgthread-2.0"
export configureFlags="$configureFlags --target-cpu=$(uname -m)"
'';
diff --git a/pkgs/applications/networking/dropbox-cli/default.nix b/pkgs/applications/networking/dropbox-cli/default.nix
index b298b3c9df99..34fe6db8932b 100644
--- a/pkgs/applications/networking/dropbox-cli/default.nix
+++ b/pkgs/applications/networking/dropbox-cli/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, coreutils, fetchurl, python }:
+{ stdenv, coreutils, fetchurl, python, dropbox }:
stdenv.mkDerivation {
name = "dropbox-cli";
src = fetchurl {
+ # Note: dropbox doesn't version this file. Annoying.
url = "https://linux.dropbox.com/packages/dropbox.py";
- sha256 = "1x46i0aplah4a2nqglb8byl3c60w7h1cjja62myxj2dpxyv7fydy";
+ sha256 = "0p1pg8bw6mlhqi5k8y3pgs7byg0kfvq57s53sh188lb5sxvlg7yz";
};
buildInputs = [ coreutils python ];
phases = "installPhase fixupPhase";
-
+
installPhase = ''
mkdir -pv $out/bin/
cp $src $out/bin/dropbox-cli
@@ -20,17 +21,18 @@ stdenv.mkDerivation {
fixupPhase = ''
substituteInPlace $out/bin/dropbox-cli \
--replace "/usr/bin/python" ${python}/bin/python \
- --replace "use dropbox help" "use dropbox-cli help"
-
+ --replace "use dropbox help" "use dropbox-cli help" \
+ --replace "~/.dropbox-dist/dropboxd" ${dropbox}/bin/dropbox
+
chmod +x $out/bin/dropbox-cli
'';
-
+
meta = {
homepage = http://dropbox.com;
description = "Command line client for the dropbox daemon.";
license = stdenv.lib.licenses.gpl3;
+ maintainers = with stdenv.lib.maintainers; [ the-kenny ];
# NOTE: Dropbox itself only works on linux, so this is ok.
platforms = stdenv.lib.platforms.linux;
};
}
-
diff --git a/pkgs/applications/networking/instant-messengers/linphone/default.nix b/pkgs/applications/networking/instant-messengers/linphone/default.nix
index 7bdb6cc1452d..a4a32327d0c6 100644
--- a/pkgs/applications/networking/instant-messengers/linphone/default.nix
+++ b/pkgs/applications/networking/instant-messengers/linphone/default.nix
@@ -19,6 +19,8 @@ stdenv.mkDerivation rec {
configureFlags = "--enable-external-ortp --enable-external-mediastreamer";
+ NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; # I'm lazy to fix these for them
+
meta = {
homepage = http://www.linphone.org/;
description = "Open Source video SIP softphone";
diff --git a/pkgs/applications/networking/instant-messengers/skype/default.nix b/pkgs/applications/networking/instant-messengers/skype/default.nix
index 715f0e5c2deb..aa90c8e70261 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.1.0.20";
+ name = "skype-4.2.0.11";
src = fetchurl {
url = "http://download.skype.com/linux/${name}.tar.bz2";
- sha256 = "1qhcxkfmlpblpy9rqimzdl79rm781swbldkzi6nyw56bbp6lf7n3";
+ sha256 = "0kh66p50m3x4ql6j8ciz73c30npcizd00ya9qrhid711rar0mlw7";
};
buildInputs =
diff --git a/pkgs/applications/networking/irc/irssi/default.nix b/pkgs/applications/networking/irc/irssi/default.nix
index 86d800e0cfe5..67e06be08830 100644
--- a/pkgs/applications/networking/irc/irssi/default.nix
+++ b/pkgs/applications/networking/irc/irssi/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, pkgconfig, ncurses, glib, openssl, perl}:
+{ stdenv, fetchurl, pkgconfig, ncurses, glib, openssl, perl, libintlOrEmpty }:
stdenv.mkDerivation rec {
name = "irssi-0.8.15";
@@ -8,13 +8,15 @@ stdenv.mkDerivation rec {
sha256 = "19m0aah9bhc70dnhh7kpydbsz5n35l0l9knxav1df0sic3xicbf1";
};
- buildInputs = [pkgconfig ncurses glib openssl perl];
+ buildInputs = [ pkgconfig ncurses glib openssl perl libintlOrEmpty ];
NIX_LDFLAGS = "-lncurses";
configureFlags = "--with-proxy --with-ncurses --enable-ssl --with-perl=yes";
meta = {
- homepage = http://irssi.org;
+ homepage = http://irssi.org;
+ platforms = stdenv.lib.platforms.unix;
+ maintainers = with stdenv.lib.maintainers; [ lovek323 ];
};
}
diff --git a/pkgs/applications/networking/irc/irssi/otr/default.nix b/pkgs/applications/networking/irc/irssi/otr/default.nix
index ba3a56e642ed..00a9aa1fc683 100644
--- a/pkgs/applications/networking/irc/irssi/otr/default.nix
+++ b/pkgs/applications/networking/irc/irssi/otr/default.nix
@@ -1,16 +1,16 @@
{ stdenv, fetchurl, libotr, automake, autoconf, libtool, glib, pkgconfig, irssi }:
let
- rev = "59ddcbe66a";
+ rev = "cab3fc915c";
in
with stdenv.lib;
stdenv.mkDerivation rec {
- name = "irssi-otr-20130315-${rev}";
+ name = "irssi-otr-20130601-${rev}";
src = fetchurl {
url = "https://github.com/cryptodotis/irssi-otr/tarball/${rev}";
name = "${name}.tar.gz";
- sha256 = "095dak0d10j6cpkwlqmk967p1wypwzvqr4wdqvb30w14dbn8dy0d";
+ sha256 = "0kn9c562zfh36gpcrbpslwjjr78baagdwphczz2d608ndczm1vrk";
};
patchPhase = ''
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix
index e583551bcf10..a523089e0ed1 100644
--- a/pkgs/applications/networking/irc/weechat/default.nix
+++ b/pkgs/applications/networking/irc/weechat/default.nix
@@ -3,12 +3,12 @@
, pythonPackages, cacert, cmake, makeWrapper }:
stdenv.mkDerivation rec {
- version = "0.4.0";
+ version = "0.4.1";
name = "weechat-${version}";
src = fetchurl {
url = "http://weechat.org/files/src/${name}.tar.gz";
- sha256 = "17jxknam1bbakmdfqy1b2cfc8l9ag90l3z1gcxdvwg358wasv9dc";
+ sha256 = "0gsn0mp921j7jpvrxc74h0gs0bn0w808j2zqghm1w7xbjw9hl49w";
};
buildInputs =
diff --git a/pkgs/applications/networking/mailreaders/sup/default.nix b/pkgs/applications/networking/mailreaders/sup/default.nix
new file mode 100644
index 000000000000..058335370266
--- /dev/null
+++ b/pkgs/applications/networking/mailreaders/sup/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchurl, ruby, rake, rubygems, makeWrapper, ncursesw_sup
+, xapian_ruby, gpgme, libiconvOrEmpty, rmail, mime_types, chronic, trollop
+, lockfile, gettext, iconv, locale, text, highline }:
+
+stdenv.mkDerivation {
+ name = "sup-896ab66c0263e5ce0fa45857fb08e0fb78fcb6bd";
+
+ meta = {
+ homepage = http://supmua.org;
+ description = "A curses threads-with-tags style email client";
+ maintainers = with stdenv.lib.maintainers; [ lovek323 ];
+ license = stdenv.lib.licenses.gpl2;
+ platforms = stdenv.lib.platforms.unix;
+ };
+
+ dontStrip = true;
+
+ src = fetchurl {
+ url = "https://github.com/sup-heliotrope/sup/archive/896ab66c0263e5ce0fa45857fb08e0fb78fcb6bd.tar.gz";
+ sha256 = "0sknf4ha13m2478fa27qnm43bcn59g6qbd8f2nmv64k2zs7xnwmk";
+ };
+
+ buildInputs =
+ [ ruby rake rubygems makeWrapper gpgme ncursesw_sup xapian_ruby
+ libiconvOrEmpty ];
+
+ buildPhase = "rake gem";
+
+ # TODO: Move gem dependencies out
+
+ installPhase = ''
+ export HOME=$TMP/home; mkdir -pv "$HOME"
+
+ GEM_PATH="$GEM_PATH:$out/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${chronic}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${gettext}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${gpgme}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${iconv}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${locale}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${lockfile}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${mime_types}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${ncursesw_sup}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${rmail}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${text}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${trollop}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${xapian_ruby}/${ruby.gemPath}"
+ GEM_PATH="$GEM_PATH:${highline}/${ruby.gemPath}"
+
+ # Don't install some dependencies -- we have already installed
+ # the dependencies but gem doesn't acknowledge this
+ gem install --no-verbose --install-dir "$out/${ruby.gemPath}" \
+ --bindir "$out/bin" --no-rdoc --no-ri pkg/sup-999.gem \
+ --ignore-dependencies
+
+ for prog in $out/bin/*; do
+ wrapProgram "$prog" --prefix GEM_PATH : "$GEM_PATH"
+ done
+
+ for prog in $out/gems/*/bin/*; do
+ [[ -e "$out/bin/$(basename $prog)" ]]
+ done
+ '';
+}
+
diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix
index 9befe98399da..0981ab394496 100644
--- a/pkgs/applications/networking/mumble/default.nix
+++ b/pkgs/applications/networking/mumble/default.nix
@@ -6,16 +6,14 @@ jackaudio ? null }:
stdenv.mkDerivation rec {
name = "mumble-" + version;
- version = "1.2.3";
+ version = "1.2.4";
src = fetchurl {
url = "mirror://sourceforge/mumble/${name}.tar.gz";
- sha256 = "0p4as6bcmbzkiff1gvc0f277dzbz2sfys97gcbxw7gjamqi53285";
+ sha256 = "16wwj6gwcnyjlnzh7wk0l255ldxmbwx0wi652sdp20lsv61q7kx1";
};
patchPhase = ''
- sed -e s/qt_ja_JP.qm// -i src/mumble/mumble.pro src/mumble11x/mumble11x.pro
- sed -e /qt_ja_JP.qm/d -i src/mumble/mumble_qt.qrc src/mumble11x/mumble_qt.qrc
patch -p1 < ${ ./mumble-jack-support.patch }
'';
diff --git a/pkgs/applications/networking/p2p/gnunet/svn.nix b/pkgs/applications/networking/p2p/gnunet/svn.nix
index 4bff8239adfc..eb05461ec85b 100644
--- a/pkgs/applications/networking/p2p/gnunet/svn.nix
+++ b/pkgs/applications/networking/p2p/gnunet/svn.nix
@@ -4,15 +4,15 @@
, makeWrapper, autoconf, automake }:
let
- rev = "27317";
+ rev = "27399";
in
stdenv.mkDerivation rec {
name = "gnunet-svn-${rev}";
src = fetchsvn {
url = https://gnunet.org/svn/gnunet;
- rev = "27317";
- sha256 = "1l7jypm57wjhzlwdj8xzhfppjdpy6wbph4nqgwxxb9q056wwf9zy";
+ inherit rev;
+ sha256 = "0fn7ppfnc4v6lkxwww11s0h8mdvwyv7f40f6wrbfilqpn2ncrf8c";
};
buildInputs = [
diff --git a/pkgs/applications/networking/umurmur/default.nix b/pkgs/applications/networking/umurmur/default.nix
index 715e7fa6998f..1f08b9873d44 100644
--- a/pkgs/applications/networking/umurmur/default.nix
+++ b/pkgs/applications/networking/umurmur/default.nix
@@ -1,11 +1,11 @@
{ stdenv, fetchurl, openssl, protobufc, libconfig }:
stdenv.mkDerivation rec {
- name = "umurmur-0.2.12";
+ name = "umurmur-0.2.13";
src = fetchurl {
url = "http://umurmur.googlecode.com/files/${name}.tar.gz";
- sha1 = "5be3c765af3c5f518d1e1bbd828b3582ad4097cd";
+ sha1 = "c9345b67213f52688fef2113132c62d2edbf4bea";
};
buildInputs = [ openssl protobufc libconfig ];
diff --git a/pkgs/applications/office/gnucash/default.nix b/pkgs/applications/office/gnucash/default.nix
index 26879a6f660f..0865b12e9728 100644
--- a/pkgs/applications/office/gnucash/default.nix
+++ b/pkgs/applications/office/gnucash/default.nix
@@ -1,6 +1,7 @@
{ fetchurl, stdenv, pkgconfig, libxml2, gconf, glib, gtk, libgnomeui, libofx
, libgtkhtml, gtkhtml, libgnomeprint, goffice, enchant, gettext, libbonoboui
-, intltool, perl, guile, slibGuile, swig, isocodes, bzip2, makeWrapper
+, intltool, perl, guile, slibGuile, swig, isocodes, bzip2, makeWrapper, libglade
+, libgsf, libart_lgpl
}:
/* If you experience GConf errors when running GnuCash on NixOS, see
@@ -9,17 +10,17 @@
*/
stdenv.mkDerivation rec {
- name = "gnucash-2.4.11";
+ name = "gnucash-2.4.13";
src = fetchurl {
url = "mirror://sourceforge/gnucash/${name}.tar.bz2";
- sha256 = "0qbpgd6spclkmwryi66cih0igi5a6pmsnk41mmnscpfpz1mddhwk";
+ sha256 = "0j4m00a3r1hcrhkfjkx3sgi2r4id4wrc639i4s00j35rx80540pn";
};
buildInputs = [
pkgconfig libxml2 gconf glib gtk libgnomeui libgtkhtml gtkhtml
libgnomeprint goffice enchant gettext intltool perl guile slibGuile
- swig isocodes bzip2 makeWrapper libofx
+ swig isocodes bzip2 makeWrapper libofx libglade libgsf libart_lgpl
];
configureFlags = "CFLAGS=-O3 CXXFLAGS=-O3 --disable-dbi --enable-ofx";
@@ -65,7 +66,7 @@ stdenv.mkDerivation rec {
homepage = http://www.gnucash.org/;
- maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons ];
+ maintainers = [ stdenv.lib.maintainers.ludo stdenv.lib.maintainers.simons stdenv.lib.maintainers.iElectric ];
platforms = stdenv.lib.platforms.gnu;
};
}
diff --git a/pkgs/applications/office/hledger-irr/default.nix b/pkgs/applications/office/hledger-irr/default.nix
new file mode 100644
index 000000000000..1f4dd165c50e
--- /dev/null
+++ b/pkgs/applications/office/hledger-irr/default.nix
@@ -0,0 +1,16 @@
+{ cabal, Cabal, hledgerLib, statistics, time }:
+
+cabal.mkDerivation (self: {
+ pname = "hledger-irr";
+ version = "0.1.1.2";
+ sha256 = "1mh1lzhnxc8ps8n5j37wrmbqafwdyap60j8rqr6xdfa2syfyq8i2";
+ isLibrary = false;
+ isExecutable = true;
+ buildDepends = [ Cabal hledgerLib statistics time ];
+ meta = {
+ description = "computes the internal rate of return of an investment";
+ license = self.stdenv.lib.licenses.bsd3;
+ platforms = self.ghc.meta.platforms;
+ maintainers = [ self.stdenv.lib.maintainers.simons ];
+ };
+})
diff --git a/pkgs/applications/science/astronomy/celestia/default.nix b/pkgs/applications/science/astronomy/celestia/default.nix
index 22180e9a3f7d..d7814aa5b78f 100644
--- a/pkgs/applications/science/astronomy/celestia/default.nix
+++ b/pkgs/applications/science/astronomy/celestia/default.nix
@@ -1,5 +1,6 @@
{ stdenv, fetchurl, freeglut, gtk2, gtkglext, libjpeg_turbo, libtheora, libXmu
-, lua, mesa, pkgconfig, perl, automake, autoconf, libtool, gettext
+, lua, mesa, pkgconfig, perl, automake, autoconf, libtool, gettext, glib, cairo
+, pango, gdk_pixbuf, atk
}:
let
@@ -7,25 +8,31 @@ let
gcc46Patch = fetchurl {
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-gcc46.patch?h=packages/celestia";
- sha256 = "1q840ip5h2q93r0d68jwrvf40ns5qzqss9vzd6xnwvs3wa77m5wp";
+ sha256 = "0my7dpyh5wpz5df7bjhwb4db3ci2rn8ib1nkjv15fbp1g76bxfaz";
name = "celestia-1.6.1-gcc46.patch";
};
libpng15Patch = fetchurl {
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-libpng15.patch?h=packages/celestia";
- sha256 = "19yqbi5k944d3jm0q2mvcfg52kicy4j347gj62dyaijzj505x4pm";
+ sha256 = "1jrmbwmvs9b6k2b2g4104q22v4vqi0wfpz6hmfhniaq34626jcms";
name = "celestia-1.6.1-libpng15.patch";
};
+ libpng16Patch = fetchurl {
+ url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-libpng16.patch?h=packages/celestia";
+ sha256 = "1q85prw4ci6d50lri8w1jm19pghxw96qizf5dl4g0j86rlhlkc8f";
+ name = "celestia-1.6.1-libpng16.patch";
+ };
+
linkingPatch = fetchurl {
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/celestia-1.6.1-linking.patch?h=packages/celestia";
- sha256 = "1qzv18b2prqbhy21js5bnf7vwkmrq1dmrq8r0wab7v10axjqdv35";
+ sha256 = "1m8xyq26nm352828bp12c3b8f6m9bys9fwfxbfzqppllk7il2f24";
name = "celestia-1.6.1-linking.patch";
};
gcc47Patch = fetchurl {
url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/gcc-4.7-fixes.diff?h=packages/celestia";
- sha256 = "1jqkafwrg1829cwqvlxxkqbf42zqfsgpqd8a5b2qlzma5napdmg5";
+ sha256 = "1na26c7pv9qfv8a981m1zvglhv05r3h8513xqjra91qhhzx8wr8n";
name = "gcc-4.7-fixes.diff";
};
in
@@ -38,15 +45,24 @@ stdenv.mkDerivation {
};
buildInputs = [ freeglut gtk2 gtkglext libjpeg_turbo libtheora libXmu mesa pkgconfig lua
- perl automake autoconf libtool gettext ];
+ perl automake autoconf libtool gettext ];
patchPhase = ''
patch -Np0 -i "${gcc46Patch}"
patch -Np0 -i "${libpng15Patch}"
+ patch -Np2 -i "${libpng16Patch}"
patch -Np1 -i "${linkingPatch}"
patch -Np1 -i "${gcc47Patch}"
autoreconf
- configureFlagsArray=( --with-gtk --with-lua=${lua} CFLAGS="-O2 -fsigned-char" CXXFLAGS="-O2 -fsigned-char" )
+ configureFlagsArray=(
+ --with-gtk
+ --with-lua=${lua}
+ CPPFLAGS="-DNDEBUG"
+ CFLAGS="-O2 -fsigned-char"
+ CXXFLAGS="-O2 -fsigned-char"
+ GTK_CFLAGS="-I${gtk2}/include/gtk-2.0 -I${gtk2}/lib/gtk-2.0/include -I${glib}/include/glib-2.0 -I${glib}/lib/glib-2.0/include -I${cairo}/include/cairo -I${pango}/include/pango-1.0 -I${gdk_pixbuf}/include/gdk-pixbuf-2.0 -I${atk}/include/atk-1.0 -I${gtkglext}/include/gtkglext-1.0 -I${gtkglext}/lib/gtkglext-1.0/include"
+ GTK_LIBS="-lgtk-x11-2.0 -lgtkglext-x11-1.0 -lcairo -lgdk_pixbuf-2.0 -lpango-1.0 -lgobject-2.0"
+ )
'';
enableParallelBuilding = true;
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index 9596c30ee6af..85c69413bfb1 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -3,7 +3,7 @@
{stdenv, fetchurl, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}:
let
- version = "8.4";
+ version = "8.4pl2";
buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
idePath = if buildIde then ''
@@ -15,8 +15,8 @@ stdenv.mkDerivation {
name = "coq-${version}";
src = fetchurl {
- url = "http://pauillac.inria.fr/~herbelin/coq/distrib/V${version}/files/coq-${version}.tar.gz";
- sha256 = "0ka2lak9il4hlblk461awf0hbi3mxqhc1wz6kllxradyy2vfaspl";
+ url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz";
+ sha256 = "1n52pky7bb45irk2jw6f4rd3kvy8lm2yfldjwdhiic0kyqw9lwgv";
};
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
diff --git a/pkgs/applications/science/math/glsurf/default.nix b/pkgs/applications/science/math/glsurf/default.nix
new file mode 100644
index 000000000000..51b2850347b5
--- /dev/null
+++ b/pkgs/applications/science/math/glsurf/default.nix
@@ -0,0 +1,32 @@
+
+{ stdenv, fetchdarcs, ocaml, findlib, lablgl, camlimages, mesa, freeglut, ocaml_mysql, mlgmp, mpfr, gmp, libtiff, libjpeg, libpng12, giflib }:
+
+let
+ ocaml_version = (builtins.parseDrvName ocaml.name).version;
+in
+
+stdenv.mkDerivation {
+ name = "glsurf-3.3";
+
+ src = fetchdarcs {
+ url = "http://lama.univ-savoie.fr/~raffalli/GlSurf";
+ tag = "3.3";
+ sha256 = ""; md5="";
+ };
+
+ buildInputs = [ ocaml findlib freeglut mesa
+ lablgl camlimages ocaml_mysql mlgmp mpfr gmp
+ libtiff libjpeg libpng12 giflib ];
+
+ installPhase = ''
+ mkdir -p $out/bin $out/share/doc/glsurf
+ cp ./src/glsurf.opt $out/bin/glsurf
+ cp ./doc/doc.pdf $out/share/doc/glsurf
+ cp -r ./examples $out/share/doc/glsurf
+ '';
+
+ meta = {
+ homepage = http://www.lama.univ-savoie.fr/~raffalli/glsurf;
+ description = "GlSurf: a program to draw implicit surfaces and curves";
+ };
+}
diff --git a/pkgs/applications/science/math/weka/default.nix b/pkgs/applications/science/math/weka/default.nix
new file mode 100644
index 000000000000..8471c46c8d75
--- /dev/null
+++ b/pkgs/applications/science/math/weka/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, jre, unzip }:
+
+stdenv.mkDerivation {
+ name = "weka-3.6.9";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/weka/weka-3-6-9.zip";
+ sha256 = "0rnis4vvihhdcdvpp79hkmklcnn897paa0qrs95cbjnpgvxzbczs";
+ };
+
+ buildInputs = [ unzip ];
+
+ # The -Xmx1000M comes suggested from their download page:
+ # http://www.cs.waikato.ac.nz/ml/weka/downloading.html
+ installPhase = ''
+ mkdir -pv $out/share/weka $out/bin
+ cp -Rv * $out/share/weka
+
+ cat > $out/bin/weka << EOF
+ #!${stdenv.shell}
+ ${jre}/bin/java -Xmx1000M -jar $out/share/weka/weka.jar
+ EOF
+
+ chmod +x $out/bin/weka
+ '';
+
+ meta = {
+ homepage = "http://www.cs.waikato.ac.nz/ml/weka/";
+ description = "Collection of machine learning algorithms for data mining tasks";
+ license = "GPLv2+";
+ };
+}
diff --git a/pkgs/applications/science/misc/tulip/default.nix b/pkgs/applications/science/misc/tulip/default.nix
index 1402dc9b1824..84da60398227 100644
--- a/pkgs/applications/science/misc/tulip/default.nix
+++ b/pkgs/applications/science/misc/tulip/default.nix
@@ -1,13 +1,13 @@
{ fetchurl, stdenv, libxml2, freetype, mesa, glew, qt4
, cmake, makeWrapper, libjpeg }:
-let version = "3.7.0"; in
+let version = "4.1.0"; in
stdenv.mkDerivation rec {
name = "tulip-${version}";
src = fetchurl {
- url = "mirror://sourceforge/auber/tulip/tulip-3.7.0/${name}-src.tar.gz";
- sha256 = "150fj9pdxblvl5sby61cb2kq98r6h8yljk3vq5xizn198d3fz4jq";
+ url = "mirror://sourceforge/auber/${name}_src.tar.gz";
+ sha256 = "1js1f8xdm9g2m66xbhfxa8ixzw6h4gjynxsm83p54l3i0hs3biig";
};
buildInputs = [ libxml2 freetype glew mesa qt4 libjpeg ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
doCheck = false;
meta = {
- description = "Tulip, a visualization framework for the analysis and visualization of relational data";
+ description = "A visualization framework for the analysis and visualization of relational data";
longDescription =
'' Tulip is an information visualization framework dedicated to the
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 5086f4f31b37..9991a5064854 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
@@ -7,8 +7,8 @@
, monadControl, mtl, network, networkInfo, networkMulticast
, networkProtocolXmpp, openssh, QuickCheck, random, regexTdfa
, rsync, SafeSemaphore, SHA, stm, text, time, transformers
-, unixCompat, utf8String, uuid, wai, waiLogger, warp, xmlConduit
-, xmlTypes, yesod, yesodDefault, yesodForm, yesodStatic
+, unixCompat, utf8String, uuid, wai, waiLogger, warp, which
+, xmlConduit, xmlTypes, yesod, yesodDefault, yesodForm, yesodStatic
}:
cabal.mkDerivation (self: {
@@ -28,7 +28,7 @@ cabal.mkDerivation (self: {
uuid wai waiLogger warp xmlConduit xmlTypes yesod yesodDefault
yesodForm yesodStatic
];
- buildTools = [ bup curl git gnupg1 lsof openssh rsync ];
+ buildTools = [ bup curl git gnupg1 lsof openssh rsync which ];
configureFlags = "-fS3
-fWebDAV
-fInotify
@@ -41,6 +41,7 @@ cabal.mkDerivation (self: {
-fProduction
-fTDFA";
preConfigure = "patchShebangs .";
+ installPhase = "make PREFIX=$out CABAL=./Setup docs install";
checkPhase = ''
export HOME="$NIX_BUILD_TOP/tmp"
mkdir "$HOME"
diff --git a/pkgs/applications/version-management/git-and-tools/tig/default.nix b/pkgs/applications/version-management/git-and-tools/tig/default.nix
index 20644d09dd70..bdd6e806fe3b 100644
--- a/pkgs/applications/version-management/git-and-tools/tig/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/tig/default.nix
@@ -16,7 +16,8 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = "http://jonas.nitro.dk/tig/";
description = "Tig is a git repository browser that additionally can act as a pager for output from various git commands";
- maintainers = [ maintainers.garbas maintainers.bjornfor ];
+ maintainers = [ maintainers.garbas maintainers.bjornfor maintainers.iElectric ];
license = licenses.gpl2;
+ platforms = platforms.linux;
};
}
diff --git a/pkgs/applications/version-management/kdesvn/default.nix b/pkgs/applications/version-management/kdesvn/default.nix
index 29b8b306fe54..59fb1f5a867f 100644
--- a/pkgs/applications/version-management/kdesvn/default.nix
+++ b/pkgs/applications/version-management/kdesvn/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gettext, apr, aprutil, subversion, db4, kdelibs }:
+{ stdenv, fetchurl, gettext, apr, aprutil, subversion, db4, kdelibs, expat }:
stdenv.mkDerivation rec {
name = "kdesvn-1.5.5";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
patches = [ ./docbook.patch ./virtual_inheritance.patch ];
- buildInputs = [ apr aprutil subversion db4 kdelibs ];
+ buildInputs = [ apr aprutil subversion db4 kdelibs expat ];
nativeBuildInputs = [ gettext ];
diff --git a/pkgs/applications/version-management/subversion/default.nix b/pkgs/applications/version-management/subversion/default.nix
index 9743b73345ce..42503b974403 100644
--- a/pkgs/applications/version-management/subversion/default.nix
+++ b/pkgs/applications/version-management/subversion/default.nix
@@ -21,13 +21,13 @@ assert compressionSupport -> neon.compressionSupport;
stdenv.mkDerivation rec {
- version = "1.7.9";
+ version = "1.7.10";
name = "subversion-${version}";
src = fetchurl {
url = "mirror://apache/subversion//${name}.tar.bz2";
- sha1 = "453757bae78a800997559f2232483ab99238ec1e";
+ sha1 = "a4f3de0a13b034b0eab4d35512c6c91a4abcf4f5";
};
buildInputs = [ zlib apr aprutil sqlite ]
diff --git a/pkgs/applications/video/gnash/default.nix b/pkgs/applications/video/gnash/default.nix
index db6bde782b99..4f2addcc99b0 100644
--- a/pkgs/applications/video/gnash/default.nix
+++ b/pkgs/applications/video/gnash/default.nix
@@ -3,7 +3,7 @@
, gst_ffmpeg, speex
, libogg, libxml2, libjpeg, mesa, libpng, libungif, libtool
, boost, freetype, agg, dbus, curl, pkgconfig, gettext
-, glib, gtk, gtkglext, x11, ming, dejagnu, python, perl
+, glib, gtk, gtkglext, pangox_compat, x11, ming, dejagnu, python, perl
, freefont_ttf, haxe, swftools
, lib, makeWrapper
, xulrunner }:
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
gettext x11 SDL SDL_mixer gstreamer gst_plugins_base gst_plugins_good
gst_ffmpeg speex libtool
libogg libxml2 libjpeg mesa libpng libungif boost freetype agg
- dbus curl pkgconfig glib gtk gtkglext
+ dbus curl pkgconfig glib gtk gtkglext pangox_compat
xulrunner
makeWrapper
]
diff --git a/pkgs/applications/video/mplayer/default.nix b/pkgs/applications/video/mplayer/default.nix
index a1ec200aaf0f..2051590a8197 100644
--- a/pkgs/applications/video/mplayer/default.nix
+++ b/pkgs/applications/video/mplayer/default.nix
@@ -79,7 +79,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
# Old kind of URL:
- # url = http://nixos.org/tarballs/mplayer-snapshot-20101227.tar.bz2;
+ # url = http://tarballs.nixos.org/mplayer-snapshot-20101227.tar.bz2;
# Snapshot I took on 20110423
#Transient
diff --git a/pkgs/applications/video/smplayer/default.nix b/pkgs/applications/video/smplayer/default.nix
new file mode 100644
index 000000000000..ab48d74c00da
--- /dev/null
+++ b/pkgs/applications/video/smplayer/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, qt4 }:
+
+stdenv.mkDerivation rec {
+ name = "smplayer-0.8.5";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/smplayer/${name}.tar.bz2";
+ sha256 = "0vbfvaqg5c25vabq1mf9xg6kzgvxnpd0i172y1gjznnlpcw2fxrw";
+ };
+
+ buildInputs = [ qt4 ];
+
+ preConfigure = ''
+ makeFlags="PREFIX=$out"
+ '';
+
+ meta = {
+ description = "A complete front-end for MPlayer";
+ homepage = "http://smplayer.sourceforge.net/";
+ license = stdenv.lib.licenses.gpl3Plus;
+ platforms = stdenv.lib.platforms.linux;
+ };
+}
diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix
index 3c96cd134181..7b74cfcdb11a 100644
--- a/pkgs/applications/video/vlc/default.nix
+++ b/pkgs/applications/video/vlc/default.nix
@@ -10,13 +10,18 @@
stdenv.mkDerivation rec {
name = "vlc-${version}";
- version = "2.0.6";
+ version = "2.0.7";
src = fetchurl {
url = "http://download.videolan.org/pub/videolan/vlc/${version}/${name}.tar.xz";
- sha256 = "0qqrpry41vawihhggcx00vibbn73hxdal1gim1qnrqrcbq1rik1i";
+ sha256 = "052kfkpd0r2fwkyz97qhz2a368xqxa905qacrd1bkl2bkvahfc94";
};
+ postPatch = /* flac 1.3.0 fix */ ''
+ sed -i -e 's:stream_decoder.h:FLAC/stream_decoder.h:' modules/codec/flac.c
+ sed -i -e 's:stream_encoder.h:FLAC/stream_encoder.h:' modules/codec/flac.c
+ '';
+
buildInputs =
[ xz bzip2 perl zlib a52dec libmad faad2 ffmpeg alsaLib libdvdnav libdvdnav.libdvdread
libbluray dbus fribidi qt4 libvorbis libtheora speex lua5 libgcrypt
diff --git a/pkgs/applications/video/xbmc/default.nix b/pkgs/applications/video/xbmc/default.nix
index 55734e495391..d3b3556baf4d 100644
--- a/pkgs/applications/video/xbmc/default.nix
+++ b/pkgs/applications/video/xbmc/default.nix
@@ -68,6 +68,11 @@ stdenv.mkDerivation rec {
dontUseCmakeConfigure = true;
+ preConfigure = ''
+ substituteInPlace xbmc/linux/LinuxTimezone.cpp \
+ --replace 'usr/share/zoneinfo' 'etc/zoneinfo'
+ '';
+
configureFlags = [
"--enable-external-libraries"
"--disable-webserver"
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix
index b1165b3535b9..997cc8bd49d6 100644
--- a/pkgs/applications/virtualization/qemu/default.nix
+++ b/pkgs/applications/virtualization/qemu/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, python, zlib, pkgconfig, glib, SDL, ncurses, perl, pixman }:
+{ stdenv, fetchurl, python, zlib, pkgconfig, glib, SDL, ncurses, perl, pixman
+, attr, libcap }:
stdenv.mkDerivation rec {
name = "qemu-1.4.0";
@@ -8,10 +9,16 @@ stdenv.mkDerivation rec {
sha256 = "1a7d11vjs1p6i1ck2ff9annmkhpkbjl73hl9i1cbg3s0fznrfqh6";
};
- buildInputs = [ python zlib pkgconfig glib SDL ncurses perl pixman ];
+ buildInputs = [
+ python zlib pkgconfig glib SDL ncurses perl pixman attr libcap
+ ];
enableParallelBuilding = true;
+ configureFlags = [
+ "--enable-virtfs"
+ ];
+
meta = {
description = "QEmu processor emulator";
license = "GPLv2+";
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index 3dd020dfa105..6ca2c66a35ac 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -11,8 +11,7 @@ with stdenv.lib;
let
- version = "4.2.12";
- extpackRevision = "84980";
+ version = "4.2.14"; # changes ./guest-additions as well
forEachModule = action: ''
for mod in \
@@ -31,12 +30,10 @@ let
done
'';
- extensionPack = requireFile {
- name = "Oracle_VM_VirtualBox_Extension_Pack-${version}-${extpackRevision}"
- + ".vbox-extpack";
+ extensionPack = fetchurl {
+ url = "http://download.virtualbox.org/virtualbox/${version}/Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack";
# Has to be base16 because it's used as an input to VBoxExtPackHelperApp!
- sha256 = "ad15a92e49095c2115bd1793b3b957d3eaf44af0f5d24bb53d6b4fc81c3e2fc4";
- url = "https://www.virtualbox.org/wiki/Downloads";
+ sha256 = "5813cae72790de4893cadb839ffbd148290a44ec6913d901d84c9b3740ab1b1e";
};
in stdenv.mkDerivation {
@@ -44,7 +41,7 @@ in stdenv.mkDerivation {
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VirtualBox-${version}.tar.bz2";
- sha256 = "eb65ecac94f63d6292a967d39cb5e28326404c10d0e8c2c50399eedb59c17ee6";
+ sha256 = "038k65cdvr80da5nfan5r3rjrnxqab2fbf2pr2jq8g1gc4cxrxpq";
};
buildInputs =
@@ -137,6 +134,8 @@ in stdenv.mkDerivation {
done
'';
+ passthru = { inherit version; /* for guest additions */ };
+
meta = {
description = "PC emulator";
homepage = http://www.virtualbox.org/;
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
index f3d7c18a2c69..e7843b07fc34 100644
--- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -1,15 +1,18 @@
{ stdenv, fetchurl, lib, patchelf, cdrkit, kernelDev, which, makeWrapper
-, libX11, libXt, libXext, libXmu, libXcomposite, libXfixes, libXrandr, libXcursor
-, dbus }:
+, xorg, dbus, virtualbox }:
-let version = "4.2.12"; in
+let
+ version = virtualbox.version;
+ xserverVListFunc = builtins.elemAt (stdenv.lib.splitString "." xorg.xorgserver.version);
+ xserverABI = xserverVListFunc 0 + xserverVListFunc 1;
+in
stdenv.mkDerivation {
name = "VirtualBox-GuestAdditions-${version}-${kernelDev.version}";
src = fetchurl {
url = "http://download.virtualbox.org/virtualbox/${version}/VBoxGuestAdditions_${version}.iso";
- sha256 = "aed4730b643aca8daa0829e1122b7c8d592b9f6cea902a98e390c4d22373dfb8";
+ sha256 = "9f08f13bbd818fb3ef9916658542ad0999c35e11afc1f6e8ff0b944405486e8a";
};
KERN_DIR = "${kernelDev}/lib/modules/*/build";
@@ -22,7 +25,7 @@ stdenv.mkDerivation {
'';
- buildCommand = ''
+ buildCommand = with xorg; ''
${if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" then ''
isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run
chmod 755 ./VBoxLinuxAdditions.run
@@ -104,7 +107,7 @@ stdenv.mkDerivation {
# Install Xorg drivers
mkdir -p $out/lib/xorg/modules/{drivers,input}
- install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_112.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
+ install -m 644 lib/VBoxGuestAdditions/vboxvideo_drv_${xserverABI}.so $out/lib/xorg/modules/drivers/vboxvideo_drv.so
# Install kernel modules
cd src
diff --git a/pkgs/applications/window-managers/weston/default.nix b/pkgs/applications/window-managers/weston/default.nix
new file mode 100644
index 000000000000..2c1044d69372
--- /dev/null
+++ b/pkgs/applications/window-managers/weston/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, wayland, mesa, libxkbcommon
+, cairo, libxcb, libXcursor, x11, udev, libdrm, mtdev
+, libjpeg, pam, autoconf, automake, libtool }:
+
+let version = "1.0.5"; in
+
+stdenv.mkDerivation rec {
+ name = "weston-${version}";
+
+ src = fetchurl {
+ url = "http://wayland.freedesktop.org/releases/${name}.tar.xz";
+ sha256 = "0g2k82pnlxl8b70ykazj7kn8xffjfsmgcgx427qdrm4083z2hgm0";
+ };
+
+ buildInputs = [ pkgconfig wayland mesa libxkbcommon
+ cairo libxcb libXcursor x11 udev libdrm mtdev
+ libjpeg pam autoconf automake libtool ];
+
+ preConfigure = "autoreconf -vfi";
+
+ # prevent install target to chown root weston-launch, which fails
+ configureFlags = ''
+ --disable-setuid-install
+ '';
+
+ meta = {
+ description = "Reference implementation of a Wayland compositor";
+ homepage = http://wayland.freedesktop.org/;
+ license = stdenv.lib.licenses.mit;
+ };
+}
diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix
index 6c981229531a..294d9a43ef7d 100644
--- a/pkgs/build-support/fetchurl/default.nix
+++ b/pkgs/build-support/fetchurl/default.nix
@@ -91,7 +91,7 @@ stdenv.mkDerivation {
urls = urls_;
# If set, prefer the content-addressable mirrors
- # (http://nixos.org/tarballs) over the original URLs.
+ # (http://tarballs.nixos.org) over the original URLs.
preferHashedMirrors = true;
# New-style output content requirements.
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index d6ad25afbadc..70a06735e68d 100644
--- a/pkgs/build-support/fetchurl/mirrors.nix
+++ b/pkgs/build-support/fetchurl/mirrors.nix
@@ -2,7 +2,7 @@ rec {
# Content-addressable Nix mirrors.
hashedMirrors = [
- http://nixos.org/tarballs
+ http://tarballs.nixos.org
];
# Mirrors for mirror://site/filename URIs, where "site" is
diff --git a/pkgs/data/fonts/bakoma-ttf/default.nix b/pkgs/data/fonts/bakoma-ttf/default.nix
index 5f9cbec7a97a..8b607adaaae8 100644
--- a/pkgs/data/fonts/bakoma-ttf/default.nix
+++ b/pkgs/data/fonts/bakoma-ttf/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation {
name = "bakoma-ttf";
src = fetchurl {
- url = http://nixos.org/tarballs/bakoma-ttf.tar.bz2;
+ url = http://tarballs.nixos.org/bakoma-ttf.tar.bz2;
sha256 = "1j1y3cq6ys30m734axc0brdm2q9n2as4h32jws15r7w5fwr991km";
};
diff --git a/pkgs/data/misc/cacert/default.nix b/pkgs/data/misc/cacert/default.nix
index 711ebc9e88fb..aafb9104e221 100644
--- a/pkgs/data/misc/cacert/default.nix
+++ b/pkgs/data/misc/cacert/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation rec {
name = "cacert-20121229";
src = fetchurl {
- url = "http://nixos.org/tarballs/${name}.pem.bz2";
+ url = "http://tarballs.nixos.org/${name}.pem.bz2";
sha256 = "031s86pqvn620zkj6w97hqgjvkp6vsvlymzz7rwvkv25zvrjsgif";
};
diff --git a/pkgs/data/misc/gsettings-desktop-schemas/default.nix b/pkgs/data/misc/gsettings-desktop-schemas/default.nix
deleted file mode 100644
index c934863d75d7..000000000000
--- a/pkgs/data/misc/gsettings-desktop-schemas/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ stdenv, fetchurl, glib, pkgconfig, intltool }:
-
-stdenv.mkDerivation {
- name = "gsettings-desktop-schemas-3.2.0";
-
- src = fetchurl {
- url = mirror://gnome/sources/gsettings-desktop-schemas/3.2/gsettings-desktop-schemas-3.2.0.tar.xz;
- sha256 = "0772axkd1nlf3j1lcg0zi5x5jh4zmr25k98dhn7pzppahljaj3hi";
- };
-
- buildInputs = [ glib ];
- nativeBuildInputs = [ pkgconfig intltool ];
-
- meta = {
- inherit (glib.meta) maintainers platforms;
- };
-}
diff --git a/pkgs/data/misc/poppler-data/default.nix b/pkgs/data/misc/poppler-data/default.nix
index 14a41cf84fc9..9e2679c04380 100644
--- a/pkgs/data/misc/poppler-data/default.nix
+++ b/pkgs/data/misc/poppler-data/default.nix
@@ -1,11 +1,11 @@
{ fetchurl, stdenv, cmake }:
stdenv.mkDerivation rec {
- name = "poppler-data-0.4.5";
+ name = "poppler-data-0.4.6";
src = fetchurl {
url = "http://poppler.freedesktop.org/${name}.tar.gz";
- sha256 = "1zbh1zd083wfwrcw7vxc2bn32h42y6iyh24syxcb3r5ggd2vr41i";
+ sha256 = "1yhaz74b50hjkz3ii077kmq3qg3p3kdyxm33cv6r1njvz8fr01pk";
};
buildInputs = [ cmake ];
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
homepage = http://poppler.freedesktop.org/;
description = "Encoding files for Poppler, a PDF rendering library";
platforms = stdenv.lib.platforms.all;
+ license = "free"; # more free licenses combined
maintainers = [ stdenv.lib.maintainers.urkud ];
};
}
diff --git a/pkgs/desktops/gnome-2/bindings/python-rsvg/default.nix b/pkgs/desktops/gnome-2/bindings/python-rsvg/default.nix
index c09ed74a97c0..1e2faf3af84f 100644
--- a/pkgs/desktops/gnome-2/bindings/python-rsvg/default.nix
+++ b/pkgs/desktops/gnome-2/bindings/python-rsvg/default.nix
@@ -1,24 +1,26 @@
-{ stdenv, fetchurl, gnome, librsvg, pkgconfig, pygtk, python }:
+{ stdenv, fetchurl, gnome, librsvg, pkgconfig, pygtk, python, gtk }:
stdenv.mkDerivation rec {
- version = "2.32";
+ ver_maj = "2.32";
+ ver_min = "0";
+ version = "${ver_maj}.${ver_min}";
name = "python-rsvg-${version}";
src = fetchurl {
- url = "mirror://gnome/sources/gnome-python-desktop/${version}/gnome-python-desktop-${version}.0.tar.gz";
- sha256 = "1xhh3h1qdnimydvv55pmqwyzjchhjwfvp951sjlq0180kskqrlj5";
+ url = "mirror://gnome/sources/gnome-python-desktop/${ver_maj}/gnome-python-desktop-${version}.tar.bz2";
+ sha256 = "1s8f9rns9v7qlwjv9qh9lr8crp88dpzfm45hj47zc3ivpy0dbnq9";
};
configurePhase = ''
- sed -e "s@{PYTHONDIR}/gtk-2.0@{PYTHONDIR}/@" -i rsvg/wscript
- python waf configure --enable-modules=rsvg --prefix=$out
+ sed -e "s@{PYTHONDIR}/gtk-2.0@{PYTHONDIR}/@" -i rsvg/wscript
+ python waf configure --enable-modules=rsvg --prefix=$out
'';
buildPhase = "python waf build";
installPhase = "python waf install";
- buildInputs = [ gnome.gnome_python librsvg pkgconfig pygtk python ];
+ buildInputs = [ gtk gnome.gnome_python librsvg pkgconfig pygtk python ];
meta = with stdenv.lib; {
homepage = "http://www.pygtk.org";
diff --git a/pkgs/desktops/gnome-2/default.nix b/pkgs/desktops/gnome-2/default.nix
index 38ae4c015342..3d76ba72daeb 100644
--- a/pkgs/desktops/gnome-2/default.nix
+++ b/pkgs/desktops/gnome-2/default.nix
@@ -29,8 +29,6 @@
libgtkhtml = callPackage ./platform/libgtkhtml { };
- intltool = callPackage ./platform/intltool { };
-
GConf = callPackage ./platform/GConf { };
gconfmm = callPackage ./platform/gconfmm { };
diff --git a/pkgs/desktops/gnome-2/platform/ORBit2/default.nix b/pkgs/desktops/gnome-2/platform/ORBit2/default.nix
index ec6931724bc2..22c22c6bcf50 100644
--- a/pkgs/desktops/gnome-2/platform/ORBit2/default.nix
+++ b/pkgs/desktops/gnome-2/platform/ORBit2/default.nix
@@ -9,6 +9,10 @@ stdenv.mkDerivation rec {
sha256 = "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam";
};
+ preBuild = ''
+ sed 's/-DG_DISABLE_DEPRECATED//' -i linc2/src/Makefile
+ '';
+
nativeBuildInputs = [ pkgconfig ];
propagatedBuildInputs = [ glib libIDL ];
}
diff --git a/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix b/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix
index 0215b341f934..55daa496afc7 100644
--- a/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix
+++ b/pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix
@@ -16,4 +16,6 @@ stdenv.mkDerivation rec {
];
propagatedBuildInputs = [ GConf glib ];
+
+ postPatch = "find . -name Makefile.in | xargs sed 's/-DG_DISABLE_DEPRECATED//g' -i ";
}
diff --git a/pkgs/desktops/gnome-2/platform/gtkglext/default.nix b/pkgs/desktops/gnome-2/platform/gtkglext/default.nix
index 4eab4b8213c6..903387f50b14 100644
--- a/pkgs/desktops/gnome-2/platform/gtkglext/default.nix
+++ b/pkgs/desktops/gnome-2/platform/gtkglext/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, gtk, mesa, pango }:
+{ stdenv, fetchurl, pkgconfig, glib, gtk, mesa, pango, pangox_compat, xlibs }:
stdenv.mkDerivation rec {
name = "gtkglext-1.2.0";
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
sha256 = "0lbz96jwz57hnn52b8rfj54inwpwcc9fkdq6ya043cgnfih77g8n";
};
- buildInputs = [ pkgconfig gtk mesa pango ];
+ buildInputs = with xlibs;
+ [ pkgconfig glib gtk mesa pango pangox_compat libX11 libXmu ];
# The library uses `GTK_WIDGET_REALIZED', `GTK_WIDGET_TOPLEVEL', and
# `GTK_WIDGET_NO_WINDOW', all of which appear to be deprecated nowadays.
diff --git a/pkgs/desktops/gnome-2/platform/intltool/default.nix b/pkgs/desktops/gnome-2/platform/intltool/default.nix
deleted file mode 100644
index 51eaa4a2cf48..000000000000
--- a/pkgs/desktops/gnome-2/platform/intltool/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, pkgconfig, perl, perlXMLParser, gettext}:
-
-stdenv.mkDerivation rec {
- name = "intltool-0.40.6";
-
- src = fetchurl {
- url = mirror://gnome/sources/intltool/0.40/intltool-0.40.6.tar.bz2;
- sha256 = "0r1vkvy5xzqk01yl6a0xlrry39bra24alkrx6279b77hc62my7jd";
- };
-
- buildInputs = [ pkgconfig ];
- propagatedBuildInputs = [ perl perlXMLParser gettext ];
-}
diff --git a/pkgs/desktops/gnome-2/platform/libbonobo/default.nix b/pkgs/desktops/gnome-2/platform/libbonobo/default.nix
index 79c41f924d3f..2303fb15a6f1 100644
--- a/pkgs/desktops/gnome-2/platform/libbonobo/default.nix
+++ b/pkgs/desktops/gnome-2/platform/libbonobo/default.nix
@@ -10,7 +10,9 @@ stdenv.mkDerivation rec {
sha256 = "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i";
};
- preConfigure = "export USER=`whoami`";
+ preConfigure = # still using stuff deprecated in new glib versions
+ "sed 's/-DG_DISABLE_DEPRECATED//g' -i configure activation-server/Makefile.in";
+
nativeBuildInputs = [ flex bison pkgconfig intltool procps ];
buildInputs = [ libxml2 ];
propagatedBuildInputs = [ popt glib ORBit2 ];
diff --git a/pkgs/desktops/gnome-2/platform/libgnome/default.nix b/pkgs/desktops/gnome-2/platform/libgnome/default.nix
index 37dbfd129611..5ab6d5e813d6 100644
--- a/pkgs/desktops/gnome-2/platform/libgnome/default.nix
+++ b/pkgs/desktops/gnome-2/platform/libgnome/default.nix
@@ -9,7 +9,9 @@ stdenv.mkDerivation rec {
major = "2"; minor = "32"; patchlevel = "1";
sha256 = "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj";
};
-
+
+ patches = [ ./new-glib.patch ];
+
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ popt zlib intltool GConf gnome_vfs libcanberra libtool ];
propagatedBuildInputs = [ glib libbonobo ];
diff --git a/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch b/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch
new file mode 100644
index 000000000000..ceabfbdd158e
--- /dev/null
+++ b/pkgs/desktops/gnome-2/platform/libgnome/new-glib.patch
@@ -0,0 +1,65 @@
+Porting libgnome to newer glib:
+ * remove g_thread_init and g_thread_supported, which are longer needed
+ https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#g-thread-init
+ * replace GStaticRecMutex by GRecMutex
+ https://developer.gnome.org/glib/2.36/glib-Deprecated-Thread-APIs.html#GStaticRecMutex
+
+diff --git a/libgnome/gnome-i18n.c b/libgnome/gnome-i18n.c
+index 531c56c..f13d61e 100644
+--- a/libgnome/gnome-i18n.c
++++ b/libgnome/gnome-i18n.c
+@@ -55,12 +55,14 @@
+ const GList *
+ gnome_i18n_get_language_list (const gchar *ignored)
+ {
+- static GStaticRecMutex lang_list_lock = G_STATIC_REC_MUTEX_INIT;
++ static GRecMutex lang_list_lock;
++ g_rec_mutex_init (&lang_list_lock);
++
+ static GList *list = NULL;
+ const char * const* langs;
+ int i;
+
+- g_static_rec_mutex_lock (&lang_list_lock);
++ g_rec_mutex_lock (&lang_list_lock);
+
+ if (list == NULL) {
+ langs = g_get_language_names ();
+@@ -71,7 +73,7 @@ gnome_i18n_get_language_list (const gchar *ignored)
+ list = g_list_reverse (list);
+ }
+
+- g_static_rec_mutex_unlock (&lang_list_lock);
++ g_rec_mutex_unlock (&lang_list_lock);
+
+ return list;
+ }
+diff --git a/libgnome/gnome-init.c b/libgnome/gnome-init.c
+index fe3efd4..c6619af 100644
+--- a/libgnome/gnome-init.c
++++ b/libgnome/gnome-init.c
+@@ -115,9 +115,6 @@ gnome_bonobo_module_info_get (void)
+ static void
+ bonobo_activation_pre_args_parse (GnomeProgram *program, GnomeModuleInfo *mod_info)
+ {
+- if (!g_thread_supported ())
+- g_thread_init (NULL);
+-
+ if (!bonobo_activation_is_initialized ())
+ bonobo_activation_preinit (program, mod_info);
+ }
+diff --git a/libgnome/gnome-program.c b/libgnome/gnome-program.c
+index 739765e..cd14999 100644
+--- a/libgnome/gnome-program.c
++++ b/libgnome/gnome-program.c
+@@ -1878,10 +1878,6 @@ gnome_program_init (const char *app_id, const char *app_version,
+ GnomeProgram *program;
+ va_list args;
+
+- /* g_thread_init() has to be the first GLib function called ever */
+- if (!g_threads_got_initialized)
+- g_thread_init (NULL);
+-
+ g_type_init ();
+
+ va_start(args, first_property_name);
diff --git a/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix b/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix
index 0b6d3e25e2e7..390059089fc0 100644
--- a/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix
+++ b/pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix
@@ -14,4 +14,8 @@ stdenv.mkDerivation rec {
buildInputs = [ pkgconfig gtk gettext intltool libart_lgpl libgnomecups bison flex ];
propagatedBuildInputs = [ libxml2 ];
+
+ meta = with stdenv.lib; {
+ platforms = platforms.linux;
+ };
}
diff --git a/pkgs/desktops/gnome-3/core/at-spi2-atk/default.nix b/pkgs/desktops/gnome-3/core/at-spi2-atk/default.nix
new file mode 100644
index 000000000000..948774572670
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/at-spi2-atk/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, python, pkgconfig, popt, atk, libX11, libICE, xlibs, libXi
+, intltool, dbus_glib, at_spi2_core, libSM }:
+
+stdenv.mkDerivation rec {
+ versionMajor = "2.8";
+ versionMinor = "0";
+ moduleName = "at-spi2-atk";
+ name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+ sha256 = "085sqww174vl3i9ccb477v706rkjs2d107rl96ma1kbl2jyar226";
+ };
+
+ buildInputs = [ python pkgconfig popt atk libX11 libICE xlibs.libXtst libXi
+ intltool dbus_glib at_spi2_core libSM ];
+}
diff --git a/pkgs/desktops/gnome-3/core/at-spi2-core/default.nix b/pkgs/desktops/gnome-3/core/at-spi2-core/default.nix
new file mode 100644
index 000000000000..2d433486677a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/at-spi2-core/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, python, pkgconfig, popt, intltool, dbus_glib
+, libX11, xextproto, libSM, libICE, libXtst, libXi }:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "2.8";
+ versionMinor = "0";
+ moduleName = "at-spi2-core";
+ name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+ sha256 = "0n64h6j10sn90ds9y70d9wlvvsbwnrym9fm0cyjxb0zmqw7s6q8q";
+ };
+
+ buildInputs = [
+ python pkgconfig popt intltool dbus_glib
+ libX11 xextproto libSM libICE libXtst libXi
+ ];
+
+ # ToDo: on non-NixOS we create a symlink from there?
+ configureFlags = "--with-dbus-daemondir=/run/current-system/sw/bin/";
+}
diff --git a/pkgs/desktops/gnome-3/core/evince/default.nix b/pkgs/desktops/gnome-3/core/evince/default.nix
new file mode 100644
index 000000000000..de49bffc419e
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/evince/default.nix
@@ -0,0 +1,62 @@
+{ fetchurl, stdenv, pkgconfig, intltool, perl, perlXMLParser, libxml2
+, glib, gtk3, pango, atk, gdk_pixbuf, shared_mime_info
+, itstool, gnome_icon_theme, libgnome_keyring, gsettings_desktop_schemas
+, poppler, ghostscriptX, djvulibre, libspectre
+, makeWrapper #, python /*just for tests*/
+, recentListSize ? null # 5 is not enough, allow passing a different number
+}:
+
+stdenv.mkDerivation rec {
+ name = "evince-3.6.1";
+
+ src = fetchurl {
+ url = "http://ftp.gnome.org/pub/GNOME/sources/evince/3.6/${name}.tar.xz";
+ sha256 = "1da1pij030dh8mb0pr0jnyszgsbjnh8lc17rj5ii52j3kmbv51qv";
+ };
+
+ buildInputs = [
+ pkgconfig intltool perl perlXMLParser libxml2
+ glib gtk3 pango atk gdk_pixbuf
+ itstool gnome_icon_theme libgnome_keyring gsettings_desktop_schemas
+ poppler ghostscriptX djvulibre libspectre
+ makeWrapper
+ ];
+
+ configureFlags = [
+ "--disable-nautilus" # Do not use nautilus
+ "--disable-dbus" # strange compilation error
+ ];
+
+ preConfigure = with stdenv.lib;
+ optionalString doCheck ''
+ for file in test/*.py; do
+ echo "patching $file"
+ sed '1s,/usr,${python},' -i "$file"
+ done
+ '' + optionalString (recentListSize != null) ''
+ sed -i 's/\(gtk_recent_chooser_set_limit .*\)5)/\1${builtins.toString recentListSize})/' shell/ev-open-recent-action.c
+ sed -i 's/\(if (++n_items == \)5\(.*\)/\1${builtins.toString recentListSize}\2/' shell/ev-window.c
+ '';
+
+ postInstall = ''
+ # Tell Glib/GIO about the MIME info directory, which is used
+ # by `g_file_info_get_content_type ()'.
+ wrapProgram "$out/bin/evince" \
+ --prefix XDG_DATA_DIRS : "${shared_mime_info}/share:$out/share"
+ '' + gsettings_desktop_schemas.doCompileSchemas;
+ doCheck = false; # would need pythonPackages.dogTail, which is missing
+
+ meta = {
+ homepage = http://www.gnome.org/projects/evince/;
+ description = "GNOME's document viewer";
+
+ longDescription = ''
+ Evince is a document viewer for multiple document formats. It
+ currently supports PDF, PostScript, DjVu, TIFF and DVI. The goal
+ of Evince is to replace the multiple document viewers that exist
+ on the GNOME Desktop with a single simple application.
+ '';
+
+ license = "GPLv2+";
+ };
+}
diff --git a/pkgs/desktops/gnome-3/core/gconf/default.nix b/pkgs/desktops/gnome-3/core/gconf/default.nix
new file mode 100644
index 000000000000..9ca9c227d586
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gconf/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, dbus_glib, gtk, glib, libxml2
+, intltool, polkit, orbit }:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "3.2";
+ versionMinor = "5";
+ moduleName = "GConf";
+
+ origName = "${moduleName}-${versionMajor}.${versionMinor}";
+
+ name = "gconf-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${origName}.tar.xz";
+ sha256 = "1ijqks0jxc4dyfxg4vnbqds4aj6miyahlsmlqlkf2bi1798akpjd";
+ };
+
+ buildInputs = [ libxml2 polkit gtk orbit ];
+ propagatedBuildInputs = [ glib dbus_glib ];
+ nativeBuildInputs = [ pkgconfig intltool ];
+
+ # ToDo: ldap reported as not found but afterwards reported as supported
+
+ meta = {
+ homepage = http://projects.gnome.org/gconf/;
+ description = "A system for storing application preferences";
+ };
+}
diff --git a/pkgs/desktops/gnome-3/core/gcr/default.nix b/pkgs/desktops/gnome-3/core/gcr/default.nix
new file mode 100644
index 000000000000..cf9774c5511c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gcr/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnupg, p11_kit, glib
+, libgcrypt, libtasn1, dbus_glib, gtk, pango, gdk_pixbuf, atk }:
+
+stdenv.mkDerivation rec {
+ name = "gcr-3.6.2";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gcr/3.6/${name}.tar.xz";
+ sha256 = "16xyqxv2hxl3a4m8ahilqcf1ps58w1ijh8dav1l5nqz36ljdn2gp";
+ };
+
+ buildInputs = [
+ pkgconfig intltool gnupg p11_kit glib
+ libgcrypt libtasn1 dbus_glib gtk pango gdk_pixbuf atk
+ ];
+
+ #doCheck = true;
+}
diff --git a/pkgs/desktops/gnome-3/core/gnome-icon-theme/default.nix b/pkgs/desktops/gnome-3/core/gnome-icon-theme/default.nix
new file mode 100644
index 000000000000..303bcd2208ce
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-icon-theme/default.nix
@@ -0,0 +1,12 @@
+{ stdenv, fetchurl, pkgconfig, intltool, iconnamingutils, gtk }:
+
+stdenv.mkDerivation rec {
+ name = "gnome-icon-theme-3.6.2";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gnome-icon-theme/3.6/${name}.tar.xz";
+ sha256 = "0i8hkx2c1g5ckrvbkvs9n47i8fby8p9xs6p5l0mxdx9aq4smak9i";
+ };
+
+ nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
+}
diff --git a/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
new file mode 100644
index 000000000000..5983b74c0f45
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-keyring/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, pkgconfig, dbus, libgcrypt, libtasn1, pam, python, glib
+, gtk3, intltool, gconf, libgnome_keyring, pango, gcr, gdk_pixbuf, atk, p11_kit }:
+
+stdenv.mkDerivation rec {
+ name = "gnome-keyring-3.6.2";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gnome-keyring/3.6/${name}.tar.xz";
+ sha256 = "1mhc2c0qswfjqi2spdvh19b7npfkjf1k40q6v7fja4qpc26maq5f";
+ };
+
+ buildInputs = [
+ dbus libgcrypt pam python gtk3 gconf libgnome_keyring
+ pango gcr gdk_pixbuf atk p11_kit
+ ];
+
+ propagatedBuildInputs = [ glib libtasn1 ];
+
+ nativeBuildInputs = [ pkgconfig intltool ];
+
+ configureFlags = [
+ "--with-ca-certificates=/etc/ssl/certs/ca-bundle.crt" # NixOS hardcoded path
+ "--with-pkcs11-config=$$out/etc/pkcs11/" # installation directories
+ "--with-pkcs11-modules=$$out/lib/pkcs11/"
+ ];
+}
diff --git a/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
new file mode 100644
index 000000000000..41fdcc8086b1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gnome-terminal/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which, gconf }:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "3.4";
+ versionMinor = "1.1";
+
+ name = "gnome-terminal-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gnome-terminal/${versionMajor}/${name}.tar.xz";
+ sha256 = "1p9zqjmkxryf2kyghhhwwpsh4kd8y1jzzwc9zxghmpxszi9a5m0l";
+ };
+
+ configureFlags = "--disable-scrollkeeper";
+ buildInputs = [ gnome3.gtk gnome3.gsettings_desktop_schemas gnome3.vte gconf ];
+
+ nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ];
+}
diff --git a/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
new file mode 100644
index 000000000000..9c13539a1cc6
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gsettings-desktop-schemas/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, pkgconfig, intltool, glib
+ # just for passthru
+, gtk3, gsettings_desktop_schemas }:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "3.6";
+ versionMinor = "1";
+ moduleName = "gsettings-desktop-schemas";
+
+ name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+ sha256 = "1rk71q2rky9nzy0zb5jsvxa62vhg7dk65kdgdifq8s761797ga6r";
+ };
+
+ buildInputs = [ glib ];
+
+ nativeBuildInputs = [ pkgconfig intltool ];
+
+ passthru = {
+ doCompileSchemas = ''
+ for pkg in "${gsettings_desktop_schemas}" "${gtk3}"; do
+ cp -s $pkg/share/glib-2.0/schemas/*.gschema.xml $out/share/glib-2.0/schemas/
+ done
+ ${glib}/bin/glib-compile-schemas $out/share/glib-2.0/schemas/
+ '';
+ };
+}
diff --git a/pkgs/desktops/gnome-3/core/gvfs/default.nix b/pkgs/desktops/gnome-3/core/gvfs/default.nix
new file mode 100644
index 000000000000..1eea518c4b7f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gvfs/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pkgconfig, dbus_libs, samba, libarchive, fuse, libgphoto2
+, libcdio, libxml2, libtool, glib, intltool, gconf, libgnome_keyring, libsoup
+, udev, avahi, libxslt, docbook_xsl }:
+
+stdenv.mkDerivation rec {
+ name = "gvfs-1.14.2";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gvfs/1.14/${name}.tar.xz";
+ sha256 = "1g4ghyf45jg2ajdkv2d972hbckyjh3d9jdrppai85pl9pk2dmfy3";
+ };
+
+ buildInputs =
+ [ glib dbus_libs udev samba libarchive fuse libgphoto2 libcdio libxml2 gconf
+ libgnome_keyring libsoup avahi libtool libxslt docbook_xsl
+ ];
+
+ nativeBuildInputs = [ pkgconfig intltool ];
+
+ enableParallelBuilding = true;
+}
diff --git a/pkgs/desktops/gnome-3/core/libcroco/default.nix b/pkgs/desktops/gnome-3/core/libcroco/default.nix
new file mode 100644
index 000000000000..70c1db8c0275
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/libcroco/default.nix
@@ -0,0 +1,11 @@
+{stdenv, fetchurl, pkgconfig, libxml2, glib}:
+
+stdenv.mkDerivation rec {
+ name = "libcroco-0.6.6"; # 3.6.2 release
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/libcroco/0.6/${name}.tar.xz";
+ sha256 = "1nbb12420v1zacn6jwa1x4ixikkcqw66sg4j5dgs45nhygiarv3j";
+ };
+ buildInputs = [ pkgconfig libxml2 glib ];
+}
diff --git a/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
new file mode 100644
index 000000000000..a5d196ae1e32
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/libgnome-keyring/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, glib, dbus_libs, libgcrypt, pkgconfig, intltool }:
+
+stdenv.mkDerivation rec {
+ name = "libgnome-keyring-3.6.0";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/libgnome-keyring/3.6/${name}.tar.xz";
+ sha256 = "0c4qrjpmv1hqga3xv6wsq2z10x2n78qgw7q3k3s01y1pggxkgjkd";
+ };
+
+ propagatedBuildInputs = [ glib dbus_libs libgcrypt ];
+ nativeBuildInputs = [ pkgconfig intltool ];
+
+ meta = {
+ inherit (glib.meta) platforms maintainers;
+ };
+}
diff --git a/pkgs/desktops/gnome-3/core/libgweather/default.nix b/pkgs/desktops/gnome-3/core/libgweather/default.nix
new file mode 100644
index 000000000000..78ae94c1a33a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/libgweather/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, fetchurl, pkgconfig, libxml2, gtk, intltool, libsoup, gconf
+, pango, gdk_pixbuf, atk }:
+
+stdenv.mkDerivation rec {
+ name = "libgweather-3.6.2";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/libgweather/3.6/${name}.tar.xz";
+ sha256 = "1c50m0zrnfh4g58rzf33dfw8ggslj38c61p8a75905bmj3rfyahg";
+ };
+ configureFlags = if stdenv ? glibc then "--with-zoneinfo-dir=${stdenv.glibc}/share/zoneinfo" else "";
+ propagatedBuildInputs = [ libxml2 gtk libsoup gconf pango gdk_pixbuf atk ];
+ nativeBuildInputs = [ pkgconfig intltool ];
+}
diff --git a/pkgs/desktops/gnome-3/core/vte/default.nix b/pkgs/desktops/gnome-3/core/vte/default.nix
new file mode 100644
index 000000000000..ffc3aab87064
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/vte/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, intltool, pkgconfig, gnome3, ncurses
+, pythonSupport ? false, python, pygtk}:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "0.32";
+ versionMinor = "2";
+ moduleName = "vte";
+
+ name = "${moduleName}-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/${moduleName}/${versionMajor}/${name}.tar.xz";
+ sha256 = "0sj837b9ib36gx00hzdinv23f7w91fd5mcw1p6wdi053yxqw17nn";
+ };
+
+ buildInputs = [ intltool pkgconfig gnome3.glib gnome3.gtk ncurses ] ++
+ stdenv.lib.optionals pythonSupport [python pygtk];
+
+ configureFlags = ''
+ ${if pythonSupport then "--enable-python" else "--disable-python"}
+ '';
+
+ postInstall = stdenv.lib.optionalString pythonSupport ''
+ cd $(toPythonPath $out)/gtk-2.0
+ for n in *; do
+ ln -s "gtk-2.0/$n" "../$n"
+ done
+ '';
+
+ meta = {
+ homepage = http://www.gnome.org/;
+ description = "A library implementing a terminal emulator widget for GTK+";
+ longDescription = ''
+ VTE is a library (libvte) implementing a terminal emulator widget for
+ GTK+, and a minimal sample application (vte) using that. Vte is
+ mainly used in gnome-terminal, but can also be used to embed a
+ console/terminal in games, editors, IDEs, etc. VTE supports Unicode and
+ character set conversion, as well as emulating any terminal known to
+ the system's terminfo database.
+ '';
+ license = "LGPLv2";
+ maintainers = with stdenv.lib.maintainers; [ astsmtl antono ];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
diff --git a/pkgs/desktops/gnome-3/core/zenity/default.nix b/pkgs/desktops/gnome-3/core/zenity/default.nix
new file mode 100644
index 000000000000..18b91d4f61e8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/zenity/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, cairo, libxml2, libxslt, gnome3, pango
+, gnome_doc_utils, intltool, libX11, which }:
+
+stdenv.mkDerivation rec {
+
+ versionMajor = "3.4";
+ versionMinor = "0";
+
+ name = "zenity-${versionMajor}.${versionMinor}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/zenity/${versionMajor}/zenity-${versionMajor}.${versionMinor}.tar.xz";
+ sha256 = "1bqbfcvd3kj2xk15fvbcdaqvyg9qvymlhn8cwvg5m6v4gicniw2w";
+ };
+
+ configureFlags = "--disable-scrollkeeper";
+ buildInputs = [ gnome3.gtk libxml2 libxslt libX11 ];
+
+ nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which ];
+}
diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix
new file mode 100644
index 000000000000..5d517da82b39
--- /dev/null
+++ b/pkgs/desktops/gnome-3/default.nix
@@ -0,0 +1,55 @@
+{ callPackage, lib, self, stdenv, gettext, overrides ? {}, pkgs }:
+
+rec {
+ inherit (pkgs) fetchurl_gnome glib gtk3 atk pango;
+ gtk = gtk3;
+ orbit = pkgs.gnome2.ORBit2;
+
+ inherit (lib) lowPrio hiPrio appendToName makeOverridable;
+
+ __overrides = overrides;
+
+#### Core (http://ftp.acc.umu.se/pub/GNOME/core/)
+
+ at_spi2_atk = lib.lowPrio (callPackage ./core/at-spi2-atk { });
+
+ at_spi2_core = callPackage ./core/at-spi2-core { };
+
+ evince = callPackage ./core/evince { }; # ToDo: dbus would prevent compilation, enable tests
+
+ gconf = callPackage ./core/gconf { };
+
+ gcr = callPackage ./core/gcr { }; # ToDo: tests fail
+
+ gnome_icon_theme = callPackage ./core/gnome-icon-theme { };
+
+ gnome_keyring = callPackage ./core/gnome-keyring { };
+ libgnome_keyring = callPackage ./core/libgnome-keyring { };
+
+ gnome_terminal = callPackage ./core/gnome-terminal { };
+
+ gsettings_desktop_schemas = lib.lowPrio (callPackage ./core/gsettings-desktop-schemas { });
+
+ gvfs = callPackage ./core/gvfs { };
+
+ libcroco = callPackage ./core/libcroco {};
+
+ libgweather = callPackage ./core/libgweather { };
+
+ vte = callPackage ./core/vte { };
+
+ zenity = callPackage ./core/zenity { };
+
+#### Apps (http://ftp.acc.umu.se/pub/GNOME/apps/)
+
+ gnome_dictionary = callPackage ./desktop/gnome-dictionary { };
+
+ gnome_desktop = callPackage ./desktop/gnome-desktop { };
+
+ # Removed from recent GNOME releases, but still required
+ scrollkeeper = callPackage ./desktop/scrollkeeper { };
+
+ # scrollkeeper replacement
+ rarian = callPackage ./desktop/rarian { };
+
+}
diff --git a/pkgs/desktops/gnome-3/desktop/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/desktop/gnome-desktop/default.nix
new file mode 100644
index 000000000000..4d22f6ad7466
--- /dev/null
+++ b/pkgs/desktops/gnome-3/desktop/gnome-desktop/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl, pkgconfig, python, libxml2Python, libxslt, which, libX11, gnome3
+, intltool, gnome_doc_utils}:
+
+stdenv.mkDerivation rec {
+
+ majorVersion = "3.5";
+ minorVersion = "3";
+ name = "gnome-desktop-${majorVersion}.${minorVersion}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gnome-desktop/${majorVersion}/${name}.tar.xz";
+ sha256 = "1nrqcp1p5cxhfjjy5hjpvkqmzsgl2353a08fg0b11c932v95bsba";
+ };
+
+ configureFlags = "--disable-scrollkeeper";
+ buildInputs = [ pkgconfig python libxml2Python libxslt which libX11
+ gnome3.gtk gnome3.glib intltool gnome_doc_utils ];
+}
diff --git a/pkgs/desktops/gnome-3/desktop/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/desktop/gnome-dictionary/default.nix
new file mode 100644
index 000000000000..7a1ab5b1505a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/desktop/gnome-dictionary/default.nix
@@ -0,0 +1,15 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, gnome_doc_utils, intltool, which
+, libxml2, libxslt }:
+
+stdenv.mkDerivation rec {
+ version = "3.5.2";
+ name = "gnome-dictionary-${version}";
+
+ src = fetchurl {
+ url = "mirror://gnome/sources/gnome-dictionary/3.5/${name}.tar.xz";
+ sha256 = "1cq32csxn27vir5nlixx337ym2nal9ykq3s1j7yynh2adh4m0jil";
+ };
+
+ buildInputs = [ gnome3.gtk ];
+ nativeBuildInputs = [ pkgconfig intltool gnome_doc_utils which libxml2 libxslt gnome3.scrollkeeper ];
+}
diff --git a/pkgs/desktops/gnome-3/desktop/rarian/default.nix b/pkgs/desktops/gnome-3/desktop/rarian/default.nix
new file mode 100644
index 000000000000..77a2b710f447
--- /dev/null
+++ b/pkgs/desktops/gnome-3/desktop/rarian/default.nix
@@ -0,0 +1,11 @@
+{stdenv, fetchurl, pkgconfig, perl, perlXMLParser, libxml2, libxslt, docbook_xml_dtd_42}:
+
+stdenv.mkDerivation rec {
+ name = "rarian-0.8.1";
+ src = fetchurl {
+ url = "mirror://gnome/sources/rarian/0.8/${name}.tar.bz2";
+ sha256 = "aafe886d46e467eb3414e91fa9e42955bd4b618c3e19c42c773026b205a84577";
+ };
+ buildInputs = [pkgconfig perl perlXMLParser libxml2 libxslt];
+ configureFlags = "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/docbook.cat";
+}
diff --git a/pkgs/desktops/gnome-3/desktop/scrollkeeper/default.nix b/pkgs/desktops/gnome-3/desktop/scrollkeeper/default.nix
new file mode 100644
index 000000000000..97dcbf4e0041
--- /dev/null
+++ b/pkgs/desktops/gnome-3/desktop/scrollkeeper/default.nix
@@ -0,0 +1,18 @@
+{stdenv, fetchurl, pkgconfig, perl, perlXMLParser, libxml2, libxslt, docbook_xml_dtd_42, automake}:
+
+stdenv.mkDerivation {
+ name = "scrollkeeper-0.3.14";
+ src = fetchurl {
+ url = mirror://gnome/sources/scrollkeeper/0.3/scrollkeeper-0.3.14.tar.bz2;
+ sha256 = "08n1xgj1f53zahwm0wpn3jid3rfbhi3iwby0ilaaldnid5qriqgc";
+ };
+
+ # The fuloong2f is not supported by scrollkeeper-0.3.14 config.guess
+ preConfigure = "
+ substituteInPlace extract/dtds/Makefile.am --replace /usr/bin/xmlcatalog xmlcatalog
+ cp ${automake}/share/automake*/config.{sub,guess} .
+ ";
+
+ buildInputs = [pkgconfig perl perlXMLParser libxml2 libxslt];
+ configureFlags = "--with-xml-catalog=${docbook_xml_dtd_42}/xml/dtd/docbook/docbook.cat";
+}
diff --git a/pkgs/desktops/kde-4.10/kdepimlibs.nix b/pkgs/desktops/kde-4.10/kdepimlibs.nix
index c9813b19f521..7ec1612b1e5f 100644
--- a/pkgs/desktops/kde-4.10/kdepimlibs.nix
+++ b/pkgs/desktops/kde-4.10/kdepimlibs.nix
@@ -1,8 +1,10 @@
-{ kde, boost, cyrus_sasl, gpgme, libical, openldap, shared_mime_info
+{ kde, pkgconfig, boost, cyrus_sasl, gpgme, libical, openldap, shared_mime_info
, kdelibs, akonadi, libxslt, prison, nepomuk_core
, shared_desktop_ontologies, qjson }:
kde {
+ nativeBuildInputs = [ pkgconfig ];
+
buildInputs =
[ boost gpgme libical libxslt qjson
openldap cyrus_sasl akonadi shared_desktop_ontologies
diff --git a/pkgs/desktops/xfce/4_08.nix b/pkgs/desktops/xfce/4_08.nix
new file mode 100644
index 000000000000..d29e3ac51ef0
--- /dev/null
+++ b/pkgs/desktops/xfce/4_08.nix
@@ -0,0 +1,37 @@
+{ pkgs, newScope }: let
+
+common = (import ./common.nix) { inherit pkgs newScope xfce_self; };
+callPackage = common.callPackage;
+
+xfce_self = common.xfce_common // rec { # the lines are very long but it seems better than the even-odd line approach
+
+ #### CORE
+
+ exo = callPackage ./core/exo.nix { v= "0.6.2"; h= "0f8zh5y057l7xffskjvky6k88hrnz6jyk35mvlfpmx26anlgd77l"; };
+ libxfce4ui = callPackage ./core/libxfce4ui.nix { v= "4.8.1"; h= "0mlrcr8rqmv047xrb2dbh7f4knsppb1anx2b05s015h6v8lyvjrr"; };
+ libxfce4util = callPackage ./core/libxfce4util.nix { v= "4.8.2"; h= "05n8586h2fwkibfld5fm4ygx1w66jnbqqb3li0ardjvm2n24k885"; };
+ libxfcegui4 = callPackage ./core/libxfcegui4.nix { v= "4.8.1"; h= "0hr4h6a9p6w3qw1976p8v9c9pwhd9zhrjlbaph0p7nyz7j1836ih"; };
+ thunar = callPackage ./core/thunar.nix { v= "1.2.3"; h= "19mczys6xr683r68g3s2njrrmnk1p73zypvwrhajw859c6nsjsp6"; };
+ xfce4panel = callPackage ./core/xfce4-panel.nix { v= "4.8.6"; h= "00zdkg1jg4n2n109nxan8ji2m06r9mc4lnlrvb55xvj229m2dwb6"; };
+ xfce4session = callPackage ./core/xfce4-session.nix { v= "4.8.2"; h= "1l608kik98jxbjl73waf8515hzji06lr80qmky2qlnp0b6js5g1i"; };
+ xfce4settings = callPackage ./core/xfce4-settings.nix { v= "4.8.3"; h= "0bmw0s6jp2ws4n0f3387zwsyv46b0w89m6r70yb7wrqy9r3wqy6q"; };
+ xfceutils = callPackage ./core/xfce-utils.nix { v= "4.8.3"; h= "09mr0amp2f632q9i3vykaa0x5nrfihfm9v5nxsx9vch8wvbp0l03"; };
+ xfconf = callPackage ./core/xfconf.nix { v= "4.8.1"; h= "1jwkb73xcgqfly449jwbn2afiyx50p150z60x19bicps75sp6q4q"; };
+ xfdesktop = callPackage ./core/xfdesktop.nix { v= "4.8.3"; h= "097lc9djmay0jyyl42jmvcfda75ndp265nzn0aa3hv795bsn1175"; };
+ xfwm4 = callPackage ./core/xfwm4.nix { v= "4.8.3"; h= "0zi2g1d2jdgw5armlk9xjh4ykmydy266gdba86nmhy951gm8n3hb"; };
+
+ xfce4_appfinder = callPackage ./core/xfce4-appfinder.nix { v= "4.8.0"; h= "0zy7i9x4qjchmyb8nfpb7m2ply5n2aq35p9wrhb8lpz4am1ihx7x"; };
+
+ #### APPLICATIONS
+
+ terminal = null; # newer versions don't build with 4.8
+
+ # versions > 0.3* don't build with xfce-4.8.*
+ ristretto = callPackage ./applications/ristretto.nix { v= "0.3.7"; h= "19mzy159j4qhd7pd1b83gimxfdg3mwdab9lq9kk505d21r7iqc9b"; };
+
+ xfce4mixer = callPackage ./applications/xfce4-mixer.nix { v= "4.8.0"; h= "1aqgjxvck6hx26sk3n4n5avhv02vs523mfclcvjb3xnks3yli7wz"; };
+
+}; # xfce_self
+
+in xfce_self
+
diff --git a/pkgs/desktops/xfce/4_10.nix b/pkgs/desktops/xfce/4_10.nix
new file mode 100644
index 000000000000..3f846198e3f5
--- /dev/null
+++ b/pkgs/desktops/xfce/4_10.nix
@@ -0,0 +1,35 @@
+{ pkgs, newScope }: let
+
+common = (import ./common.nix) { inherit pkgs newScope xfce_self; };
+callPackage = common.callPackage;
+
+xfce_self = common.xfce_common // rec { # the lines are very long but it seems better than the even-odd line approach
+
+ #### CORE
+
+ exo = callPackage ./core/exo.nix { v= "0.10.2"; h= "1kknxiz703q4snmry65ajm26jwjslbgpzdal6bd090m3z25q51dk"; };
+ libxfce4ui = callPackage ./core/libxfce4ui.nix { v= "4.10.0"; h= "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2"; };
+ libxfce4util = callPackage ./core/libxfce4util.nix { v= "4.10.0"; h= "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89"; };
+ libxfcegui4 = callPackage ./core/libxfcegui4.nix { v= "4.10.0"; h= "0cs5im0ib0cmr1lhr5765yliqjfyxvk4kwy8h1l8bn3mj6bzk0ib"; };
+ thunar = callPackage ./core/thunar.nix { v= "1.6.2"; h= "11dx38rvkfbp91pxrprymxhimsm90gvizp277x9s5rwnwcm1ggbx"; };
+ xfce4panel = callPackage ./core/xfce4-panel.nix { v= "4.10.0"; h= "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k"; };
+ xfce4session = callPackage ./core/xfce4-session.nix { v= "4.10.0"; h= "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv"; };
+ xfce4settings = callPackage ./core/xfce4-settings.nix { v= "4.10.0"; h= "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8"; };
+ xfceutils = null; # removed in 4.10
+ xfconf = callPackage ./core/xfconf.nix { v= "4.10.0"; h= "0xh520z0qh0ib0ijgnyrgii9h5d4pc53n6mx1chhyzfc86j1jlhp"; };
+ xfdesktop = callPackage ./core/xfdesktop.nix { v= "4.10.0"; h= "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"; };
+ xfwm4 = callPackage ./core/xfwm4.nix { v= "4.10.0"; h= "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9"; };
+
+ xfce4_appfinder = callPackage ./core/xfce4-appfinder.nix { v= "4.9.4"; h= "12lgrbd1n50w9n8xkpai98s2aw8vmjasrgypc57sp0x0qafsqaxq"; };
+
+ #### APPLICATIONS
+
+ ristretto = callPackage ./applications/ristretto.nix { v= "0.6.3"; h= "0y9d8w1plwp4vmxs44y8k8x15i0k0xln89k6jndhv6lf57g1cs1b"; };
+ terminal = xfce4terminal; # it has changed its name
+ xfce4mixer = callPackage ./applications/xfce4-mixer.nix { v= "4.10.0"; h= "1pnsd00583l7p5d80rxbh58brzy3jnccwikbbbm730a33c08kid8"; };
+ xfce4terminal = callPackage ./applications/terminal.nix { v= "0.6.1"; h= "1j6lpkq952mrl5p24y88f89wn9g0namvywhma639xxsswlkn8d31"; };
+
+};
+
+in xfce_self
+
diff --git a/pkgs/desktops/xfce/common.nix b/pkgs/desktops/xfce/common.nix
new file mode 100644
index 000000000000..8be4ac09e145
--- /dev/null
+++ b/pkgs/desktops/xfce/common.nix
@@ -0,0 +1,72 @@
+{ pkgs, newScope, xfce_self }: rec {
+
+ callPackage = newScope (deps // xfce_self);
+
+ deps = rec { # xfce-global dependency overrides should be here
+ inherit (pkgs.gnome) libglade libwnck vte gtksourceview;
+ inherit (pkgs.perlPackages) URI;
+
+ # The useful bits from ‘gnome-disk-utility’.
+ libgdu = callPackage ./support/libgdu.nix { };
+
+ # Gvfs is required by Thunar for the trash feature and for volume
+ # mounting. Should use the one from Gnome, but I don't want to mess
+ # with the Gnome packages (or pull in a zillion Gnome dependencies).
+ gvfs = callPackage ./support/gvfs.nix { };
+
+ # intelligent fetcher for Xfce
+ fetchXfce = rec {
+ generic = prepend : name : hash :
+ let lib = pkgs.lib;
+ p = builtins.parseDrvName name;
+ versions = lib.splitString "." p.version;
+ ver_maj = lib.concatStrings (lib.intersperse "." (lib.take 2 versions));
+ name_low = lib.toLower p.name;
+ in pkgs.fetchurl {
+ url = "mirror://xfce/src/${prepend}/${name_low}/${ver_maj}/${name}.tar.bz2";
+ sha256 = hash;
+ };
+ core = generic "xfce";
+ app = generic "apps";
+ art = generic "art";
+ };
+ };
+
+ xfce_common = rec {
+
+ inherit (deps) gvfs; # used by NixOS
+
+ #### CORE
+
+ garcon = callPackage ./core/garcon.nix { v= "0.2.0"; h= "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2"; };
+
+ # not used anymore TODO: really? Update to 2.99.2?
+ gtk_xfce_engine = callPackage ./core/gtk-xfce-engine.nix { };
+
+ # ToDo: segfaults after some work
+ tumbler = callPackage ./core/tumbler.nix { v= "0.1.27"; h= "0s9qj99b81asmlqa823nzykq8g6p9azcp2niak67y9bp52wv6q2c"; };
+
+ xfce4_power_manager = callPackage ./core/xfce4-power-manager.nix { v= "1.0.10"; h= "1w120k1sl4s459ijaxkqkba6g1p2sqrf9paljv05wj0wz12bpr40"; };
+
+
+ #### APPLICATIONS
+ #TODO: correct links; more stuff
+
+ xfce4notifyd = callPackage ./applications/xfce4-notifyd.nix { v= "0.2.2"; h= "0s4ilc36sl5k5mg5727rmqims1l3dy5pwg6dk93wyjqnqbgnhvmn"; };
+ gigolo = callPackage ./applications/gigolo.nix { v= "0.4.1"; h= "1y8p9bbv1a4qgbxl4vn6zbag3gb7gl8qj75cmhgrrw9zrvqbbww2"; };
+ xfce4taskmanager = callPackage ./applications/xfce4-taskmanager.nix { v= "1.0.0"; h= "1vm9gw7j4ngjlpdhnwdf7ifx6xrrn21011almx2vwidhk2f9zvy0"; };
+ mousepad = callPackage ./applications/mousepad.nix { v= "0.3.0"; h= "0v84zwhjv2xynvisn5vmp7dbxfj4l4258m82ks7hn3adk437bwhh"; };
+ thunar_volman = callPackage ./core/thunar-volman.nix { };
+
+ #### ART
+
+ xfce4icontheme = callPackage ./art/xfce4-icon-theme.nix { v= "4.4.3"; h= "1yk6rx3zr9grm4jwpjvqdkl13pisy7qn1wm5cqzmd2kbsn96cy6l"; };
+
+ #### PANEL PLUGINS
+
+ xfce4_systemload_plugin = callPackage ./panel-plugins/xfce4-systemload-plugin.nix { };
+ xfce4_cpufreq_plugin = callPackage ./panel-plugins/xfce4-cpufreq-plugin.nix { };
+
+ };
+}
+
diff --git a/pkgs/desktops/xfce/core/xfce4-dev-tools.nix b/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
new file mode 100644
index 000000000000..e56eb3f0a713
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-dev-tools.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, glib, autoconf, automake, libtool, intltool }:
+
+stdenv.mkDerivation rec {
+ p_name = "xfce4-dev-tools";
+ ver_maj = "4.10";
+ ver_min = "0";
+
+ src = fetchurl {
+ url = "mirror://xfce/src/xfce/${p_name}/${ver_maj}/${name}.tar.bz2";
+ sha256 = "1y1byfjciqhxqfxbjfp22bn5lxk3a01ng7zfjha8h5mzzfxlk5pp";
+ };
+ name = "${p_name}-${ver_maj}.${ver_min}";
+
+ buildInputs = [ pkgconfig glib ];
+
+ # not needed to build it but to use it
+ propagatedBuildInputs = [ autoconf automake libtool intltool ];
+
+ meta = {
+ homepage = http://foo-projects.org/~benny/projects/xfce4-dev-tools/;
+ description = "Tools and M4 macros for Xfce4 developers";
+ license = "GPLv2+";
+ };
+}
diff --git a/pkgs/desktops/xfce/core/xfce4-session-systemd.patch b/pkgs/desktops/xfce/core/xfce4-session-systemd.patch
new file mode 100644
index 000000000000..7780491a8eda
--- /dev/null
+++ b/pkgs/desktops/xfce/core/xfce4-session-systemd.patch
@@ -0,0 +1,470 @@
+From ae28aef315a7a6b90f1649ce6d1f30b842791cbf Mon Sep 17 00:00:00 2001
+From: Nick Schermer
+Date: Sun, 04 Nov 2012 20:23:36 +0000
+Subject: Add shutdown/reboot functionality for systemd (bug #8729).
+
+Based on patch by Christian Hesse and Evangelos Foutras.
+---
+diff --git a/configure.in.in b/configure.in.in
+index 9aa4f8f..134d0f7 100644
+--- a/configure.in
++++ b/configure.in
+@@ -96,6 +96,10 @@ XDT_CHECK_PACKAGE([DBUS], [dbus-1], [1.1.0])
+ XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [0.84])
+ XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.9.0])
+
++dnl Check for polkit / systemd integration
++XDT_CHECK_OPTIONAL_PACKAGE([SYSTEMD], [polkit-gobject-1], [0.100],
++ [systemd], [Systemd support (through polit)])
++
+ dnl Check for debugging support
+ XDT_FEATURE_DEBUG([xfsm_debug_default])
+
+diff --git a/xfce4-session/Makefile.am b/xfce4-session/Makefile.am
+index c015154..f748b2b 100644
+--- a/xfce4-session/Makefile.am
++++ b/xfce4-session/Makefile.am
+@@ -38,8 +38,6 @@ xfce4_session_SOURCES = \
+ xfsm-compat-gnome.h \
+ xfsm-compat-kde.c \
+ xfsm-compat-kde.h \
+- xfsm-consolekit.c \
+- xfsm-consolekit.h \
+ xfsm-dns.c \
+ xfsm-dns.h \
+ xfsm-error.c \
+@@ -65,6 +63,16 @@ xfce4_session_SOURCES = \
+ xfsm-upower.c \
+ xfsm-upower.h
+
++if HAVE_SYSTEMD
++xfce4_session_SOURCES += \
++ xfsm-systemd.c \
++ xfsm-systemd.h
++else
++xfce4_session_SOURCES += \
++ xfsm-consolekit.c \
++ xfsm-consolekit.h
++endif
++
+ xfce4_session_CFLAGS = \
+ $(LIBSM_CFLAGS) \
+ $(LIBX11_CFLAGS) \
+@@ -72,6 +80,7 @@ xfce4_session_CFLAGS = \
+ $(DBUS_CFLAGS) \
+ $(DBUS_GLIB_CFLAGS) \
+ $(LIBWNCK_CFLAGS) \
++ $(SYSTEMD_CFLAGS) \
+ $(XFCONF_CFLAGS) \
+ $(GMODULE_CFLAGS) \
+ $(PLATFORM_CFLAGS)
+@@ -91,6 +100,7 @@ xfce4_session_LDADD = \
+ $(DBUS_LIBS) \
+ $(DBUS_GLIB_LIBS) \
+ $(LIBWNCK_LIBS) \
++ $(SYSTEMD_LIBS) \
+ $(XFCONF_LIBS) \
+ -lm
+
+diff --git a/xfce4-session/xfsm-shutdown.c b/xfce4-session/xfsm-shutdown.c
+index d8757a8..4c483a7 100644
+--- a/xfce4-session/xfsm-shutdown.c
++++ b/xfce4-session/xfsm-shutdown.c
+@@ -66,10 +66,13 @@
+ #include
+ #include
+ #include
+-#include