diff options
38 files changed, 707 insertions, 79 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix index 1596c319bd0a..e3b551953fdd 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -255,6 +255,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "LaTeX Project Public License v1.2"; }; + lppl13c = spdx { + spdxId = "LPPL-1.3c"; + fullName = "LaTeX Project Public License v1.3c"; + }; + lpl-102 = spdx { spdxId = "LPL-1.02"; fullName = "Lucent Public License v1.02"; diff --git a/lib/options.nix b/lib/options.nix index ecbd81cd997f..939f9948ceef 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -31,6 +31,23 @@ rec { type = lib.types.bool; }; + # This option accept anything, but it does not produce any result. This + # is useful for sharing a module across different module sets without + # having to implement similar features as long as the value of the options + # are not expected. + mkSinkUndeclaredOptions = attrs: mkOption ({ + internal = true; + visible = false; + default = false; + description = "Sink for option definitions."; + type = mkOptionType { + name = "sink"; + check = x: true; + merge = loc: defs: false; + }; + apply = x: throw "Option value is not readable because the option is not declared."; + } // attrs); + mergeDefaultOption = loc: defs: let list = getValues defs; in if length list == 1 then head list diff --git a/nixos/modules/installer/tools/nixos-option.sh b/nixos/modules/installer/tools/nixos-option.sh index 4478059813d1..17c17d05e288 100644 --- a/nixos/modules/installer/tools/nixos-option.sh +++ b/nixos/modules/installer/tools/nixos-option.sh @@ -13,6 +13,7 @@ usage () { xml=false verbose=false +nixPath="" option="" @@ -26,6 +27,7 @@ for arg; do while test "$sarg" != "-"; do case $sarg in --*) longarg=$arg; sarg="--";; + -I) argfun="include_nixpath";; -*) usage;; esac # remove the first letter option @@ -53,6 +55,9 @@ for arg; do var=$(echo $argfun | sed 's,^set_,,') eval $var=$arg ;; + include_nixpath) + nixPath="-I $arg $nixPath" + ;; esac argfun="" fi @@ -69,20 +74,85 @@ fi ############################# evalNix(){ - result=$(nix-instantiate - --eval-only "$@" 2>&1) + result=$(nix-instantiate ${nixPath:+$nixPath} - --eval-only "$@" 2>&1) if test $? -eq 0; then cat <<EOF $result EOF return 0; else - sed -n '/error/ { s/, at (string):[0-9]*:[0-9]*//; p; }' <<EOF + sed -n ' + /^error/ { s/, at (string):[0-9]*:[0-9]*//; p; }; + /^warning: Nix search path/ { p; }; +' <<EOF $result EOF return 1; fi } +header="let + nixos = import <nixpkgs/nixos> {}; + nixpkgs = import <nixpkgs> {}; +in with nixpkgs.lib; +" + +# This function is used for converting the option definition path given by +# the user into accessors for reaching the definition and the declaration +# corresponding to this option. +generateAccessors(){ + if result=$(evalNix --strict --show-trace <<EOF +$header + +let + path = "${option:+$option}"; + pathList = splitString "." path; + + walkOptions = attrsNames: result: + if attrsNames == [] then + result + else + let name = head attrsNames; rest = tail attrsNames; in + if isOption result.options then + walkOptions rest { + options = result.options.type.getSubOptions ""; + opt = ''(\${result.opt}.type.getSubOptions "")''; + cfg = ''\${result.cfg}."\${name}"''; + } + else + walkOptions rest { + options = result.options.\${name}; + opt = ''\${result.opt}."\${name}"''; + cfg = ''\${result.cfg}."\${name}"''; + } + ; + + walkResult = (if path == "" then x: x else walkOptions pathList) { + options = nixos.options; + opt = ''nixos.options''; + cfg = ''nixos.config''; + }; + +in + ''let option = \${walkResult.opt}; config = \${walkResult.cfg}; in'' +EOF +) + then + echo $result + else + # In case of error we want to ignore the error message roduced by the + # script above, as it is iterating over each attribute, which does not + # produce a nice error message. The following code is a fallback + # solution which is cause a nicer error message in the next + # evaluation. + echo "\"let option = nixos.options${option:+.$option}; config = nixos.config${option:+.$option}; in\"" + fi +} + +header="$header +$(eval echo $(generateAccessors)) +" + evalAttr(){ local prefix="$1" local strict="$2" @@ -92,10 +162,10 @@ evalAttr(){ test -n "$strict" && strict=true evalNix ${strict:+--strict} <<EOF +$header + let - reach = attrs: attrs${option:+.$option}${suffix:+.$suffix}; - nixos = import <nixos> {}; - nixpkgs = import <nixpkgs> {}; + value = $prefix${suffix:+.$suffix}; strict = ${strict:-false}; cleanOutput = x: with nixpkgs.lib; if isDerivation x then x.outPath @@ -106,12 +176,12 @@ let else x else x; in - cleanOutput (reach nixos.$prefix) + cleanOutput value EOF } evalOpt(){ - evalAttr "options" "" "$@" + evalAttr "option" "" "$@" } evalCfg(){ @@ -121,8 +191,11 @@ evalCfg(){ findSources(){ local suffix=$1 - echo "(import <nixos> {}).options${option:+.$option}.$suffix" | - evalNix --strict + evalNix --strict <<EOF +$header + +option.$suffix +EOF } # Given a result from nix-instantiate, recover the list of attributes it @@ -152,13 +225,12 @@ nixMap() { # the output of nixos-option with other tools such as nixos-gui. if $xml; then evalNix --xml --no-location <<EOF +$header + let - reach = attrs: attrs${option:+.$option}; - nixos = import <nixos> {}; - nixpkgs = import <nixpkgs> {}; sources = builtins.map (f: f.source); - opt = reach nixos.options; - cfg = reach nixos.config; + opt = option; + cfg = config; in with nixpkgs.lib; diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 3bb7fdb9b2d6..bf8365e34645 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -173,6 +173,7 @@ peerflix = 163; chronos = 164; gitlab = 165; + tox-bootstrapd = 166; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1005e281f9b7..2c52ebb37bcb 100755 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -286,6 +286,7 @@ ./services/networking/tcpcrypt.nix ./services/networking/teamspeak3.nix ./services/networking/tftpd.nix + ./services/networking/tox-bootstrapd.nix ./services/networking/unbound.nix ./services/networking/unifi.nix ./services/networking/vsftpd.nix diff --git a/nixos/modules/services/audio/mpd.nix b/nixos/modules/services/audio/mpd.nix index e6b525c4b1ba..eab7993387de 100644 --- a/nixos/modules/services/audio/mpd.nix +++ b/nixos/modules/services/audio/mpd.nix @@ -15,7 +15,6 @@ let state_file "${cfg.dataDir}/state" sticker_file "${cfg.dataDir}/sticker.sql" log_file "syslog" - user "mpd" ${if cfg.network.host != "any" then "bind_to_address ${cfg.network.host}" else ""} ${if cfg.network.port != 6600 then @@ -99,6 +98,9 @@ in { path = [ pkgs.mpd ]; preStart = "mkdir -p ${cfg.dataDir} && chown -R mpd:mpd ${cfg.dataDir}"; script = "exec mpd --no-daemon ${mpdConf}"; + serviceConfig = { + User = "mpd"; + }; }; users.extraUsers.mpd = { diff --git a/nixos/modules/services/networking/tox-bootstrapd.nix b/nixos/modules/services/networking/tox-bootstrapd.nix new file mode 100644 index 000000000000..65aa87be44cc --- /dev/null +++ b/nixos/modules/services/networking/tox-bootstrapd.nix @@ -0,0 +1,80 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + home = "/var/lib/tox-bootstrapd"; + PIDFile = "${home}/pid"; + + pkg = pkgs.libtoxcore; + cfg = config.services.toxBootstrapd; + cfgFile = builtins.toFile "tox-bootstrapd.conf" + '' + port = ${toString cfg.port} + keys_file_path = "${home}/keys" + pid_file_path = "${PIDFile}" + ${cfg.extraConfig} + ''; +in +{ + options = + { services.toxBootstrapd = + { enable = mkOption { + type = types.bool; + default = false; + description = + '' + Whether to enable the Tox DHT boostrap daemon. + ''; + }; + + port = mkOption { + type = types.int; + default = 33445; + description = "Listening port (UDP)."; + }; + + keysFile = mkOption { + type = types.str; + default = "${home}/keys"; + description = "Node key file."; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = + '' + Configuration for boostrap daemon. + See <link xlink:href="https://github.com/irungentoo/toxcore/blob/master/other/bootstrap_daemon/tox-bootstrapd.conf"/> + and <link xlink:href="http://wiki.tox.im/Nodes"/>. + ''; + }; + }; + + }; + + config = mkIf config.services.toxBootstrapd.enable { + + users.extraUsers = singleton + { name = "tox-bootstrapd"; + uid = config.ids.uids.tox-bootstrapd; + description = "Tox bootstrap daemon user"; + inherit home; + createHome = true; + }; + + systemd.services.tox-bootstrapd = { + description = "Tox DHT bootstrap daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = + { ExecStart = "${pkg}/bin/tox-bootstrapd ${cfgFile}"; + Type = "forking"; + inherit PIDFile; + User = "tox-bootstrapd"; + }; + }; + + }; +} diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index 8bc8175f88f9..a1b5daa3336d 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -189,7 +189,7 @@ in xserverArgs = mkOption { type = types.listOf types.str; default = []; - example = [ "-ac" "-logverbose" "-nolisten tcp" ]; + example = [ "-ac" "-logverbose" "-verbose" "-nolisten tcp" ]; description = "List of arguments for the X server."; apply = toString; }; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index f911d3c81f90..64e0d4d8050e 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -483,8 +483,6 @@ in services.xserver.displayManager.xserverArgs = [ "-ac" - "-logverbose" - "-verbose" "-terminate" "-logfile" "/var/log/X.${toString cfg.display}.log" "-config ${configFile}" diff --git a/pkgs/applications/audio/easytag/default.nix b/pkgs/applications/audio/easytag/default.nix index d4927cc1a718..2d738f55c286 100644 --- a/pkgs/applications/audio/easytag/default.nix +++ b/pkgs/applications/audio/easytag/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib , libvorbis, libogg, flac, itstool, libxml2, gsettings_desktop_schemas -, makeWrapper, gnome_icon_theme +, makeWrapper, gnome_icon_theme, dconf }: stdenv.mkDerivation rec { @@ -14,7 +14,8 @@ stdenv.mkDerivation rec { preFixup = '' wrapProgram $out/bin/easytag \ - --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" \ + --prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules" ''; NIX_LDFLAGS = "-lid3tag -lz"; @@ -22,7 +23,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ pkgconfig intltool gtk3 glib libid3tag id3lib taglib libvorbis libogg flac - itstool libxml2 gsettings_desktop_schemas gnome_icon_theme + itstool libxml2 gsettings_desktop_schemas gnome_icon_theme dconf ]; meta = { diff --git a/pkgs/applications/audio/pavucontrol/default.nix b/pkgs/applications/audio/pavucontrol/default.nix index 538e1cdf9d0d..8696b1c055d0 100644 --- a/pkgs/applications/audio/pavucontrol/default.nix +++ b/pkgs/applications/audio/pavucontrol/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, intltool, pulseaudio, gtkmm3 -, libcanberra_gtk3 }: +, libcanberra_gtk3, makeWrapper, gnome3 }: stdenv.mkDerivation rec { name = "pavucontrol-2.0"; @@ -9,7 +9,13 @@ stdenv.mkDerivation rec { sha256 = "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2"; }; - buildInputs = [ pulseaudio gtkmm3 libcanberra_gtk3 ]; + preFixup = '' + wrapProgram "$out/bin/pavucontrol" \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" + ''; + + buildInputs = [ pulseaudio gtkmm3 libcanberra_gtk3 makeWrapper + gnome3.gnome_icon_theme ]; nativeBuildInputs = [ pkgconfig intltool ]; diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix index 48044fba1666..223f632f937d 100644 --- a/pkgs/applications/graphics/shotwell/default.nix +++ b/pkgs/applications/graphics/shotwell/default.nix @@ -1,6 +1,6 @@ { fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite, webkitgtk24x , pkgconfig, gnome3, gst_all_1, which, udev, libraw, glib, json_glib, gettext, desktop_file_utils -, lcms2, gdk_pixbuf, librsvg, makeWrapper, gnome_doc_utils }: +, lcms2, gdk_pixbuf, librsvg, makeWrapper, gnome_doc_utils, hicolor_icon_theme }: # for dependencies see http://www.yorba.org/projects/shotwell/install/ @@ -42,7 +42,8 @@ in stdenv.mkDerivation rec { preFixup = '' wrapProgram "$out/bin/shotwell" \ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \ + --prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules" rm $out/share/icons/hicolor/icon-theme.cache ''; @@ -50,7 +51,9 @@ in stdenv.mkDerivation rec { buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x pkgconfig gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee which udev gnome3.gexiv2 libraw rest json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg - makeWrapper gnome_doc_utils ]; + makeWrapper gnome_doc_utils + gnome3.gnome_icon_theme gnome3.gnome_icon_theme_symbolic + hicolor_icon_theme ]; meta = with stdenv.lib; { description = "Popular photo organizer for the GNOME desktop"; diff --git a/pkgs/applications/misc/dunst/default.nix b/pkgs/applications/misc/dunst/default.nix index 039b4ac688bf..33371c93b866 100644 --- a/pkgs/applications/misc/dunst/default.nix +++ b/pkgs/applications/misc/dunst/default.nix @@ -12,11 +12,6 @@ stdenv.mkDerivation rec { sha256 = "0x95f57s0a96c4lifxdpf73v706iggwmdw8742mabbjnxq55l1qs"; }; - patchPhase = '' - substituteInPlace "settings.c" \ - --replace "xdgConfigOpen(\"dunst/dunstrc\", \"r\", &xdg" "fopen(\"$out/share/dunst/dunstrc\", \"r\"" - ''; - buildInputs = [ coreutils unzip which pkgconfig dbus freetype libnotify gdk_pixbuf xdg_utils libXext glib pango cairo libX11 libxdg_basedir diff --git a/pkgs/applications/misc/gqrx/default.nix b/pkgs/applications/misc/gqrx/default.nix index d0a57e4cec27..169331ceb733 100644 --- a/pkgs/applications/misc/gqrx/default.nix +++ b/pkgs/applications/misc/gqrx/default.nix @@ -8,11 +8,11 @@ assert pulseaudioSupport -> pulseaudio != null; stdenv.mkDerivation rec { name = "gqrx-${version}"; - version = "2.3.0"; + version = "2.3.2"; src = fetchurl { url = "mirror://sourceforge/project/gqrx/${version}/${name}.tar.xz"; - sha256 = "0fyfkdd2ailg54ppv1y2fy2c692jmlmsyl1lxr20lyn6bvd9gpyn"; + sha256 = "1vfqqa976xlbapqkpc9nka364zydvsy18xiwfqjy015kpasshdz1"; }; buildInputs = [ diff --git a/pkgs/applications/science/math/maxima/default.nix b/pkgs/applications/science/math/maxima/default.nix index ddd5dc5d6bb4..ffc16a330542 100644 --- a/pkgs/applications/science/math/maxima/default.nix +++ b/pkgs/applications/science/math/maxima/default.nix @@ -2,7 +2,7 @@ let name = "maxima"; - version = "5.34.1"; + version = "5.35.1"; searchPath = stdenv.lib.makeSearchPath "bin" @@ -13,7 +13,7 @@ stdenv.mkDerivation { src = fetchurl { url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz"; - sha256 = "1dw9vfzldpj7lv303xbw0wpyn6ra6i2yzwlrjbcx7j0jm5n43ji0"; + sha256 = "1wwqvay9z6gal7bsyyyhhcwh0fy5ak4h2a446ali0x6zmybaklcy"; }; buildInputs = [sbcl texinfo perl makeWrapper]; @@ -29,10 +29,9 @@ stdenv.mkDerivation { ln -s ../maxima/${version}/doc $out/share/doc/maxima ''; - # Failures in the regression test suite are not going to abort the - # build process. We run the suite mostly so that potential errors show - # up in the build log. See also: - # <http://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933>. + # Failures in the regression test suite won't abort the build process. We run + # the suite only so that potential errors show up in the build log. See also: + # http://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933. doCheck = true; enableParallelBuilding = true; diff --git a/pkgs/applications/science/math/wxmaxima/default.nix b/pkgs/applications/science/math/wxmaxima/default.nix index 06eceea65c95..a73e3dbcec04 100644 --- a/pkgs/applications/science/math/wxmaxima/default.nix +++ b/pkgs/applications/science/math/wxmaxima/default.nix @@ -2,14 +2,14 @@ let name = "wxmaxima"; - version = "14.09.0"; + version = "14.12.1"; in stdenv.mkDerivation { name = "${name}-${version}"; src = fetchurl { url = "mirror://sourceforge/${name}/wxMaxima/${version}/wxmaxima-${version}.tar.gz"; - sha256 = "1wqiw9dgjc9vg94dqk4kif8xs7nlmn34xj3v4zm13fh1jihraksq"; + sha256 = "0sjxvh0y5w5p2xdq3qzz3yhlsigrg3ynib9dkymhynpfnb51x82z"; }; buildInputs = [wxGTK maxima makeWrapper]; diff --git a/pkgs/data/fonts/gyre/default.nix b/pkgs/data/fonts/gyre/default.nix new file mode 100644 index 000000000000..46b947ce77a2 --- /dev/null +++ b/pkgs/data/fonts/gyre/default.nix @@ -0,0 +1,38 @@ +{stdenv, fetchurl, unzip}: + +stdenv.mkDerivation rec { + baseName = "gyre-fonts"; + version = "2.005"; + name="${baseName}-${version}"; + + src = fetchurl { + url = "http://www.gust.org.pl/projects/e-foundry/tex-gyre/whole/tg-2.005otf.zip"; + sha256 = "0kph9l3g7jb2bpmxdbdg5zl56wacmnvdvsdn7is1gc750sqvsn31"; + }; + + buildInputs = [unzip]; + + sourceRoot = "."; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp *.otf $out/share/fonts/truetype + ''; + + meta = { + description = "OpenType fonts from the Gyre project, suitable for use with (La)TeX"; + + longDescription = ''The Gyre project started in 2006, and will + eventually include enhanced releases of all 35 freely available + PostScript fonts distributed with Ghostscript v4.00. These are + being converted to OpenType and extended with diacritical marks + covering all modern European languages and then some''; + + homepage = "http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html#Readings"; + + license = stdenv.lib.licenses.lppl13c; + + platforms = stdenv.lib.platforms.all; + maintainers = with stdenv.lib.maintainers; [ bergey ]; + }; +} diff --git a/pkgs/data/fonts/league-of-moveable-type/default.nix b/pkgs/data/fonts/league-of-moveable-type/default.nix new file mode 100644 index 000000000000..c592ac2d38b8 --- /dev/null +++ b/pkgs/data/fonts/league-of-moveable-type/default.nix @@ -0,0 +1,79 @@ +{stdenv, fetchurl, unzip}: + +stdenv.mkDerivation rec { + baseName = "league-of-moveable-type"; + version = "2014-12"; + name="${baseName}-${version}"; + + srcs = [(fetchurl { + url = "https://www.theleagueofmoveabletype.com/league-gothic/download"; + sha256 = "0nbwsbwhs375kbis3lpk98dw05mnh455vghjg1cq0j2fsj1zb99b"; + name = "league-gothic.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/fanwood/download"; + sha256 = "1023da7hik8ci8s7rcy6lh4h9p6igx1kz9y1a2cv6sizbp819w8g"; + name = "fanwood.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/linden-hill/download"; + sha256 = "0rm92rz9kki91l5wcn149mdpwq1mfql4dv6d159hv534qmg3z3ks"; + name = "linden-hill.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/raleway/download"; + sha256 = "0f6anym0adq0ankqbdqx4lyzbysx824zqdj1x60gafyisjx48y87"; + name = "raleway.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/prociono/download"; + sha256 = "11hamjry5lx3cykzpjq7kwlp6h9cjqy470fmn9f2pi954b46xkdy"; + name = "prociono.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/goudy-bookletter-1911/download"; + sha256 = "01qganq5n7rgqw546lf45kj8j7ymfjr00i2bwp3qw7ibifg9pn4n"; + name = "goudy-bookletter-1911.zip"; + }) + + (fetchurl { + url = "https://www.theleagueofmoveabletype.com/sorts-mill-goudy/download"; + sha256 = "11aywj5lzapk04k2yzi1g96acbbm48x902ka0v9cfwwqpn6js9ra"; + name = "sorts-mill-goudy.zip"; + }) + + +]; + + buildInputs = [unzip]; + + sourceRoot = "."; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp */*.otf $out/share/fonts/truetype + ''; + + + meta = { + description = "Font Collection by The League of Moveable Type"; + + longDescription = '' We're done with the tired old fontstacks of + yesteryear. The web is no longer limited, and now it's time to raise + our standards. Since 2009, The League has given only the most + well-made, free & open-source, @font-face ready fonts. + ''; + + homepage = "https://www.theleagueofmoveabletype.com/"; + + license = stdenv.lib.licenses.ofl; + + platforms = stdenv.lib.platforms.all; + maintainers = with stdenv.lib.maintainers; [ bergey ]; + }; +} diff --git a/pkgs/data/fonts/nafees/default.nix b/pkgs/data/fonts/nafees/default.nix index aa0c1dbd77ba..bcbf57498106 100644 --- a/pkgs/data/fonts/nafees/default.nix +++ b/pkgs/data/fonts/nafees/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation rec { license = "unknown"; platforms = stdenv.lib.platforms.all; - maintainers = [ "Daniel Bergey <bergey@teallabs.org>" ]; + maintainers = with stdenv.lib.maintainers; [ bergey ]; }; } diff --git a/pkgs/development/compilers/rustc/head.nix b/pkgs/development/compilers/rustc/head.nix index cc3fabb244e7..6cc866c63a8a 100644 --- a/pkgs/development/compilers/rustc/head.nix +++ b/pkgs/development/compilers/rustc/head.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, fetchgit, which, file, perl, curl, python27, makeWrapper -, tzdata, git, valgrind +, tzdata, git, valgrind, procps, coreutils }: assert stdenv.gcc.gcc != null; @@ -18,19 +18,19 @@ assert stdenv.gcc.gcc != null; */ -with ((import ./common.nix) {inherit stdenv; version = "0.13.0-pre-1673-g3a325c6";}); +with ((import ./common.nix) {inherit stdenv; version = "0.13.0-pre-2604-g2f3cff6";}); let snapshot = if stdenv.system == "i686-linux" - then "c8342e762a1720be939ed7c6a39bdaa27892f66f" + then "3daf531aed03f5769402f2fef852377e2838db98" else if stdenv.system == "x86_64-linux" - then "7a7fe6f5ed47b9cc66261f880e166c7c8738b73e" + then "4f3c8b092dd4fe159d6f25a217cf62e0e899b365" else if stdenv.system == "i686-darwin" - then "63e8644512bd5665c14389a83d5af564c7c0b103" + then "2a3e647b9c400505bd49cfe56091e866c83574ca" else if stdenv.system == "x86_64-darwin" - then "7933ae0e974d1b897806138b7052cb2b4514585f" + then "5e730efc34d79a33f464a87686c10eace0760a2e" else abort "no-snapshot for platform ${stdenv.system}"; - snapshotDate = "2014-11-21"; - snapshotRev = "c9f6d69"; + snapshotDate = "2014-12-20"; + snapshotRev = "8443b09"; snapshotName = "rust-stage0-${snapshotDate}-${snapshotRev}-${platform}-${snapshot}.tar.bz2"; in stdenv.mkDerivation { @@ -40,8 +40,8 @@ in stdenv.mkDerivation { src = fetchgit { url = https://github.com/rust-lang/rust; - rev = "3a325c666d2cb7e297bf3057ff2442f96a79428b"; - sha256 = "0a0byglfaf0wfsnlm53vng1gqkkz4i29zphdwqg93v26mciqqc61"; + rev = "2f3cff6956d56048ef7afb6d33e17cbdb2dcf038"; + sha256 = "113y74sd1gr7f0xs1lsgjw3jkvhz8s4dxx34r9cxlw5vjr7fp066"; }; # We need rust to build rust. If we don't provide it, configure will try to download it. @@ -73,9 +73,12 @@ in stdenv.mkDerivation { --subst-var-by "ccPath" "${stdenv.gcc}/bin/cc" substituteInPlace src/librustc_back/archive.rs \ --subst-var-by "arPath" "${stdenv.gcc.binutils}/bin/ar" + + substituteInPlace src/rust-installer/gen-install-script.sh \ + --replace /bin/echo "${coreutils}/bin/echo" ''; - buildInputs = [ which file perl curl python27 makeWrapper git valgrind ]; + buildInputs = [ which file perl curl python27 makeWrapper git valgrind procps ]; enableParallelBuilding = false; # disabled due to rust-lang/rust#16305 diff --git a/pkgs/development/libraries/jasper/default.nix b/pkgs/development/libraries/jasper/default.nix index ed51a0a28206..94e6cba4ee4c 100644 --- a/pkgs/development/libraries/jasper/default.nix +++ b/pkgs/development/libraries/jasper/default.nix @@ -8,13 +8,19 @@ stdenv.mkDerivation rec { sha256 = "154l7zk7yh3v8l2l6zm5s2alvd2fzkp6c9i18iajfbna5af5m43b"; }; + patches = [ + ./jasper-CVE-2014-8137-variant2.diff ./jasper-CVE-2014-8137-noabort.diff + ./jasper-CVE-2014-8138.diff + ./jasper-CVE-2014-9029.diff + ]; + nativeBuildInputs = [unzip]; propagatedBuildInputs = [ libjpeg ]; configureFlags = "--enable-shared"; meta = { - homepage = http://www.ece.uvic.ca/~mdadams/jasper/; + homepage = https://www.ece.uvic.ca/~frodo/jasper/; description = "JPEG2000 Library"; }; } diff --git a/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-noabort.diff b/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-noabort.diff new file mode 100644 index 000000000000..47b57d5c8098 --- /dev/null +++ b/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-noabort.diff @@ -0,0 +1,16 @@ +From RedHat: https://bugzilla.redhat.com/attachment.cgi?id=967284&action=diff + +--- jasper-1.900.1.orig/src/libjasper/jp2/jp2_dec.c 2014-12-11 14:30:54.193209780 +0100 ++++ jasper-1.900.1/src/libjasper/jp2/jp2_dec.c 2014-12-11 14:36:46.313217814 +0100 +@@ -291,7 +291,10 @@ jas_image_t *jp2_decode(jas_stream_t *in + case JP2_COLR_ICC: + iccprof = jas_iccprof_createfrombuf(dec->colr->data.colr.iccp, + dec->colr->data.colr.iccplen); +- assert(iccprof); ++ if (!iccprof) { ++ jas_eprintf("error: failed to parse ICC profile\n"); ++ goto error; ++ } + jas_iccprof_gethdr(iccprof, &icchdr); + jas_eprintf("ICC Profile CS %08x\n", icchdr.colorspc); + jas_image_setclrspc(dec->image, fromiccpcs(icchdr.colorspc)); diff --git a/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-variant2.diff b/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-variant2.diff new file mode 100644 index 000000000000..243300dd70ee --- /dev/null +++ b/pkgs/development/libraries/jasper/jasper-CVE-2014-8137-variant2.diff @@ -0,0 +1,45 @@ +From RedHat: https://bugzilla.redhat.com/attachment.cgi?id=967283&action=diff + +--- jasper-1.900.1.orig/src/libjasper/base/jas_icc.c 2014-12-11 14:06:44.000000000 +0100 ++++ jasper-1.900.1/src/libjasper/base/jas_icc.c 2014-12-11 15:16:37.971272386 +0100 +@@ -1009,7 +1009,6 @@ static int jas_icccurv_input(jas_iccattr + return 0; + + error: +- jas_icccurv_destroy(attrval); + return -1; + } + +@@ -1127,7 +1126,6 @@ static int jas_icctxtdesc_input(jas_icca + #endif + return 0; + error: +- jas_icctxtdesc_destroy(attrval); + return -1; + } + +@@ -1206,8 +1204,6 @@ static int jas_icctxt_input(jas_iccattrv + goto error; + return 0; + error: +- if (txt->string) +- jas_free(txt->string); + return -1; + } + +@@ -1328,7 +1324,6 @@ static int jas_icclut8_input(jas_iccattr + goto error; + return 0; + error: +- jas_icclut8_destroy(attrval); + return -1; + } + +@@ -1497,7 +1492,6 @@ static int jas_icclut16_input(jas_iccatt + goto error; + return 0; + error: +- jas_icclut16_destroy(attrval); + return -1; + } + diff --git a/pkgs/development/libraries/jasper/jasper-CVE-2014-8138.diff b/pkgs/development/libraries/jasper/jasper-CVE-2014-8138.diff new file mode 100644 index 000000000000..cbf0899d807a --- /dev/null +++ b/pkgs/development/libraries/jasper/jasper-CVE-2014-8138.diff @@ -0,0 +1,16 @@ +From RedHat: https://bugzilla.redhat.com/attachment.cgi?id=967280&action=diff + +--- jasper-1.900.1.orig/src/libjasper/jp2/jp2_dec.c 2014-12-11 14:06:44.000000000 +0100 ++++ jasper-1.900.1/src/libjasper/jp2/jp2_dec.c 2014-12-11 14:06:26.000000000 +0100 +@@ -386,6 +386,11 @@ jas_image_t *jp2_decode(jas_stream_t *in + /* Determine the type of each component. */ + if (dec->cdef) { + for (i = 0; i < dec->numchans; ++i) { ++ /* Is the channel number reasonable? */ ++ if (dec->cdef->data.cdef.ents[i].channo >= dec->numchans) { ++ jas_eprintf("error: invalid channel number in CDEF box\n"); ++ goto error; ++ } + jas_image_setcmpttype(dec->image, + dec->chantocmptlut[dec->cdef->data.cdef.ents[i].channo], + jp2_getct(jas_image_clrspc(dec->image), diff --git a/pkgs/development/libraries/jasper/jasper-CVE-2014-9029.diff b/pkgs/development/libraries/jasper/jasper-CVE-2014-9029.diff new file mode 100644 index 000000000000..01db7f03cdf8 --- /dev/null +++ b/pkgs/development/libraries/jasper/jasper-CVE-2014-9029.diff @@ -0,0 +1,31 @@ +From RedHat: https://bugzilla.redhat.com/attachment.cgi?id=961994&action=diff + +--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_dec.c 2014-11-27 12:45:44.000000000 +0100 ++++ jasper-1.900.1/src/libjasper/jpc/jpc_dec.c 2014-11-27 12:44:58.000000000 +0100 +@@ -1281,7 +1281,7 @@ static int jpc_dec_process_coc(jpc_dec_t + jpc_coc_t *coc = &ms->parms.coc; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, coc->compno) > dec->numcomps) { ++ if (JAS_CAST(int, coc->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in COC marker segment\n"); + return -1; + } +@@ -1307,7 +1307,7 @@ static int jpc_dec_process_rgn(jpc_dec_t + jpc_rgn_t *rgn = &ms->parms.rgn; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, rgn->compno) > dec->numcomps) { ++ if (JAS_CAST(int, rgn->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in RGN marker segment\n"); + return -1; + } +@@ -1356,7 +1356,7 @@ static int jpc_dec_process_qcc(jpc_dec_t + jpc_qcc_t *qcc = &ms->parms.qcc; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, qcc->compno) > dec->numcomps) { ++ if (JAS_CAST(int, qcc->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in QCC marker segment\n"); + return -1; + } diff --git a/pkgs/development/libraries/libtoxcore/default.nix b/pkgs/development/libraries/libtoxcore/default.nix index d569cf28c37c..de224f6b613b 100644 --- a/pkgs/development/libraries/libtoxcore/default.nix +++ b/pkgs/development/libraries/libtoxcore/default.nix @@ -1,17 +1,18 @@ -{ stdenv, fetchurl, autoconf, libtool, automake, libsodium, ncurses, libopus +{ stdenv, fetchFromGitHub, autoconf, libtool, automake, libsodium, ncurses, libopus , libvpx, check, libconfig, pkgconfig }: let version = "f6b3e6e8fe98d2457827ac6da944e715f008a08a"; - date = "20141203"; + date = "20141219"; in stdenv.mkDerivation rec { - name = "tox-core-${date}-${version}"; + name = "tox-core-${date}-${builtins.substring 0 7 version}"; - src = fetchurl { - url = "https://github.com/irungentoo/toxcore/tarball/${version}"; - name = "${name}.tar.gz"; - sha256 = "1zsx7saqs25vva3pp0bw31yqzrn40fx84w42ig6fiv723k9gpdzy"; + src = fetchFromGitHub { + owner = "irungentoo"; + repo = "toxcore"; + rev = version; + sha256 = "1wd817kix3zjyzzb68jz02iir3z4y5k5p40dgl7a29757yb9m608"; }; NIX_LDFLAGS = "-lgcc_s"; @@ -33,6 +34,7 @@ stdenv.mkDerivation rec { "--with-libsodium-headers=${libsodium}/include" "--with-libsodium-libs=${libsodium}/lib" "--enable-ntox" + "--enable-daemon" ]; buildInputs = [ diff --git a/pkgs/development/python-modules/sip/4.16.nix b/pkgs/development/python-modules/sip/4.16.nix index 210346062f9e..b10852d17f39 100644 --- a/pkgs/development/python-modules/sip/4.16.nix +++ b/pkgs/development/python-modules/sip/4.16.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, python, isPyPy }: if isPyPy then throw "sip not supported for interpreter ${python.executable}" else stdenv.mkDerivation rec { - name = "sip-4.16.1"; + name = "sip-4.16.4"; src = fetchurl { url = "mirror://sourceforge/pyqt/sip/${name}/${name}.tar.gz"; - sha256 = "1hknl71ij924syc9ik9nk4z051q3n75y7w27q9i07awpd39sp7m4"; + sha256 = "1xapklcz5ndilax0gr2h1fqzhdzh7yvxfb3y0rxfcag1qlzl9nnf"; }; configurePhase = '' diff --git a/pkgs/development/tools/build-managers/cargo/common.nix b/pkgs/development/tools/build-managers/cargo/common.nix index 447aed275700..0eb728bad28e 100644 --- a/pkgs/development/tools/build-managers/cargo/common.nix +++ b/pkgs/development/tools/build-managers/cargo/common.nix @@ -14,16 +14,16 @@ rec { else throw "no snapshot to boostrap for this platform (missing platform url suffix)"; snapshotHash = if stdenv.system == "i686-linux" - then "3204c8a38721199f69d2971db887d1dc71a63825" + then "4dea04e278192c5409f43794a98f20a8f59df2d9" else if stdenv.system == "x86_64-linux" - then "39ca0d02eac184bc764ff9c1f645ca361715c5c2" + then "3e48c573d3c4d26591feb7bfe988174720f08374" else if stdenv.system == "i686-darwin" - then "ebc1836424c4b3ba49f9adef271c50d2a8e134c0" + then "dc3d498c0567af4a0820e91756dcfff8fde0efac" else if stdenv.system == "x86_64-darwin" - then "a2045e95984b65eab4a704152566f8ab9a3be518" + then "f301bd8c3c93a5c88698c69190e464af1525ac96" else throw "no snapshot for platform ${stdenv.system}"; - snapshotDate = "2014-11-22"; + snapshotDate = "2014-12-21"; snapshotName = "cargo-nightly-${platform}.tar.gz"; snapshot = stdenv.mkDerivation { diff --git a/pkgs/games/openttd/default.nix b/pkgs/games/openttd/default.nix index a1af42814d12..d8ae07705c63 100644 --- a/pkgs/games/openttd/default.nix +++ b/pkgs/games/openttd/default.nix @@ -17,6 +17,12 @@ stdenv.mkDerivation rec { "--without-liblzo2" ]; + # NOTE: Remove this patch in 1.4.5 or greater + patches = [ + # Adapted from svn r27079 + ./fix-freetype-1.4.4.patch + ]; + makeFlags = "INSTALL_PERSONAL_DIR="; postInstall = '' diff --git a/pkgs/games/openttd/fix-freetype-1.4.4.patch b/pkgs/games/openttd/fix-freetype-1.4.4.patch new file mode 100644 index 000000000000..37706ce05c96 --- /dev/null +++ b/pkgs/games/openttd/fix-freetype-1.4.4.patch @@ -0,0 +1,31 @@ +diff --git a/src/fontcache.cpp b/src/fontcache.cpp +=================================================================== +--- a/src/fontcache.cpp ++++ b/src/fontcache.cpp +@@ -537,6 +537,6 @@ + + /* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */ +- int width = max(1, slot->bitmap.width + (this->fs == FS_NORMAL)); +- int height = max(1, slot->bitmap.rows + (this->fs == FS_NORMAL)); ++ unsigned int width = max(1U, (unsigned int)slot->bitmap.width + (this->fs == FS_NORMAL)); ++ unsigned int height = max(1U, (unsigned int)slot->bitmap.rows + (this->fs == FS_NORMAL)); + + /* Limit glyph size to prevent overflows later on. */ +@@ -554,6 +554,6 @@ + /* Draw shadow for medium size */ + if (this->fs == FS_NORMAL && !aa) { +- for (int y = 0; y < slot->bitmap.rows; y++) { +- for (int x = 0; x < slot->bitmap.width; x++) { ++ for (unsigned int y = 0; y < (unsigned int)slot->bitmap.rows; y++) { ++ for (unsigned int x = 0; x < (unsigned int)slot->bitmap.width; x++) { + if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { + sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR; +@@ -564,6 +564,6 @@ + } + +- for (int y = 0; y < slot->bitmap.rows; y++) { +- for (int x = 0; x < slot->bitmap.width; x++) { ++ for (unsigned int y = 0; y < (unsigned int)slot->bitmap.rows; y++) { ++ for (unsigned int x = 0; x < (unsigned int)slot->bitmap.width; x++) { + if (aa ? (slot->bitmap.buffer[x + y * slot->bitmap.pitch] > 0) : HasBit(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) { + sprite.data[x + y * sprite.width].m = FACE_COLOUR; diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index dc9e17fbc65e..561eadf2f21a 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -61,16 +61,16 @@ rec { grsecurity_stable = grsecPatch { kversion = "3.14.27"; - revision = "201412170659"; + revision = "201412211908"; branch = "stable"; - sha256 = "0a6zyq1wvpkny7bwvjqqpvn9i87cidpjld7cn04wd1n0w1h4zyb3"; + sha256 = "1xs34v1k970sv4i0a9qjcgk7i4cihl2xlgp1q7v320idpxrcym3a"; }; grsecurity_unstable = grsecPatch { kversion = "3.17.7"; - revision = "201412170700"; + revision = "201412211910"; branch = "test"; - sha256 = "0ljwzn1c13ljmc1mylaxlqpiygs8h79nd657kcbrv65yd7823wb6"; + sha256 = "1s3ksf44mah398ix4ar49m6d8xwkk991pl1m8m441yhpm8h1ss3w"; }; grsec_fix_path = diff --git a/pkgs/servers/monitoring/newrelic-sysmond/default.nix b/pkgs/servers/monitoring/newrelic-sysmond/default.nix new file mode 100644 index 000000000000..7551bdf96692 --- /dev/null +++ b/pkgs/servers/monitoring/newrelic-sysmond/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl }: + +assert stdenv.system == "x86_64-linux"; + +stdenv.mkDerivation rec { + name = "newrelic-sysmond-1.5.1.93"; + + src = fetchurl { + url = "http://download.newrelic.com/server_monitor/release/newrelic-sysmond-1.5.1.93-linux.tar.gz"; + + sha256 = "1bfwyczcf7pvji8lx566jxgy8dhyf1gmqmi64lj10673a86axnwz"; + }; + + installPhase = '' + mkdir -p $out/bin + install -v -m755 daemon/nrsysmond.x64 $out/bin/nrsysmond + patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + $out/bin/nrsysmond + ''; + + meta = { + homepage = http://newrelic.com/; + + description = "System-wide monitoring for newrelic"; + + license = stdenv.lib.licenses.unfree; + + maintainers = [ stdenv.lib.maintainers.shlevy ]; + }; +} diff --git a/pkgs/tools/backup/attic/default.nix b/pkgs/tools/backup/attic/default.nix index f63c609c26d0..e9a8ca466129 100644 --- a/pkgs/tools/backup/attic/default.nix +++ b/pkgs/tools/backup/attic/default.nix @@ -6,7 +6,7 @@ python3Packages.buildPythonPackage rec { src = fetchurl { url = "https://github.com/jborg/attic/archive/0.14.tar.gz"; - sha256 = "929da4b2e900770cd31558e87074ade347b44937c944218549259ea64646f203"; + sha256 = "0zabh6cq7v1aml83y2r475vvy3mmmjbvkijk0bnyfx73z8hmsa3z"; }; propagatedBuildInputs = with python3Packages; diff --git a/pkgs/tools/misc/pipelight/default.nix b/pkgs/tools/misc/pipelight/default.nix index 42882c2701a7..5ead0e7c8bab 100644 --- a/pkgs/tools/misc/pipelight/default.nix +++ b/pkgs/tools/misc/pipelight/default.nix @@ -3,13 +3,13 @@ }: let - wine_patches_version = "1.7.30"; - wine_hash = "0v08w2av46y4wxrl8q4k9fhbi2cgawjaxclahqnpfw098bqcmxqh"; + wine_patches_version = "1.7.33"; + wine_hash = "0xcjsh3635i8wpzixzsl05m3dkq74vq193x3ipjr3fy0l9prslg3"; wine_patches = fetchgit { url = "git://github.com/compholio/wine-compholio.git"; rev = "refs/tags/v${wine_patches_version}"; - sha256 = "02i0bpxxiyxavlcd5qm7wv0q4bm9bxr3ng3w2k234ww7cyndm0ws"; + sha256 = "09af0cwdskz4clps39f48cp4lzm41kdzg30q8b511nyl0dppd75r"; }; wine_custom = @@ -45,13 +45,13 @@ let in stdenv.mkDerivation rec { - version = "0.2.7.3"; + version = "0.2.8"; name = "pipelight-${version}"; src = fetchurl { url = "https://bitbucket.org/mmueller2012/pipelight/get/v${version}.tar.gz"; - sha256 = "0lifgs3aakyxfk6r2f2p27z0iqzgz1dinqfgwx3vdh3l93s8aifv"; + sha256 = "1i440rf22fmd2w86dlm1mpi3nb7410rfczc0yldnhgsvp5p3sm5f"; }; buildInputs = [ wine_custom xlibs.libX11 gcc48_multi mesa curl ]; diff --git a/pkgs/tools/misc/trash-cli/default.nix b/pkgs/tools/misc/trash-cli/default.nix new file mode 100644 index 000000000000..8650b9ff67dd --- /dev/null +++ b/pkgs/tools/misc/trash-cli/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, substituteAll, coreutils, python2, python2Packages }: + +python2Packages.buildPythonPackage rec { + name = "trash-cli-${version}"; + version = "0.12.9.14"; + namePrefix = ""; + + src = fetchurl { + url = "https://github.com/andreafrancia/trash-cli/archive/${version}.tar.gz"; + sha256 = "10idvzrlppj632pw6mpk1zy9arn1x4lly4d8nfy9cz4zqv06lhvh"; + }; + + + patches = [ + # Fix paths. + (substituteAll { + src = ./nix-paths.patch; + df = "${coreutils}/bin/df"; + python = "${python2}/bin/${python2.executable}"; + libc = "${stdenv.gcc.libc}/lib/libc.so.6"; + }) + + # Apply https://github.com/JaviMerino/trash-cli/commit/4f45a37a3 + # to fix failing test case. + ./fix_should_output_info_for_multiple_files.patch + ]; + + buildInputs = with python2Packages; [ nose mock ]; + + checkPhase = "nosetests"; + + meta = with stdenv.lib; { + homepage = https://github.com/andreafrancia/trash-cli; + description = "Command line tool for the desktop trash can"; + maintainer = [ maintainers.rycee ]; + license = licenses.gpl2; + }; +} diff --git a/pkgs/tools/misc/trash-cli/fix_should_output_info_for_multiple_files.patch b/pkgs/tools/misc/trash-cli/fix_should_output_info_for_multiple_files.patch new file mode 100644 index 000000000000..17947be74824 --- /dev/null +++ b/pkgs/tools/misc/trash-cli/fix_should_output_info_for_multiple_files.patch @@ -0,0 +1,60 @@ +From 4f45a37a390d7c844dd9c9b58fff7259a77ffff9 Mon Sep 17 00:00:00 2001 +From: Javi Merino <merino.jav@gmail.com> +Date: Sun, 31 Aug 2014 05:45:17 -0700 +Subject: [PATCH] Fix should_output_info_for_multiple_files + +Test should_output_info_for_multiple_files fails because the output is +not in the same order as the input. Add assert_equal_any_order() to +the OutputCollector, which sorts the expected and actual lines so that +the output matches even if the order in which they are shown in +trash-list is different. +--- + integration_tests/describe_trash_list.py | 8 +++++--- + integration_tests/output_collector.py | 8 ++++++++ + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/integration_tests/describe_trash_list.py b/integration_tests/describe_trash_list.py +index 6dd8d30..3489a22 100644 +--- a/integration_tests/describe_trash_list.py ++++ b/integration_tests/describe_trash_list.py +@@ -73,9 +73,9 @@ def should_output_info_for_multiple_files(self): + + self.user.run_trash_list() + +- self.user.should_read_output( "2000-01-01 00:00:01 /file1\n" +- "2000-01-01 00:00:02 /file2\n" +- "2000-01-01 00:00:03 /file3\n") ++ self.user.should_read_output_any_order( "2000-01-01 00:00:01 /file1\n" ++ "2000-01-01 00:00:02 /file2\n" ++ "2000-01-01 00:00:03 /file3\n") + + @istest + def should_output_unknown_dates_with_question_marks(self): +@@ -294,6 +294,8 @@ def error(self): + raise ValueError() + def should_read_output(self, expected_value): + self.stdout.assert_equal_to(expected_value) ++ def should_read_output_any_order(self, expected_value): ++ self.stdout.assert_equal_any_order(expected_value) + def should_read_error(self, expected_value): + self.stderr.assert_equal_to(expected_value) + def output(self): +diff --git a/integration_tests/output_collector.py b/integration_tests/output_collector.py +index 06dc002..7f3704f 100644 +--- a/integration_tests/output_collector.py ++++ b/integration_tests/output_collector.py +@@ -9,6 +9,14 @@ def write(self,data): + self.stream.write(data) + def assert_equal_to(self, expected): + return self.should_be(expected) ++ def assert_equal_any_order(self, expected): ++ actual_sorted = sorted(self.stream.getvalue().splitlines(1)) ++ actual = "".join(actual_sorted) ++ ++ expected_sorted = sorted(expected.splitlines(1)) ++ expected = "".join(expected_sorted) ++ ++ assert_equals_with_unidiff(expected, actual) + def should_be(self, expected): + assert_equals_with_unidiff(expected, self.stream.getvalue()) + def should_match(self, regex): diff --git a/pkgs/tools/misc/trash-cli/nix-paths.patch b/pkgs/tools/misc/trash-cli/nix-paths.patch new file mode 100644 index 000000000000..29412027b7a5 --- /dev/null +++ b/pkgs/tools/misc/trash-cli/nix-paths.patch @@ -0,0 +1,39 @@ +diff -Nurp trash-cli-0.12.9.14-orig/integration_tests/test_trash_rm_script.py trash-cli-0.12.9.14/integration_tests/test_trash_rm_script.py +--- trash-cli-0.12.9.14-orig/integration_tests/test_trash_rm_script.py 2014-12-23 10:10:43.808470486 +0100 ++++ trash-cli-0.12.9.14/integration_tests/test_trash_rm_script.py 2014-12-23 10:11:02.688517975 +0100 +@@ -9,7 +9,7 @@ from pprint import pprint + @istest + class WhenNoArgs: + def setUp(self): +- process = Popen(['python', 'trashcli/rm.py'], ++ process = Popen(['@python@', 'trashcli/rm.py'], + env={'PYTHONPATH':'.'}, + stdin=None, + stdout=PIPE, +diff -Nurp trash-cli-0.12.9.14-orig/trashcli/list_mount_points.py trash-cli-0.12.9.14/trashcli/list_mount_points.py +--- trash-cli-0.12.9.14-orig/trashcli/list_mount_points.py 2014-12-23 10:10:43.808470486 +0100 ++++ trash-cli-0.12.9.14/trashcli/list_mount_points.py 2014-12-23 10:19:04.954796457 +0100 +@@ -12,7 +12,7 @@ def mount_points_from_getmnt(): + + def mount_points_from_df(): + import subprocess +- df_output = subprocess.Popen(["df", "-P"], stdout=subprocess.PIPE).stdout ++ df_output = subprocess.Popen(["@df@", "-P"], stdout=subprocess.PIPE).stdout + return list(_mount_points_from_df_output(df_output)) + + def _mount_points_from_df_output(df_output): +@@ -46,13 +46,7 @@ def _mounted_filesystems_from_getmnt() : + ("mnt_freq", c_int), # Dump frequency (in days). + ("mnt_passno", c_int)] # Pass number for `fsck'. + +- if sys.platform == "cygwin": +- libc_name = "cygwin1.dll" +- else: +- libc_name = find_library("c") +- +- if libc_name == None : +- libc_name="/lib/libc.so.6" # fix for my Gentoo 4.0 ++ libc_name = "@libc@" + + libc = cdll.LoadLibrary(libc_name) + libc.getmntent.restype = POINTER(mntent_struct) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 43137bb4e1b7..454398bed5cf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2581,6 +2581,8 @@ let traceroute = callPackage ../tools/networking/traceroute { }; + trash-cli = callPackage ../tools/misc/trash-cli { }; + trickle = callPackage ../tools/networking/trickle {}; trousers = callPackage ../tools/security/trousers { }; @@ -7761,6 +7763,8 @@ let net_snmp = callPackage ../servers/monitoring/net-snmp { }; + newrelic-sysmond = callPackage ../servers/monitoring/newrelic-sysmond { }; + riemann = callPackage ../servers/monitoring/riemann { }; oidentd = callPackage ../servers/identd/oidentd { }; @@ -8906,6 +8910,8 @@ let inherit (gnome3) gsettings_desktop_schemas; + gyre-fonts = callPackage ../data/fonts/gyre {}; + hicolor_icon_theme = callPackage ../data/icons/hicolor-icon-theme { }; inconsolata = callPackage ../data/fonts/inconsolata {}; @@ -8918,6 +8924,8 @@ let kochi-substitute-naga10 = callPackage ../data/fonts/kochi-substitute-naga10 {}; + league-of-moveable-type = callPackage ../data/fonts/league-of-moveable-type {}; + liberation_ttf_from_source = callPackage ../data/fonts/redhat-liberation-fonts { }; liberation_ttf_binary = callPackage ../data/fonts/redhat-liberation-fonts/binary.nix { }; liberation_ttf = liberation_ttf_binary; @@ -10285,7 +10293,7 @@ let }; easytag = callPackage ../applications/audio/easytag { - inherit (gnome3) gnome_icon_theme; + inherit (gnome3) gnome_icon_theme dconf; }; mp3gain = callPackage ../applications/audio/mp3gain { }; |