diff --git a/.travis.yml b/.travis.yml index f29f71aa19f1..07e8006aa9ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,20 @@ +language: nix matrix: - allow_failures: - - os: osx include: - os: linux - language: generic + sudo: false + script: + - ./maintainers/scripts/travis-nox-review-pr.sh nixpkgs-verify nixpkgs-manual nixpkgs-tarball + - ./maintainers/scripts/travis-nox-review-pr.sh nixos-options nixos-manual + - os: linux sudo: required dist: trusty + script: ./maintainers/scripts/travis-nox-review-pr.sh pr - os: osx - language: generic osx_image: xcode7.3 -before_install: ./maintainers/scripts/travis-nox-review-pr.sh nix -install: ./maintainers/scripts/travis-nox-review-pr.sh nox -script: ./maintainers/scripts/travis-nox-review-pr.sh build + script: ./maintainers/scripts/travis-nox-review-pr.sh pr +git: + depth: 1 +env: + global: + - GITHUB_TOKEN=5edaaf1017f691ed34e7f80878f8f5fbd071603f diff --git a/README.md b/README.md index c3187f204624..237ec72223c5 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ For pull-requests, please rebase onto nixpkgs `master`. * [Documentation (Nix Expression Language chapter)](https://nixos.org/nix/manual/#ch-expression-language) * [Manual (How to write packages for Nix)](https://nixos.org/nixpkgs/manual/) * [Manual (NixOS)](https://nixos.org/nixos/manual/) -* [Nix Wiki](https://nixos.org/wiki/) +* [Nix Wiki](https://nixos.org/wiki/) (deprecated, see milestone ["Move the Wiki!"](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+milestone%3A%22Move+the+wiki%21%22)) * [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined) * [Continuous package builds for 16.03 release](https://hydra.nixos.org/jobset/nixos/release-16.03) * [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents) diff --git a/default.nix b/default.nix index c384a5bb6946..8171f4149d2f 100644 --- a/default.nix +++ b/default.nix @@ -6,4 +6,4 @@ if ! builtins ? nixVersion || builtins.compareVersions requiredVersion builtins. else - import ./pkgs/top-level + import ./pkgs/top-level/impure.nix diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 3d83a0a3a1c0..56816bb206c2 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -163,6 +163,7 @@ guibert = "David Guibert "; havvy = "Ryan Scheel "; hbunke = "Hendrik Bunke "; + hce = "Hans-Christian Esperer "; henrytill = "Henry Till "; hiberno = "Christian Lask "; hinton = "Tom Hinton "; @@ -356,6 +357,7 @@ sheganinans = "Aistis Raulinaitis "; shell = "Shell Turner "; shlevy = "Shea Levy "; + siddharthist = "Langston Barrett "; simonvandel = "Simon Vandel Sillesen "; sjagoe = "Simon Jagoe "; sjmackenzie = "Stewart Mackenzie "; diff --git a/maintainers/scripts/travis-nox-review-pr.sh b/maintainers/scripts/travis-nox-review-pr.sh index 092fc0cd9d07..386868301a25 100755 --- a/maintainers/scripts/travis-nox-review-pr.sh +++ b/maintainers/scripts/travis-nox-review-pr.sh @@ -1,58 +1,69 @@ #! /usr/bin/env bash set -e -export NIX_CURL_FLAGS=-sS +while test -n "$1"; do -if [[ $1 == nix ]]; then - echo "=== Installing Nix..." - # Install Nix - bash <(curl -sS https://nixos.org/nix/install) - source $HOME/.nix-profile/etc/profile.d/nix.sh + # tell Travis to use folding + echo -en "travis_fold:start:$1\r" - # Make sure we can use hydra's binary cache - sudo mkdir /etc/nix - sudo sh -c 'echo "build-max-jobs = 4" > /etc/nix/nix.conf' + case $1 in - # Verify evaluation - echo "=== Verifying that nixpkgs evaluates..." - nix-env -f. -qa --json >/dev/null -elif [[ $1 == nox ]]; then - source $HOME/.nix-profile/etc/profile.d/nix.sh - echo "=== Installing nox..." - nix-build -A nox '' --show-trace -elif [[ $1 == build ]]; then - source $HOME/.nix-profile/etc/profile.d/nix.sh + nixpkgs-verify) + echo "=== Verifying that nixpkgs evaluates..." - if [[ $TRAVIS_OS_NAME == "osx" ]]; then - echo "Skipping NixOS things on darwin" - else - # Nix builds in /tmp and we need exec support - sudo mount -o remount,exec /run - sudo mount -o remount,exec /run/user - sudo mount + nix-env --file $TRAVIS_BUILD_DIR --query --available --json > /dev/null + ;; - echo "=== Checking NixOS options" - nix-build nixos/release.nix -A options --show-trace + nixos-options) + echo "=== Checking NixOS options" - echo "=== Checking tarball creation" - nix-build pkgs/top-level/release.nix -A tarball --show-trace - fi + nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr options --show-trace + ;; - if [[ $TRAVIS_PULL_REQUEST == false ]]; then - echo "=== Not a pull request" - else - echo "=== Checking PR" + nixos-manual) + echo "=== Checking NixOS manuals" - if ! nix-shell -p nox --run "nox-review pr ${TRAVIS_PULL_REQUEST}"; then - if sudo dmesg | egrep 'Out of memory|Killed process' > /tmp/oom-log; then - echo "=== The build failed due to running out of memory:" - cat /tmp/oom-log - echo "=== Please disregard the result of this Travis build." + nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr manual --show-trace + ;; + + nixpkgs-manual) + echo "=== Checking nixpkgs manuals" + + nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr manpages --show-trace + ;; + + nixpkgs-tarball) + echo "=== Checking nixpkgs tarball creation" + + nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr tarball --show-trace + ;; + + nixpkgs-lint) + echo "=== Checking nixpkgs lint" + + nix-shell --packages nixpkgs-lint --run "nixpkgs-lint -f $TRAVIS_BUILD_DIR" + ;; + + pr) + if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + echo "=== No pull request found" + else + echo "=== Building pull request #$TRAVIS_PULL_REQUEST" + + token="" + if [ -n "$GITHUB_TOKEN" ]; then + token="--token $GITHUB_TOKEN" + fi + + nix-shell --packages nox git --run "nox-review pr --slug $TRAVIS_REPO_SLUG $token $TRAVIS_PULL_REQUEST" -I nixpkgs=$TRAVIS_BUILD_DIR fi - exit 1 - fi - fi -else - echo "$0: Unknown option $1" >&2 - false -fi + ;; + + *) + echo "Skipping unknown option $1" + ;; + esac + + echo -en "travis_fold:end:$1\r" + shift +done diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix index 47d7cc5924d4..02568f9de51e 100644 --- a/nixos/modules/config/fonts/fontconfig-ultimate.nix +++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix @@ -3,84 +3,6 @@ with lib; let fcBool = x: if x then "true" else "false"; - cfg = config.fonts.fontconfig.ultimate; - fontconfigUltimateConf = pkgs.writeText "ultimate-conf" '' - - - - - ${optionalString (!cfg.allowBitmaps) '' - - - - - false - - - - ''} - - ${optionalString cfg.allowType1 '' - - - - - - Type 1 - - - - - ''} - - - - - ${fcBool cfg.useEmbeddedBitmaps} - - - - - - - ${fcBool cfg.forceAutohint} - - - - - - - ${fcBool cfg.renderMonoTTFAsBitmap} - - - - - ''; - confPkg = - let version = pkgs.fontconfig.configVersion; - in pkgs.runCommand "font-ultimate-conf" {} '' - mkdir -p $out/etc/fonts/{,${version}/}conf.d/ - - cp ${fontconfigUltimateConf} \ - $out/etc/fonts/conf.d/52-fontconfig-ultimate.conf - - cp ${fontconfigUltimateConf} \ - $out/etc/fonts/${version}/conf.d/52-fontconfig-ultimate.conf - - ${optionalString (cfg.substitutions != "none") '' - cp ${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${cfg.substitutions}/*.conf \ - $out/etc/fonts/conf.d/ - cp ${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${cfg.substitutions}/*.conf \ - $out/etc/fonts/${version}/conf.d/ - ''} - - ln -s ${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d/*.conf \ - $out/etc/fonts/conf.d/ - - ln -s ${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d/*.conf \ - $out/etc/fonts/${version}/conf.d/ - ''; - in { @@ -193,11 +115,78 @@ in }; - config = mkIf (config.fonts.fontconfig.enable && cfg.enable) { + config = + let ultimate = config.fonts.fontconfig.ultimate; + fontconfigUltimateConf = '' + + + - fonts.fontconfig.confPkgs = [ confPkg ]; - - environment.variables = cfg.rendering; + ${optionalString (!ultimate.allowBitmaps) '' + + + + + false + + + + ''} + + ${optionalString ultimate.allowType1 '' + + + + + + Type 1 + + + + + ''} + + + + + ${fcBool ultimate.useEmbeddedBitmaps} + + + + + + + ${fcBool ultimate.forceAutohint} + + + + + + + ${fcBool ultimate.renderMonoTTFAsBitmap} + + + + ${optionalString (ultimate.substitutions != "none") '' + + ${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${ultimate.substitutions} + ''} + + ${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d + + + ''; + in mkIf (config.fonts.fontconfig.enable && ultimate.enable) { + + environment.etc."fonts/conf.d/52-fontconfig-ultimate.conf" = { + text = fontconfigUltimateConf; + }; + + environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/52-fontconfig-ultimate.conf" = { + text = fontconfigUltimateConf; + }; + + environment.variables = ultimate.rendering; }; diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix index fcf5add45197..1eaebe4b2bbd 100644 --- a/nixos/modules/config/fonts/fontconfig.nix +++ b/nixos/modules/config/fonts/fontconfig.nix @@ -2,121 +2,6 @@ with lib; -let cfg = config.fonts.fontconfig; - fcBool = x: "" + (if x then "true" else "false") + ""; - renderConf = pkgs.writeText "render-conf" '' - - - - - - - - ${fcBool cfg.hinting.enable} - - - ${fcBool cfg.hinting.autohint} - - - hint${cfg.hinting.style} - - - ${fcBool cfg.antialias} - - - ${cfg.subpixel.rgba} - - - lcd${cfg.subpixel.lcdfilter} - - - - ${optionalString (cfg.dpi != 0) '' - - - ${toString cfg.dpi} - - - ''} - - - ''; - genericAliasConf = - let genDefault = fonts: name: - optionalString (fonts != []) '' - - ${name} - - ${concatStringsSep "" - (map (font: '' - ${font} - '') fonts)} - - - ''; - in - pkgs.writeText "generic-alias-conf" '' - - - - - - ${genDefault cfg.defaultFonts.sansSerif "sans-serif"} - - ${genDefault cfg.defaultFonts.serif "serif"} - - ${genDefault cfg.defaultFonts.monospace "monospace"} - - - ''; - cacheConf = let - cache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; }; - in - pkgs.writeText "cache-conf" '' - - - - - ${concatStringsSep "\n" (map (font: "${font}") config.fonts.fonts)} - - ${cache pkgs.fontconfig} - ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) '' - ${cache pkgs.pkgsi686Linux.fontconfig} - ''} - - ''; - userConf = pkgs.writeText "user-conf" '' - - - - fontconfig/conf.d - fontconfig/fonts.conf - - ''; - fontsConf = pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; }; - confPkg = - let version = pkgs.fontconfig.configVersion; - in pkgs.runCommand "fontconfig-conf" {} '' - mkdir -p $out/etc/fonts/{,${version}/}conf.d - - ln -s ${fontsConf} $out/etc/fonts/fonts.conf - - ln -s ${pkgs.fontconfig.out}/etc/fonts/fonts.conf $out/etc/fonts/${version}/fonts.conf - ln -s ${pkgs.fontconfig.out}/etc/fonts/conf.d/* $out/etc/fonts/${version}/conf.d/ - - ln -s ${renderConf} $out/etc/fonts/conf.d/10-nixos-rendering.conf - ln -s ${genericAliasConf} $out/etc/fonts/conf.d/60-nixos-generic-alias.conf - - ln -s ${cacheConf} $out/etc/fonts/${version}/conf.d/00-nixos.conf - - ln -s ${renderConf} $out/etc/fonts/${version}/conf.d/10-nixos-rendering.conf - ln -s ${genericAliasConf} $out/etc/fonts/${version}/conf.d/30-nixos-generic-alias.conf - - ${optionalString cfg.includeUserConf - "ln -s ${userConf} $out/etc/fonts/${version}/conf.d/99-user.conf"} - - ''; -in { options = { @@ -136,15 +21,6 @@ in ''; }; - confPkgs = mkOption { - internal = true; - type = with types; listOf path; - default = [ ]; - description = '' - Fontconfig configuration packages. - ''; - }; - antialias = mkOption { type = types.bool; default = true; @@ -267,17 +143,135 @@ in }; - config = mkIf cfg.enable { - fonts.fontconfig.confPkgs = [ confPkg ]; + config = + let fontconfig = config.fonts.fontconfig; + fcBool = x: "" + (if x then "true" else "false") + ""; + renderConf = '' + + + - environment.etc.fonts.source = - let fontConf = pkgs.symlinkJoin { - name = "fontconfig-etc"; - paths = cfg.confPkgs; - }; - in "${fontConf}/etc/fonts/"; + + + + ${fcBool fontconfig.hinting.enable} + + + ${fcBool fontconfig.hinting.autohint} + + + hint${fontconfig.hinting.style} + + + ${fcBool fontconfig.antialias} + + + ${fontconfig.subpixel.rgba} + + + lcd${fontconfig.subpixel.lcdfilter} + + - environment.systemPackages = [ pkgs.fontconfig ]; - }; + ${optionalString (fontconfig.dpi != 0) '' + + + ${toString fontconfig.dpi} + + + ''} + + + ''; + genericAliasConf = '' + + + + + + ${optionalString (fontconfig.defaultFonts.sansSerif != []) '' + + sans-serif + + ${concatStringsSep "\n" + (map (font: "${font}") + fontconfig.defaultFonts.sansSerif)} + + + ''} + ${optionalString (fontconfig.defaultFonts.serif != []) '' + + serif + + ${concatStringsSep "\n" + (map (font: "${font}") + fontconfig.defaultFonts.serif)} + + + ''} + ${optionalString (fontconfig.defaultFonts.monospace != []) '' + + monospace + + ${concatStringsSep "\n" + (map (font: "${font}") + fontconfig.defaultFonts.monospace)} + + + ''} + + + ''; + in mkIf fontconfig.enable { + + # Fontconfig 2.10 backward compatibility + + # Bring in the default (upstream) fontconfig configuration, only for fontconfig 2.10 + environment.etc."fonts/fonts.conf".source = + pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; }; + + environment.etc."fonts/conf.d/10-nixos-rendering.conf".text = renderConf; + environment.etc."fonts/conf.d/60-nixos-generic-alias.conf".text = genericAliasConf; + + # Versioned fontconfig > 2.10. Take shared fonts.conf from fontconfig. + # Otherwise specify only font directories. + environment.etc."fonts/${pkgs.fontconfig.configVersion}/fonts.conf".source = + "${pkgs.fontconfig.out}/etc/fonts/fonts.conf"; + + environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/00-nixos.conf".text = + let + cache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; }; + in '' + + + + + ${concatStringsSep "\n" (map (font: "${font}") config.fonts.fonts)} + + ${cache pkgs.fontconfig} + ${optionalString (pkgs.stdenv.isx86_64 && config.fonts.fontconfig.cache32Bit) '' + ${cache pkgs.pkgsi686Linux.fontconfig} + ''} + + ''; + + environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/10-nixos-rendering.conf".text = renderConf; + environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/60-nixos-generic-alias.conf".text = genericAliasConf; + + environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/99-user.conf" = { + enable = fontconfig.includeUserConf; + text = '' + + + + fontconfig/conf.d + fontconfig/fonts.conf + + ''; + }; + + environment.systemPackages = [ pkgs.fontconfig ]; + + }; } diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix index a964e04531c1..6984e85603f6 100644 --- a/nixos/modules/config/pulseaudio.nix +++ b/nixos/modules/config/pulseaudio.nix @@ -161,6 +161,7 @@ in { ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no"; Restart = "on-failure"; }; + environment = { DISPLAY = ":${toString config.services.xserver.display}"; }; }; sockets.pulseaudio = { diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 0b3f49aec5c9..c1d9a250a627 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -249,6 +249,7 @@ ./services/misc/nix-ssh-serve.nix ./services/misc/nzbget.nix ./services/misc/octoprint.nix + ./services/misc/packagekit.nix ./services/misc/parsoid.nix ./services/misc/phd.nix ./services/misc/plex.nix @@ -258,6 +259,7 @@ ./services/misc/ripple-data-api.nix ./services/misc/rogue.nix ./services/misc/siproxd.nix + ./services/misc/sonarr.nix ./services/misc/spice-vdagentd.nix ./services/misc/subsonic.nix ./services/misc/sundtek.nix @@ -474,6 +476,7 @@ ./services/web-servers/winstone.nix ./services/web-servers/zope2.nix ./services/x11/colord.nix + ./services/x11/compton.nix ./services/x11/unclutter.nix ./services/x11/desktop-managers/default.nix ./services/x11/display-managers/auto.nix diff --git a/nixos/modules/security/grsecurity.nix b/nixos/modules/security/grsecurity.nix index 9d0249820d5d..e825679c343c 100644 --- a/nixos/modules/security/grsecurity.nix +++ b/nixos/modules/security/grsecurity.nix @@ -13,12 +13,16 @@ let || elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ]) && fs.fsType == "zfs") (attrValues config.fileSystems) != []; + + # Ascertain whether NixOS container support is required + containerSupportRequired = + config.boot.enableContainers && config.containers != {}; in { options.security.grsecurity = { - enable = mkEnableOption "Grsecurity/PaX"; + enable = mkEnableOption "grsecurity/PaX"; lockTunables = mkOption { type = types.bool; @@ -27,9 +31,9 @@ in description = '' Whether to automatically lock grsecurity tunables (). Disable - this to allow configuration of grsecurity features while the system is - running. The lock can be manually engaged by activating the - grsec-lock service unit. + this to allow runtime configuration of grsecurity features. Activate + the grsec-lock service unit to prevent further + configuration until the next reboot. ''; }; @@ -48,10 +52,6 @@ in (isYES "GRKERNSEC_SYSCTL_DISTRO") ]; - # Crashing on an overflow in kernel land is user unfriendly and may prevent - # the system from booting, which is too severe for our use case. - boot.kernelParams = [ "pax_size_overflow_report_only" ]; - # Install PaX related utillities into the system profile. Eventually, we # also want to include gradm here. environment.systemPackages = with pkgs; [ paxctl pax-utils ]; @@ -59,7 +59,7 @@ in # Install rules for the grsec device node services.udev.packages = [ pkgs.gradm ]; - # This service unit is responsible for locking the Grsecurity tunables. The + # This service unit is responsible for locking the grsecurity tunables. The # unit is always defined, but only activated on bootup if lockTunables is # toggled. When lockTunables is toggled, failure to activate the unit will # enter emergency mode. The intent is to make it difficult to silently @@ -105,7 +105,7 @@ in "kernel.grsecurity.chroot_deny_chroot" = mkForce 0; "kernel.grsecurity.chroot_deny_mount" = mkForce 0; "kernel.grsecurity.chroot_deny_pivot" = mkForce 0; - } // optionalAttrs config.boot.enableContainers { + } // optionalAttrs containerSupportRequired { # chroot(2) restrictions that conflict with NixOS lightweight containers "kernel.grsecurity.chroot_deny_chmod" = mkForce 0; "kernel.grsecurity.chroot_deny_mount" = mkForce 0; diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix index 7da49fa0aaab..4edbbf59a42c 100644 --- a/nixos/modules/services/continuous-integration/jenkins/default.nix +++ b/nixos/modules/services/continuous-integration/jenkins/default.nix @@ -154,7 +154,7 @@ in { ''; script = '' - ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins}/lib/jenkins.war --httpListenAddress=${cfg.listenAddress} \ + ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \ --httpPort=${toString cfg.port} \ --prefix=${cfg.prefix} \ ${concatStringsSep " " cfg.extraOptions} diff --git a/nixos/modules/services/misc/cgminer.nix b/nixos/modules/services/misc/cgminer.nix index 868dc87f7238..5f97cc034148 100644 --- a/nixos/modules/services/misc/cgminer.nix +++ b/nixos/modules/services/misc/cgminer.nix @@ -126,7 +126,7 @@ in environment = { LD_LIBRARY_PATH = ''/run/opengl-driver/lib:/run/opengl-driver-32/lib''; - DISPLAY = ":0"; + DISPLAY = ":${toString config.services.xserver.display}"; GPU_MAX_ALLOC_PERCENT = "100"; GPU_USE_SYNC_OBJECTS = "1"; }; diff --git a/nixos/modules/services/misc/packagekit.nix b/nixos/modules/services/misc/packagekit.nix new file mode 100644 index 000000000000..2d1ff7bb4117 --- /dev/null +++ b/nixos/modules/services/misc/packagekit.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.packagekit; + + backend = "nix"; + + packagekitConf = '' +[Daemon] +DefaultBackend=${backend} +KeepCache=false + ''; + + vendorConf = '' +[PackagesNotFound] +DefaultUrl=https://github.com/NixOS/nixpkgs +CodecUrl=https://github.com/NixOS/nixpkgs +HardwareUrl=https://github.com/NixOS/nixpkgs +FontUrl=https://github.com/NixOS/nixpkgs +MimeUrl=https://github.com/NixOS/nixpkgs + ''; + +in + +{ + + options = { + + services.packagekit = { + enable = mkEnableOption + '' + PackageKit provides a cross-platform D-Bus abstraction layer for + installing software. Software utilizing PackageKit can install + software regardless of the package manager. + ''; + }; + + }; + + config = mkIf cfg.enable { + + services.dbus.packages = [ pkgs.packagekit ]; + + systemd.services.packagekit = { + description = "PackageKit Daemon"; + wantedBy = [ "multi-user.target" ]; + serviceConfig.ExecStart = "${pkgs.packagekit}/libexec/packagekitd"; + serviceConfig.User = "root"; + serviceConfig.BusName = "org.freedesktop.PackageKit"; + serviceConfig.Type = "dbus"; + }; + + environment.etc."PackageKit/PackageKit.conf".text = packagekitConf; + environment.etc."PackageKit/Vendor.conf".text = vendorConf; + + }; + +} diff --git a/nixos/modules/services/misc/sonarr.nix b/nixos/modules/services/misc/sonarr.nix new file mode 100644 index 000000000000..6d96daa6c3d4 --- /dev/null +++ b/nixos/modules/services/misc/sonarr.nix @@ -0,0 +1,44 @@ +{ config, pkgs, lib, mono, ... }: + +with lib; + +let + cfg = config.services.sonarr; +in +{ + options = { + services.sonarr = { + enable = mkEnableOption "Sonarr"; + }; + }; + + config = mkIf cfg.enable { + systemd.services.sonarr = { + description = "Sonarr"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + preStart = '' + test -d /var/lib/sonarr/ || { + echo "Creating sonarr data directory in /var/lib/sonarr/" + mkdir -p /var/lib/sonarr/ + } + chown -R sonarr /var/lib/sonarr/ + chmod 0700 /var/lib/sonarr/ + ''; + + serviceConfig = { + Type = "simple"; + User = "sonarr"; + Group = "nogroup"; + PermissionsStartOnly = "true"; + ExecStart = "${pkgs.sonarr}/bin/NzbDrone --no-browser"; + Restart = "on-failure"; + }; + }; + + users.extraUsers.sonarr = { + home = "/var/lib/sonarr"; + }; + + }; +} diff --git a/nixos/modules/services/monitoring/grafana.nix b/nixos/modules/services/monitoring/grafana.nix index 0b7f3ce0a29b..b9e4015c2380 100644 --- a/nixos/modules/services/monitoring/grafana.nix +++ b/nixos/modules/services/monitoring/grafana.nix @@ -9,6 +9,7 @@ let envOptions = { PATHS_DATA = cfg.dataDir; + PATHS_PLUGINS = "${cfg.dataDir}/plugins"; PATHS_LOGS = "${cfg.dataDir}/log"; SERVER_PROTOCOL = cfg.protocol; @@ -37,6 +38,8 @@ let USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole; AUTH_ANONYMOUS_ENABLED = b2s cfg.auth.anonymous.enable; + AUTH_ANONYMOUS_ORG_NAME = cfg.auth.anonymous.org_name; + AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role; ANALYTICS_REPORTING_ENABLED = b2s cfg.analytics.reporting.enable; } // cfg.extraOptions; @@ -196,6 +199,17 @@ in { default = false; type = types.bool; }; + org_name = mkOption { + description = "Which organization to allow anonymous access to"; + default = "Main Org."; + type = types.str; + }; + org_role = mkOption { + description = "Which role anonymous users have in the organization"; + default = "Viewer"; + type = types.str; + }; + }; analytics.reporting = { @@ -222,6 +236,8 @@ in { "Grafana passwords will be stored as plaintext in the Nix store!" ]; + environment.systemPackages = [ cfg.package ]; + systemd.services.grafana = { description = "Grafana Service Daemon"; wantedBy = ["multi-user.target"]; @@ -234,6 +250,7 @@ in { }; preStart = '' ln -fs ${cfg.package}/share/grafana/conf ${cfg.dataDir} + ln -fs ${cfg.package}/share/grafana/vendor ${cfg.dataDir} ''; }; diff --git a/nixos/modules/services/monitoring/sysstat.nix b/nixos/modules/services/monitoring/sysstat.nix new file mode 100644 index 000000000000..d668faa53cc3 --- /dev/null +++ b/nixos/modules/services/monitoring/sysstat.nix @@ -0,0 +1,80 @@ +{ config, lib, pkgs, ... }: +with lib; +let + cfg = config.services.sysstat; +in { + options = { + services.sysstat = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable sar system activity collection. + ''; + }; + + collect-frequency = mkOption { + default = "*:00/10"; + description = '' + OnCalendar specification for sysstat-collect + ''; + }; + + collect-args = mkOption { + default = "1 1"; + description = '' + Arguments to pass sa1 when collecting statistics + ''; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.services.sysstat = { + description = "Resets System Activity Logs"; + wantedBy = [ "multi-user.target" ]; + preStart = "test -d /var/log/sa || mkdir -p /var/log/sa"; + + serviceConfig = { + User = "root"; + RemainAfterExit = true; + Type = "oneshot"; + ExecStart = "${pkgs.sysstat}/lib/sa/sa1 --boot"; + }; + }; + + systemd.services.sysstat-collect = { + description = "system activity accounting tool"; + unitConfig.Documentation = "man:sa1(8)"; + + serviceConfig = { + Type = "oneshot"; + User = "root"; + ExecStart = "${pkgs.sysstat}/lib/sa/sa1 ${cfg.collect-args}"; + }; + }; + + systemd.timers.sysstat-collect = { + description = "Run system activity accounting tool on a regular basis"; + wantedBy = [ "timers.target" ]; + timerConfig.OnCalendar = cfg.collect-frequency; + }; + + systemd.services.sysstat-summary = { + description = "Generate a daily summary of process accounting"; + unitConfig.Documentation = "man:sa2(8)"; + + serviceConfig = { + Type = "oneshot"; + User = "root"; + ExecStart = "${pkgs.sysstat}/lib/sa/sa2 -A"; + }; + }; + + systemd.timers.sysstat-summary = { + description = "Generate summary of yesterday's process accounting"; + wantedBy = [ "timers.target" ]; + timerConfig.OnCalendar = "00:07:00"; + }; + }; +} diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/compton.nix new file mode 100644 index 000000000000..bda4eec01026 --- /dev/null +++ b/nixos/modules/services/x11/compton.nix @@ -0,0 +1,225 @@ +{ config, lib, pkgs, ... }: + +with lib; +with builtins; + +let + + cfg = config.services.compton; + + configFile = pkgs.writeText "compton.conf" + (optionalString cfg.fade '' + # fading + fading = true; + fade-delta = ${toString cfg.fadeDelta}; + fade-in-step = ${elemAt cfg.fadeSteps 0}; + fade-out-step = ${elemAt cfg.fadeSteps 1}; + fade-exclude = ${toJSON cfg.fadeExclude}; + '' + + optionalString cfg.shadow '' + + # shadows + shadow = true; + shadow-offset-x = ${toString (elemAt cfg.shadowOffsets 0)}; + shadow-offset-y = ${toString (elemAt cfg.shadowOffsets 1)}; + shadow-opacity = ${cfg.shadowOpacity}; + shadow-exclude = ${toJSON cfg.shadowExclude}; + '' + '' + + # opacity + active-opacity = ${cfg.activeOpacity}; + inactive-opacity = ${cfg.inactiveOpacity}; + menu-opacity = ${cfg.menuOpacity}; + + # other options + backend = ${toJSON cfg.backend}; + vsync = ${toJSON cfg.vSync}; + refresh-rate = ${toString cfg.refreshRate}; + '' + cfg.extraOptions); + +in { + + options.services.compton = { + enable = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + Whether of not to enable Compton as the X.org composite manager. + ''; + }; + + fade = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + Fade windows in and out. + ''; + }; + + fadeDelta = mkOption { + type = types.int; + default = 10; + example = 5; + description = '' + Time between fade animation step (in ms). + ''; + }; + + fadeSteps = mkOption { + type = types.listOf types.str; + default = [ "0.028" "0.03" ]; + example = [ "0.04" "0.04" ]; + description = '' + Opacity change between fade steps (in and out). + ''; + }; + + fadeExclude = mkOption { + type = types.listOf types.str; + default = []; + example = [ + "window_type *= 'menu'" + "name ~= 'Firefox$'" + "focused = 1" + ]; + description = '' + List of condition of windows that should have no shadow. + See compton(1) man page for more examples. + ''; + }; + + shadow = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + Draw window shadows. + ''; + }; + + shadowOffsets = mkOption { + type = types.listOf types.int; + default = [ (-15) (-15) ]; + example = [ (-10) (-15) ]; + description = '' + Left and right offset for shadows (in pixels). + ''; + }; + + shadowOpacity = mkOption { + type = types.str; + default = "0.75"; + example = "0.8"; + description = '' + Window shadows opacity (number in range 0 - 1). + ''; + }; + + shadowExclude = mkOption { + type = types.listOf types.str; + default = []; + example = [ + "window_type *= 'menu'" + "name ~= 'Firefox$'" + "focused = 1" + ]; + description = '' + List of condition of windows that should have no shadow. + See compton(1) man page for more examples. + ''; + }; + + activeOpacity = mkOption { + type = types.str; + default = "1.0"; + example = "0.8"; + description = '' + Opacity of active windows. + ''; + }; + + inactiveOpacity = mkOption { + type = types.str; + default = "1.0"; + example = "0.8"; + description = '' + Opacity of inactive windows. + ''; + }; + + menuOpacity = mkOption { + type = types.str; + default = "1.0"; + example = "0.8"; + description = '' + Opacity of dropdown and popup menu. + ''; + }; + + backend = mkOption { + type = types.str; + default = "glx"; + description = '' + Backend to use: glx or xrender. + ''; + }; + + vSync = mkOption { + type = types.str; + default = "none"; + example = "opengl-swc"; + description = '' + Enable vertical synchronization using the specified method. + See compton(1) man page available methods. + ''; + }; + + refreshRate = mkOption { + type = types.int; + default = 0; + example = 60; + description = '' + Screen refresh rate (0 = automatically detect). + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.compton; + example = literalExample "pkgs.compton"; + description = '' + Compton derivation to use. + ''; + }; + + extraOptions = mkOption { + type = types.str; + default = ""; + example = '' + unredir-if-possible = true; + dbe = true; + ''; + description = '' + Additional Compton configuration. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.compton = { + description = "Compton composite manager"; + wantedBy = [ "default.target" ]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/compton --config ${configFile}"; + RestartSec = 3; + Restart = "always"; + }; + environment.DISPLAY = ":0"; + }; + + environment.systemPackages = [ cfg.package ]; + }; + +} diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix index 89b515a6e275..44c87c0760cb 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome3.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix @@ -121,6 +121,7 @@ in { services.upower.enable = config.powerManagement.enable; services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ]; services.colord.enable = mkDefault true; + services.packagekit.enable = mkDefault true; hardware.bluetooth.enable = mkDefault true; services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center diff --git a/nixos/modules/services/x11/desktop-managers/kde5.nix b/nixos/modules/services/x11/desktop-managers/kde5.nix index 060dda1a70a8..9f9bbe246234 100644 --- a/nixos/modules/services/x11/desktop-managers/kde5.nix +++ b/nixos/modules/services/x11/desktop-managers/kde5.nix @@ -50,13 +50,13 @@ in security.setuidOwners = [ { program = "kcheckpass"; - source = "${kde5.plasma-workspace}/lib/libexec/kcheckpass"; + source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass"; owner = "root"; setuid = true; } { - program = "start_kdeinit_wrapper"; - source = "${kde5.plasma-workspace}/lib/libexec/kf5/start_kdeinit_wrapper"; + program = "start_kdeinit"; + source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit"; owner = "root"; setuid = true; } @@ -65,10 +65,50 @@ in environment.systemPackages = [ kde5.frameworkintegration + kde5.kactivities + kde5.kauth + kde5.kcmutils + kde5.kconfig + kde5.kconfigwidgets + kde5.kcoreaddons + kde5.kdbusaddons + kde5.kdeclarative + kde5.kded + kde5.kdesu + kde5.kdnssd + kde5.kemoticons + kde5.kfilemetadata + kde5.kglobalaccel + kde5.kguiaddons + kde5.kiconthemes + kde5.kidletime + kde5.kimageformats kde5.kinit + kde5.kio + kde5.kjobwidgets + kde5.knewstuff + kde5.knotifications + kde5.knotifyconfig + kde5.kpackage + kde5.kparts + kde5.kpeople + kde5.krunner + kde5.kservice + kde5.ktextwidgets + kde5.kwallet + kde5.kwayland + kde5.kwidgetsaddons + kde5.kxmlgui + kde5.kxmlrpcclient + kde5.plasma-framework + kde5.solid + kde5.sonnet + kde5.threadweaver kde5.breeze + kde5.kactivitymanagerd kde5.kde-cli-tools + kde5.kdecoration kde5.kdeplasma-addons kde5.kgamma5 kde5.khelpcenter @@ -76,12 +116,16 @@ in kde5.kinfocenter kde5.kmenuedit kde5.kscreen + kde5.kscreenlocker kde5.ksysguard kde5.kwayland kde5.kwin kde5.kwrited + kde5.libkscreen + kde5.libksysguard kde5.milou kde5.oxygen + kde5.plasma-integration kde5.polkit-kde-agent kde5.systemsettings diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index 862ddc1d13f2..83d679ebe016 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -34,7 +34,7 @@ let ${optionalString cfg.displayManager.logToJournal '' if [ -z "$_DID_SYSTEMD_CAT" ]; then - _DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$1" + _DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$@" fi ''} diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix index ac7db3d9adc4..47786f0a4321 100644 --- a/nixos/modules/services/x11/display-managers/lightdm.nix +++ b/nixos/modules/services/x11/display-managers/lightdm.nix @@ -4,7 +4,8 @@ with lib; let - dmcfg = config.services.xserver.displayManager; + xcfg = config.services.xserver; + dmcfg = xcfg.displayManager; xEnv = config.systemd.services."display-manager".environment; cfg = dmcfg.lightdm; @@ -36,16 +37,31 @@ let lightdmConf = writeText "lightdm.conf" '' [LightDM] - greeter-user = ${config.users.extraUsers.lightdm.name} - greeters-directory = ${cfg.greeter.package} + ${optionalString cfg.greeter.enable '' + greeter-user = ${config.users.extraUsers.lightdm.name} + greeters-directory = ${cfg.greeter.package} + ''} sessions-directory = ${dmcfg.session.desktops} [Seat:*] xserver-command = ${xserverWrapper} session-wrapper = ${dmcfg.session.script} - greeter-session = ${cfg.greeter.name} + ${optionalString cfg.greeter.enable '' + greeter-session = ${cfg.greeter.name} + ''} + ${optionalString cfg.autoLogin.enable '' + autologin-user = ${cfg.autoLogin.user} + autologin-user-timeout = ${toString cfg.autoLogin.timeout} + autologin-session = ${defaultSessionName} + ''} ${cfg.extraSeatDefaults} ''; + + defaultSessionName = + let + dm = xcfg.desktopManager.default; + wm = xcfg.windowManager.default; + in dm + optionalString (wm != "none") (" + " + wm); in { # Note: the order in which lightdm greeter modules are imported @@ -68,6 +84,14 @@ in }; greeter = { + enable = mkOption { + type = types.bool; + default = true; + description = '' + If set to false, run lightdm in greeterless mode. This only works if autologin + is enabled and autoLogin.timeout is zero. + ''; + }; package = mkOption { type = types.package; description = '' @@ -102,10 +126,67 @@ in description = "Extra lines to append to SeatDefaults section."; }; + autoLogin = mkOption { + default = {}; + description = '' + Configuration for automatic login. + ''; + + type = types.submodule { + options = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Automatically log in as the specified . + ''; + }; + + user = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + User to be used for the automatic login. + ''; + }; + + timeout = mkOption { + type = types.int; + default = 0; + description = '' + Show the greeter for this many seconds before automatic login occurs. + ''; + }; + }; + }; + }; + }; }; config = mkIf cfg.enable { + + assertions = [ + { assertion = cfg.autoLogin.enable -> cfg.autoLogin.user != null; + message = '' + LightDM auto-login requires services.xserver.displayManager.lightdm.autoLogin.user to be set + ''; + } + { assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names; + message = '' + LightDM auto-login requires that services.xserver.desktopManager.default and + services.xserver.windowMananger.default are set to valid values. The current + default session: ${defaultSessionName} is not valid. + ''; + } + { assertion = !cfg.greeter.enable -> (cfg.autoLogin.enable && cfg.autoLogin.timeout == 0); + message = '' + LightDM can only run without greeter if automatic login is enabled and the timeout for it + is set to zero. + ''; + } + ]; + services.xserver.displayManager.slim.enable = false; services.xserver.displayManager.job = { @@ -144,6 +225,17 @@ in session optional ${pkgs.systemd}/lib/security/pam_systemd.so ''; }; + security.pam.services.lightdm-autologin.text = '' + auth requisite pam_nologin.so + auth required pam_succeed_if.so uid >= 1000 quiet + auth required pam_permit.so + + account include lightdm + + password include lightdm + + session include lightdm + ''; users.extraUsers.lightdm = { createHome = true; diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix index 7a17a222bcab..16d1e89e8d96 100644 --- a/nixos/modules/services/x11/display-managers/sddm.nix +++ b/nixos/modules/services/x11/display-managers/sddm.nix @@ -27,6 +27,7 @@ let ${cfg.stopScript} ''; + cfgFile = pkgs.writeText "sddm.conf" '' [General] HaltCommand=${pkgs.systemd}/bin/systemctl poweroff @@ -154,7 +155,7 @@ in type = types.bool; default = false; description = '' - Automatically log in as the sepecified . + Automatically log in as . ''; }; @@ -162,7 +163,7 @@ in type = types.nullOr types.str; default = null; description = '' - User to be used for the autologin. + User to be used for the automatic login. ''; }; @@ -170,8 +171,8 @@ in type = types.bool; default = false; description = '' - If true automatic login will kick in again on session exit, otherwise it - will work only the first time. + If true automatic login will kick in again on session exit (logout), otherwise it + will only log in automatically when the display-manager is started. ''; }; }; diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix index 12cc1e7e6460..14c7131e611c 100644 --- a/nixos/modules/services/x11/hardware/libinput.nix +++ b/nixos/modules/services/x11/hardware/libinput.nix @@ -198,6 +198,8 @@ in { environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ]; + services.udev.packages = [ pkgs.libinput ]; + services.xserver.config = '' # Automatically enable the libinput driver for all touchpads. diff --git a/nixos/modules/services/x11/redshift.nix b/nixos/modules/services/x11/redshift.nix index 8f1e317e52b0..63ffa29c1997 100644 --- a/nixos/modules/services/x11/redshift.nix +++ b/nixos/modules/services/x11/redshift.nix @@ -108,7 +108,7 @@ in { RestartSec = 3; Restart = "always"; }; - environment = { DISPLAY = ":0"; }; + environment = { DISPLAY = ":${toString config.services.xserver.display}"; }; }; }; diff --git a/nixos/modules/services/x11/unclutter.nix b/nixos/modules/services/x11/unclutter.nix index 3260fdb3d54d..ebc195d108d0 100644 --- a/nixos/modules/services/x11/unclutter.nix +++ b/nixos/modules/services/x11/unclutter.nix @@ -39,12 +39,6 @@ in { default = 1; }; - displayName = mkOption { - description = "Name of the X11 display"; - type = types.str; - default = ":0"; - }; - excluded = mkOption { description = "Names of windows where unclutter should not apply"; type = types.listOf types.str; @@ -67,7 +61,7 @@ in { serviceConfig.ExecStart = '' ${cfg.package}/bin/unclutter \ -idle ${toString cfg.timeout} \ - -display ${cfg.displayName} \ + -display :${toString config.services.xserver.display} \ -jitter ${toString (cfg.threeshold - 1)} \ ${optionalString cfg.keystroke "-keystroke"} \ ${concatMapStrings (x: " -"+x) cfg.extraOptions} \ diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix index fce71bbda7e2..94f1aa3add7e 100644 --- a/nixos/modules/services/x11/window-managers/default.nix +++ b/nixos/modules/services/x11/window-managers/default.nix @@ -19,6 +19,7 @@ in ./jwm.nix ./metacity.nix ./openbox.nix + ./pekwm.nix ./notion.nix ./ratpoison.nix ./sawfish.nix diff --git a/nixos/modules/services/x11/window-managers/pekwm.nix b/nixos/modules/services/x11/window-managers/pekwm.nix new file mode 100644 index 000000000000..850335ce7ddf --- /dev/null +++ b/nixos/modules/services/x11/window-managers/pekwm.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.pekwm; +in +{ + ###### interface + options = { + services.xserver.windowManager.pekwm.enable = mkEnableOption "pekwm"; + }; + + ###### implementation + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "pekwm"; + start = '' + ${pkgs.pekwm}/bin/pekwm & + waitPID=$! + ''; + }; + environment.systemPackages = [ pkgs.pekwm ]; + }; +} diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix index 15881b6d3714..8dad09c89207 100644 --- a/nixos/modules/system/boot/luksroot.nix +++ b/nixos/modules/system/boot/luksroot.nix @@ -36,7 +36,7 @@ let ${optionalString (header != null) "--header=${header}"} \ ${optionalString (keyFile != null) "--key-file=${keyFile} ${optionalString (keyFileSize != null) "--keyfile-size=${toString keyFileSize}"}"} \ > /.luksopen_args - get_password "Enter LUKS Passphrase" cryptsetup-askpass + cryptsetup-askpass rm /.luksopen_args } @@ -78,7 +78,9 @@ let for try in $(seq 3); do ${optionalString yubikey.twoFactor '' - k_user="$(get_password "Enter two-factor passphrase" cat)" + echo -n "Enter two-factor passphrase: " + read -s k_user + echo ''} if [ ! -z "$k_user" ]; then @@ -461,26 +463,6 @@ in ''} ''; - boot.initrd.preDeviceCommands = '' - get_password() { - local ret - local reply - local tty_stat - - tty_stat="$(stty -g)" - stty -echo - for i in `seq 1 3`; do - echo -n "$1: " - read reply - echo "$reply" | "$2" - if [ "$?" = "0" ]; then - break - fi - done - stty "$tty_stat" - } - ''; - boot.initrd.preLVMCommands = concatStrings (mapAttrsToList openCommand preLVM); boot.initrd.postDeviceCommands = concatStrings (mapAttrsToList openCommand postLVM); diff --git a/nixos/modules/system/boot/plymouth.nix b/nixos/modules/system/boot/plymouth.nix index 82c1032937c6..60a587af8e9f 100644 --- a/nixos/modules/system/boot/plymouth.nix +++ b/nixos/modules/system/boot/plymouth.nix @@ -112,6 +112,7 @@ in sed -i '/loginctl/d' $out/71-seat.rules ''; + # We use `mkAfter` to ensure that LUKS password prompt would be shown earlier than the splash screen. boot.initrd.preLVMCommands = mkAfter '' mkdir -p /etc/plymouth ln -s ${configFile} /etc/plymouth/plymouthd.conf @@ -121,7 +122,16 @@ in ln -s $extraUtils/lib/plymouth /etc/plymouth/plugins plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session - plymouth --show-splash + plymouth show-splash + ''; + + boot.initrd.postMountCommands = '' + plymouth update-root-fs --new-root-dir="$targetRoot" + ''; + + # `mkBefore` to ensure that any custom prompts would be visible. + boot.initrd.preFailCommands = mkBefore '' + plymouth quit --wait ''; }; diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 6b1bf0b3e028..7705dcb2d125 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -14,8 +14,7 @@ export LVM_SUPPRESS_FD_WARNINGS=true fail() { if [ -n "$panicOnFail" ]; then exit 1; fi - # If we have a splash screen started, quit it. - command -v plymouth >/dev/null 2>&1 && plymouth quit + @preFailCommands@ # If starting stage 2 failed, allow the user to repair the problem # in an interactive shell. diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 56a9c38b8f2b..4b1d3efb4113 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -208,7 +208,7 @@ let inherit (config.boot) resumeDevice devSize runSize; inherit (config.boot.initrd) checkJournalingFS - preLVMCommands preDeviceCommands postDeviceCommands postMountCommands kernelModules; + preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules; resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}") (filter (sd: (sd ? label || hasPrefix "/dev/" sd.device) && !sd.randomEncryption) config.swapDevices); @@ -336,6 +336,14 @@ in ''; }; + boot.initrd.preFailCommands = mkOption { + default = ""; + type = types.lines; + description = '' + Shell commands to be executed before the failure prompt is shown. + ''; + }; + boot.initrd.extraUtilsCommands = mkOption { internal = true; default = ""; diff --git a/nixos/modules/system/boot/systemd-lib.nix b/nixos/modules/system/boot/systemd-lib.nix index 8acaa5212f5f..2e93693cbfc8 100644 --- a/nixos/modules/system/boot/systemd-lib.nix +++ b/nixos/modules/system/boot/systemd-lib.nix @@ -176,7 +176,7 @@ rec { ${optionalString (type == "system") '' # Stupid misc. symlinks. ln -s ${cfg.defaultUnit} $out/default.target - + ln -s ${cfg.ctrlAltDelUnit} $out/ctrl-alt-del.target ln -s rescue.target $out/kbrequest.target mkdir -p $out/getty.target.wants/ diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index 5c8cce5066af..df72be1b4be5 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -120,7 +120,6 @@ let "systemd-poweroff.service" "halt.target" "systemd-halt.service" - "ctrl-alt-del.target" "shutdown.target" "umount.target" "final.target" @@ -162,7 +161,6 @@ let "systemd-hostnamed.service" "systemd-binfmt.service" ] - ++ cfg.additionalUpstreamSystemUnits; upstreamSystemWants = @@ -485,6 +483,15 @@ in description = "Default unit started when the system boots."; }; + systemd.ctrlAltDelUnit = mkOption { + default = "reboot.target"; + type = types.str; + example = "poweroff.target"; + description = '' + Target that should be started when Ctrl-Alt-Delete is pressed. + ''; + }; + systemd.globalEnvironment = mkOption { type = types.attrs; default = {}; diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index 19292bd1ef71..80aec1bba0f3 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -270,7 +270,23 @@ in ("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d ${cfgZfs.devNodes} -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}" ''; }; - in listToAttrs (map createImportService dataPools) // { + + # This forces a sync of any ZFS pools prior to poweroff, even if they're set + # to sync=disabled. + createSyncService = pool: + nameValuePair "zfs-sync-${pool}" { + description = "Sync ZFS pool \"${pool}\""; + wantedBy = [ "shutdown.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + ${zfsUserPkg}/sbin/zfs set nixos:shutdown-time="$(date)" "${pool}" + ''; + }; + + in listToAttrs (map createImportService dataPools ++ map createSyncService allPools) // { "zfs-mount" = { after = [ "systemd-modules-load.service" ]; }; "zfs-share" = { after = [ "systemd-modules-load.service" ]; }; "zed" = { after = [ "systemd-modules-load.service" ]; }; diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index 13ecb8e25ed5..b3870caece0c 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -4,22 +4,6 @@ with lib; let - nixos-container = pkgs.substituteAll { - name = "nixos-container"; - dir = "bin"; - isExecutable = true; - src = ./nixos-container.pl; - perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl"; - su = "${pkgs.shadow.su}/bin/su"; - inherit (pkgs) utillinux; - - postInstall = '' - t=$out/etc/bash_completion.d - mkdir -p $t - cp ${./nixos-container-completion.sh} $t/nixos-container - ''; - }; - # The container's init script, a small wrapper around the regular # NixOS stage-2 init script. containerInit = pkgs.writeScript "container-init" @@ -410,7 +394,7 @@ in ExecReload = pkgs.writeScript "reload-container" '' #! ${pkgs.stdenv.shell} -e - ${nixos-container}/bin/nixos-container run "$INSTANCE" -- \ + ${pkgs.nixos-container}/bin/nixos-container run "$INSTANCE" -- \ bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test" ''; @@ -498,6 +482,6 @@ in networking.dhcpcd.denyInterfaces = [ "ve-*" ]; - environment.systemPackages = [ nixos-container ]; + environment.systemPackages = [ pkgs.nixos-container ]; }); } diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 9d9b725a805d..b77b319f4a28 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -62,7 +62,9 @@ let idx=2 extraDisks="" ${flip concatMapStrings cfg.emptyDiskImages (size: '' - ${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M" + if ! test -e "empty$idx.qcow2"; then + ${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M" + fi extraDisks="$extraDisks -drive index=$idx,file=$(pwd)/empty$idx.qcow2,if=${cfg.qemu.diskInterface},werror=report" idx=$((idx + 1)) '')} diff --git a/nixos/release.nix b/nixos/release.nix index 1800122fa2e5..184e340341fe 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -231,6 +231,7 @@ in rec { tests.gnome3 = callTest tests/gnome3.nix {}; tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {}; tests.grsecurity = callTest tests/grsecurity.nix {}; + tests.hibernate = callTest tests/hibernate.nix {}; tests.i3wm = callTest tests/i3wm.nix {}; tests.installer = callSubTests tests/installer.nix {}; tests.influxdb = callTest tests/influxdb.nix {}; diff --git a/nixos/tests/hibernate.nix b/nixos/tests/hibernate.nix new file mode 100644 index 000000000000..787929f8904d --- /dev/null +++ b/nixos/tests/hibernate.nix @@ -0,0 +1,42 @@ +# Test whether hibernation from partition works. + +import ./make-test.nix (pkgs: { + name = "hibernate"; + + nodes = { + machine = { config, lib, pkgs, ... }: with lib; { + virtualisation.emptyDiskImages = [ config.virtualisation.memorySize ]; + + systemd.services.backdoor.conflicts = [ "sleep.target" ]; + + swapDevices = mkOverride 0 [ { device = "/dev/vdb"; } ]; + + networking.firewall.allowedTCPPorts = [ 4444 ]; + + systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l -p 4444"; + }; + + probe = { config, lib, pkgs, ...}: { + environment.systemPackages = [ pkgs.netcat ]; + }; + }; + + # 9P doesn't support reconnection to virtio transport after a hibernation. + # Therefore, machine just hangs on any Nix store access. + # To work around it we run a daemon which listens to a TCP connection and + # try to connect to it as a test. + + testScript = + '' + $machine->waitForUnit("multi-user.target"); + $machine->succeed("mkswap /dev/vdb"); + $machine->succeed("swapon -a"); + $machine->startJob("listener"); + $machine->succeed("systemctl hibernate &"); + $machine->waitForShutdown; + $machine->start; + $probe->waitForUnit("network.target"); + $probe->waitUntilSucceeds("echo test | nc -c machine 4444"); + ''; + +}) diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index 4a30cc18b021..e71168a73660 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -210,6 +210,10 @@ let pkgs.nixos-artwork pkgs.perlPackages.XMLLibXML pkgs.perlPackages.ListCompare + + # add curl so that rather than seeing the test attempt to download + # curl's tarball, we see what it's trying to download + pkgs.curl ] ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub ++ optionals (bootLoader == "grub" && grubVersion == 2) [ pkgs.grub2 pkgs.grub2_efi ]; diff --git a/pkgs/applications/audio/eq10q/default.nix b/pkgs/applications/audio/eq10q/default.nix index e2adf9e131c7..0ff83a9023ef 100644 --- a/pkgs/applications/audio/eq10q/default.nix +++ b/pkgs/applications/audio/eq10q/default.nix @@ -1,10 +1,10 @@ { stdenv, fetchurl, cmake, fftw, gtkmm, libxcb, lv2, pkgconfig, xorg }: stdenv.mkDerivation rec { - name = "eq10q-2-${version}"; - version = "beta7.1"; + name = "eq10q-${version}"; + version = "2.0"; src = fetchurl { url = "mirror://sourceforge/project/eq10q/${name}.tar.gz"; - sha256 = "1jmrcx4jlx8kgsy5n4jcxa6qkjqvx7d8l2p7dsmw4hj20s39lgyi"; + sha256 = "08vlfly0qqrfqiwpn5g5php680icpk97pwnwjadmj5syhgvi0i3h"; }; buildInputs = [ cmake fftw gtkmm libxcb lv2 pkgconfig xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ]; diff --git a/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/pkgs/applications/audio/pd-plugins/puremapping/default.nix index 9300d7461fec..4f285552576c 100644 --- a/pkgs/applications/audio/pd-plugins/puremapping/default.nix +++ b/pkgs/applications/audio/pd-plugins/puremapping/default.nix @@ -1,10 +1,11 @@ { stdenv, fetchurl, unzip, puredata }: stdenv.mkDerivation rec { - name = "puremapping-20160130"; + name = "puremapping-${version}"; + version = "20160130"; src = fetchurl { - url = "http://www.chnry.net/data/puremapping-20160130-generic.zip"; + url = "http://www.chnry.net/data/puremapping-${version}-generic.zip"; name = "puremapping"; sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7"; }; diff --git a/pkgs/applications/audio/pd-plugins/zexy/default.nix b/pkgs/applications/audio/pd-plugins/zexy/default.nix index 68996e9e6e4c..7cd244c9ea4f 100644 --- a/pkgs/applications/audio/pd-plugins/zexy/default.nix +++ b/pkgs/applications/audio/pd-plugins/zexy/default.nix @@ -16,7 +16,6 @@ stdenv.mkDerivation rec { for i in ${puredata}/include/pd/*; do ln -s $i . done - patchShebangs ./bootstrap.sh ./configure --enable-lpt=no --prefix=$out ''; diff --git a/pkgs/applications/audio/plugin-torture/default.nix b/pkgs/applications/audio/plugin-torture/default.nix index cca4538422f4..e4fb83439e0d 100644 --- a/pkgs/applications/audio/plugin-torture/default.nix +++ b/pkgs/applications/audio/plugin-torture/default.nix @@ -1,13 +1,14 @@ -{ stdenv, fetchgit, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }: +{ stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }: stdenv.mkDerivation rec { - name = "plugin-torture-git-${version}"; - version = "2013-10-03"; + name = "plugin-torture-${version}"; + version = "5"; - src = fetchgit { - url = "https://github.com/cth103/plugin-torture"; - rev = "9ee06016982bdfbaa215cd0468cc6ada6367462a"; - sha256 = "0ynzfs3z95lbw4l1w276as2a37zxp0cw6pi3lbikr0qk0r7j5j10"; + src = fetchFromGitHub { + owner = "cth103"; + repo = "plugin-torture"; + rev = "v${version}"; + sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih"; }; buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ]; @@ -15,7 +16,7 @@ stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin cp plugin-torture $out/bin/ - cp README $out/bin/ + cp find-safe-plugins $out/bin/ ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/audio/puredata/default.nix b/pkgs/applications/audio/puredata/default.nix index 8fddcccd51cd..daa017d1ccbd 100644 --- a/pkgs/applications/audio/puredata/default.nix +++ b/pkgs/applications/audio/puredata/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "puredata-${version}"; - version = "0.45-4"; + version = "0.47-1"; src = fetchurl { - url = "mirror://sourceforge/pure-data/pd-${version}.src.tar.gz"; - sha256 = "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p"; + url = "http://msp.ucsd.edu/Software/pd-${version}.src.tar.gz"; + sha256 = "0k5s949kqd7yw97h3m8z81bjz32bis9m4ih8df1z0ymipnafca67"; }; patchPhase = '' diff --git a/pkgs/applications/editors/emacs-25/default.nix b/pkgs/applications/editors/emacs-25/default.nix index 44581ffb4d04..9d97146cd2af 100644 --- a/pkgs/applications/editors/emacs-25/default.nix +++ b/pkgs/applications/editors/emacs-25/default.nix @@ -5,6 +5,7 @@ , autoconf, automake , withX ? !stdenv.isDarwin , withGTK3 ? false, gtk3 ? null +, withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null , withGTK2 ? true, gtk2 }: @@ -14,6 +15,7 @@ assert withGTK2 -> withX || stdenv.isDarwin; assert withGTK3 -> withX || stdenv.isDarwin; assert withGTK2 -> !withGTK3 && gtk2 != null; assert withGTK3 -> !withGTK2 && gtk3 != null; +assert withXwidgets -> withGTK3 && webkitgtk24x != null; let toolkit = @@ -49,19 +51,21 @@ stdenv.mkDerivation rec { imagemagick gconf ] ++ stdenv.lib.optional (withX && withGTK2) gtk2 ++ stdenv.lib.optional (withX && withGTK3) gtk3 - ++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo; + ++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo + ++ stdenv.lib.optionals withXwidgets [webkitgtk24x wrapGAppsHook glib_networking]; propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ]; hardeningDisable = [ "format" ]; configureFlags = - if stdenv.isDarwin + (if stdenv.isDarwin then [ "--with-ns" "--disable-ns-self-contained" ] else if withX then [ "--with-x-toolkit=${toolkit}" "--with-xft" ] else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no" - "--with-gif=no" "--with-tiff=no" ]; + "--with-gif=no" "--with-tiff=no" ]) + ++ stdenv.lib.optional withXwidgets "--with-xwidgets"; NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX) "-I${cairo.dev}/include/cairo"; diff --git a/pkgs/applications/editors/geany/with-vte.nix b/pkgs/applications/editors/geany/with-vte.nix index ffffed1b8532..679125b5ec4e 100644 --- a/pkgs/applications/editors/geany/with-vte.nix +++ b/pkgs/applications/editors/geany/with-vte.nix @@ -2,5 +2,7 @@ let name = builtins.replaceStrings ["geany-"] ["geany-with-vte-"] geany.name; in runCommand "${name}" { nativeBuildInputs = [ makeWrapper ]; } " + mkdir -p $out + ln -s ${geany}/share $out makeWrapper ${geany}/bin/geany $out/bin/geany --prefix LD_LIBRARY_PATH : ${gnome.vte}/lib " diff --git a/pkgs/applications/editors/uemacs/default.nix b/pkgs/applications/editors/uemacs/default.nix new file mode 100644 index 000000000000..551fa67d9863 --- /dev/null +++ b/pkgs/applications/editors/uemacs/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchgit, ncurses }: + +stdenv.mkDerivation rec { + name = "uemacs-${version}"; + version = "2014-12-08"; + + src = fetchgit { + url = git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git; + rev = "8841922689769960fa074fbb053cb8507f2f3ed9"; + sha256 = "14yq7kpkax111cg6k7i3mnqk7sq7a65krq6qizzj7vvnm7bsj3sd"; + }; + + postPatch = '' + substituteInPlace Makefile \ + --replace "-lcurses" "-lncurses" \ + --replace "CFLAGS=-O2" "CFLAGS+=" \ + --replace "BINDIR=/usr/bin" "BINDIR=$out/bin" \ + --replace "LIBDIR=/usr/lib" "LIBDIR=$out/share/uemacs" + substituteInPlace epath.h \ + --replace "/usr/global/lib/" "$out/share/uemacs/" \ + --replace "/usr/local/bin/" "$out/bin/" \ + --replace "/usr/local/lib/" "$out/share/uemacs/" \ + --replace "/usr/local/" "$out/bin/" \ + --replace "/usr/lib/" "$out/share/uemacs/" + mkdir -p $out/bin $out/share/uemacs + ''; + + buildInputs = [ ncurses ]; + + meta = with stdenv.lib; { + homepage = https://git.kernel.org/cgit/editors/uemacs/uemacs.git; + description = "Torvalds Micro-emacs fork"; + longDescription = '' + uEmacs/PK 4.0 is a full screen editor based on MicroEMACS 3.9e + ''; + license = licenses.unfree; + }; +} diff --git a/pkgs/applications/editors/vis/default.nix b/pkgs/applications/editors/vis/default.nix index 8c7cf73f4320..496f04142e11 100644 --- a/pkgs/applications/editors/vis/default.nix +++ b/pkgs/applications/editors/vis/default.nix @@ -1,12 +1,18 @@ -{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper, ncurses, libtermkey, lpeg, lua }: +{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper +, ncurses, libtermkey, lpeg, lua +, acl ? null, libselinux ? null +, version ? "2016-07-15" +, rev ? "5c2cee9461ef1199f2e80ddcda699595b11fdf08" +, sha256 ? "1jmsv72hq0c2f2rnpllvd70cmxbjwfhynzwaxx24f882zlggwsnd" +}: stdenv.mkDerivation rec { name = "vis-nightly-${version}"; - version = "2016-04-15"; + inherit version; src = fetchFromGitHub { - sha256 = "0a4gpwniy5r9dpfq51fxjxxnxavdjv8x76w9bbjnbnh8n63p3sj7"; - rev = "472c559a273d3c7b0f5ee92260c5544bc3d74576"; + inherit sha256; + inherit rev; repo = "vis"; owner = "martanne"; }; @@ -14,12 +20,14 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ - unzip - pkgconfig - ncurses - libtermkey - lua - lpeg + unzip pkgconfig + ncurses + libtermkey + lua + lpeg + ] ++ stdenv.lib.optional stdenv.isLinux [ + acl + libselinux ]; LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;"; @@ -33,11 +41,10 @@ stdenv.mkDerivation rec { --prefix VIS_PATH : "$out/share/vis" ''; - meta = { + meta = with stdenv.lib; { description = "A vim like editor"; homepage = http://github.com/martanne/vis; - license = stdenv.lib.licenses.isc; - maintainers = [ stdenv.lib.maintainers.vrthra ]; + license = licenses.isc; + maintainers = [ maintainers.vrthra ]; }; } - diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix index e73cc9024c61..793940a88784 100644 --- a/pkgs/applications/graphics/ImageMagick/default.nix +++ b/pkgs/applications/graphics/ImageMagick/default.nix @@ -11,8 +11,8 @@ let else throw "ImageMagick is not supported on this platform."; cfg = { - version = "6.9.3-9"; - sha256 = "0q19jgn1iv7zqrw8ibxp4z57iihrc9kyb09k2wnspcacs6vrvinf"; + version = "6.9.5-2"; + sha256 = "09h3rpr1jnzd7ipy5d16r2gi0bwg4hk5khwzv4cyhv1xzs8pk7pj"; patches = []; } # Freeze version on mingw so we don't need to port the patch too often. diff --git a/pkgs/applications/graphics/ImageMagick/imagetragick.patch b/pkgs/applications/graphics/ImageMagick/imagetragick.patch index bdb152dd23a8..1b2de5e73506 100644 --- a/pkgs/applications/graphics/ImageMagick/imagetragick.patch +++ b/pkgs/applications/graphics/ImageMagick/imagetragick.patch @@ -1,15 +1,8 @@ -diff --git a/config/policy.xml b/config/policy.xml -index ca3b022..b058c05 100644 --- a/config/policy.xml +++ b/config/policy.xml -@@ -58,4 +58,10 @@ - - - -+ -+ -+ -+ -+ -+ - +67a68,72 +> +> +> +> +> diff --git a/pkgs/applications/graphics/gimp/2.8.nix b/pkgs/applications/graphics/gimp/2.8.nix index 5943cb9cdacf..27d7376fe526 100644 --- a/pkgs/applications/graphics/gimp/2.8.nix +++ b/pkgs/applications/graphics/gimp/2.8.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { name = "gimp-${version}"; - version = "2.8.16"; + version = "2.8.18"; # This declarations for `gimp-with-plugins` wrapper, # (used for determining $out/lib/gimp/${majorVersion}/ paths) @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://download.gimp.org/pub/gimp/v2.8/${name}.tar.bz2"; - sha256 = "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm"; + sha256 = "0halh6sl3d2j9gahyabj6h6r3yyldcy7sfb4qrfazpkqqr3j5p9r"; }; buildInputs = diff --git a/pkgs/applications/graphics/pencil/default.nix b/pkgs/applications/graphics/pencil/default.nix index 80774fba5ff2..7d9b77e9661e 100644 --- a/pkgs/applications/graphics/pencil/default.nix +++ b/pkgs/applications/graphics/pencil/default.nix @@ -32,5 +32,8 @@ stdenv.mkDerivation rec { license = licenses.gpl2; # Commercial license is also available maintainers = with maintainers; [ bjornfor prikhi ]; platforms = platforms.linux; + # See https://github.com/prikhi/pencil/issues/840 + # ("Error: Platform version '47.0' is not compatible with minVersion >= 36.0 maxVersion <= 46.*") + broken = true; }; } diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix index 513b1a49198a..e52eb045ffb8 100644 --- a/pkgs/applications/graphics/shotwell/default.nix +++ b/pkgs/applications/graphics/shotwell/default.nix @@ -1,17 +1,19 @@ { fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite -, webkitgtk24x, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib +, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib , gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper , gnome_doc_utils, hicolor_icon_theme }: # for dependencies see http://www.yorba.org/projects/shotwell/install/ stdenv.mkDerivation rec { - version = "0.22.0"; + version = "${major}.${minor}"; + major = "0.23"; + minor = "2"; name = "shotwell-${version}"; src = fetchurl { - url = "mirror://gnome/sources/shotwell/0.22/${name}.tar.xz"; - sha256 = "0cgqaaikrb10plhf6zxbgqy32zqpiwyi9dpx3g8yr261q72r5c81"; + url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz"; + sha256 = "d52caae4e3204f2f78e2eb828d955848ea6fef5c91d3ac6e9eb0b185c0490b39"; }; NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include"; @@ -35,7 +37,7 @@ stdenv.mkDerivation rec { ''; - buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x + buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk pkgconfig gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee which udev libgudev gnome3.gexiv2 hicolor_icon_theme libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg diff --git a/pkgs/applications/misc/emem/default.nix b/pkgs/applications/misc/emem/default.nix index 277367130241..b1ba9831c631 100644 --- a/pkgs/applications/misc/emem/default.nix +++ b/pkgs/applications/misc/emem/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { pname = "emem"; - version = "0.2.16"; + version = "0.2.18"; name = "${pname}-${version}"; inherit jdk; src = fetchurl { url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar"; - sha256 = "1j6i40mcfwcx85zv0pxpwrqj0zy9s5qd7j63zdqf0lckkjvyrih9"; + sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8"; }; buildInputs = [ ]; diff --git a/pkgs/applications/misc/gpg-mdp/default.nix b/pkgs/applications/misc/gpg-mdp/default.nix new file mode 100644 index 000000000000..fe58fa92d07b --- /dev/null +++ b/pkgs/applications/misc/gpg-mdp/default.nix @@ -0,0 +1,34 @@ +{ fetchurl, stdenv, ncurses, gnupg }: + +let version = "0.7.4"; +in stdenv.mkDerivation { + # mdp renamed to gpg-mdp because there is a mdp package already. + name = "gpg-mdp-${version}"; + meta = { + homepage = https://tamentis.com/projects/mdp/; + license = [stdenv.lib.licenses.isc]; + description = "Manage your passwords with GnuPG and a text editor"; + }; + src = fetchurl { + url = "https://tamentis.com/projects/mdp/files/mdp-${version}.tar.gz"; + sha256 = "04mdnx4ccpxf9m2myy9nvpl9ma4jgzmv9bkrzv2b9affzss3r34g"; + }; + buildInputs = [ ncurses ]; + prePatch = '' + substituteInPlace ./configure \ + --replace "alias echo=/bin/echo" "" + + substituteInPlace ./src/config.c \ + --replace "/usr/bin/gpg" "${gnupg}/bin/gpg2" \ + --replace "/usr/bin/vi" "vi" + + substituteInPlace ./mdp.1 \ + --replace "/usr/bin/gpg" "${gnupg}/bin/gpg2" + ''; + # we add symlinks to the binary and man page with the name 'gpg-mdp', in case + # the completely unrelated program also named 'mdp' is already installed. + postFixup = '' + ln -s $out/bin/mdp $out/bin/gpg-mdp + ln -s $out/share/man/man1/mdp.1.gz $out/share/man/man1/gpg-mdp.1.gz + ''; +} diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix new file mode 100644 index 000000000000..c183f70a2895 --- /dev/null +++ b/pkgs/applications/misc/hugo/default.nix @@ -0,0 +1,18 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "hugo-${version}"; + version = "v0.16"; + rev = "8b54843a0db694facbaf368af4e777d0ae5fb992"; + + goPackagePath = "github.com/spf13/hugo"; + + src = fetchFromGitHub { + inherit rev; + owner = "spf13"; + repo = "hugo"; + sha256 = "135mrdi8i56z9m2sihjrdfab6lrczbfgavwvfrngvi1zxnx7scmv"; + }; + + goDeps = ./deps.json; +} diff --git a/pkgs/applications/misc/hugo/deps.json b/pkgs/applications/misc/hugo/deps.json new file mode 100644 index 000000000000..47f67d4269c4 --- /dev/null +++ b/pkgs/applications/misc/hugo/deps.json @@ -0,0 +1,44 @@ +[ + { + "include": "../../libs.json", + "packages": [ + "gopkg.in/yaml.v2", + "github.com/hashicorp/hcl", + "github.com/pkg/sftp", + "golang.org/x/sys", + "github.com/hashicorp/go-multierror", + "golang.org/x/crypto", + "github.com/pkg/errors", + "github.com/kr/fs", + "github.com/kyokomi/emoji", + "github.com/bep/inflect", + "github.com/BurntSushi/toml", + "github.com/PuerkitoBio/purell", + "github.com/PuerkitoBio/urlesc", + "github.com/dchest/cssmin", + "github.com/eknkc/amber", + "github.com/gorilla/websocket", + "github.com/kardianos/osext", + "github.com/miekg/mmark", + "github.com/mitchellh/mapstructure", + "github.com/russross/blackfriday", + "github.com/shurcooL/sanitized_anchor_name", + "github.com/spf13/afero", + "github.com/spf13/cast", + "github.com/spf13/jwalterweatherman", + "github.com/spf13/cobra", + "github.com/cpuguy83/go-md2man", + "github.com/inconshreveable/mousetrap", + "github.com/spf13/pflag", + "github.com/spf13/fsync", + "github.com/spf13/viper", + "github.com/kr/pretty", + "github.com/kr/text", + "github.com/magiconair/properties", + "golang.org/x/text", + "github.com/yosssi/ace", + "github.com/spf13/nitro", + "github.com/fsnotify/fsnotify" + ] + } +] diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix index 73dc8433b88d..2fe806649c24 100644 --- a/pkgs/applications/misc/mediainfo-gui/default.nix +++ b/pkgs/applications/misc/mediainfo-gui/default.nix @@ -2,11 +2,11 @@ , desktop_file_utils, libSM, imagemagick }: stdenv.mkDerivation rec { - version = "0.7.86"; + version = "0.7.87"; name = "mediainfo-gui-${version}"; src = fetchurl { url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5"; + sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/applications/misc/mediainfo/default.nix b/pkgs/applications/misc/mediainfo/default.nix index c512f6a249e7..77c1badbf401 100644 --- a/pkgs/applications/misc/mediainfo/default.nix +++ b/pkgs/applications/misc/mediainfo/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }: stdenv.mkDerivation rec { - version = "0.7.86"; + version = "0.7.87"; name = "mediainfo-${version}"; src = fetchurl { url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5"; + sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/applications/misc/multimon-ng/default.nix b/pkgs/applications/misc/multimon-ng/default.nix index a9f0cb2511a4..8e39c258333a 100644 --- a/pkgs/applications/misc/multimon-ng/default.nix +++ b/pkgs/applications/misc/multimon-ng/default.nix @@ -16,6 +16,8 @@ stdenv.mkDerivation { nativeBuildInputs = [ qmake4Hook ]; + qmakeFlags = [ "multimon-ng.pro" ]; + installPhase = '' mkdir -p $out/bin cp multimon-ng $out/bin diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix b/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix index eafa0d6d18b8..bca87b12b9f2 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix +++ b/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, xrdb }: +{ stdenv, fetchFromGitHub, xrdb, xlsfonts }: stdenv.mkDerivation { name = "urxvt-font-size-2015-05-22"; @@ -13,7 +13,8 @@ stdenv.mkDerivation { installPhase = '' substituteInPlace font-size \ - --replace "xrdb -merge" "${xrdb}/bin/xrdb -merge" + --replace "xrdb -merge" "${xrdb}/bin/xrdb -merge" \ + --replace "xlsfonts" "${xlsfonts}/bin/xlsfonts" mkdir -p $out/lib/urxvt/perl cp font-size $out/lib/urxvt/perl diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix index 6d7ec762e77f..64bcb0e19210 100644 --- a/pkgs/applications/misc/slic3r/default.nix +++ b/pkgs/applications/misc/slic3r/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { EncodeLocale MathClipper ExtUtilsXSpp threads MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus ImportInto XMLSAX - ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild + ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild LWP ]; desktopItem = makeDesktopItem { diff --git a/pkgs/applications/misc/wikicurses/default.nix b/pkgs/applications/misc/wikicurses/default.nix new file mode 100644 index 000000000000..54e56785071d --- /dev/null +++ b/pkgs/applications/misc/wikicurses/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pythonPackages }: + +pythonPackages.buildPythonApplication rec { + version = "1.3"; + name = "wikicurses-${version}"; + + src = fetchurl { + url = "http://github.com/ids1024/wikicurses/archive/v${version}.tar.gz"; + sha256 = "1yxgafk1sczg1xi2p6nhrvr3hchp7ydw98n48lp3qzwnryn1kxv8"; + }; + + propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ]; + + meta = { + description = "A simple curses interface for MediaWiki sites such as Wikipedia"; + homepage = "https://github.com/ids1024/wikicurses/"; + license = stdenv.lib.licenses.mit; + platforms = stdenv.lib.platforms.unix; + }; + +} + diff --git a/pkgs/applications/networking/bittorrentsync/2.0.x.nix b/pkgs/applications/networking/bittorrentsync/2.0.x.nix index f8ba6a5c5f6d..d2db3eec26e8 100644 --- a/pkgs/applications/networking/bittorrentsync/2.0.x.nix +++ b/pkgs/applications/networking/bittorrentsync/2.0.x.nix @@ -1,9 +1,9 @@ { stdenv, fetchurl, ... } @ args: import ./generic.nix (args // { - version = "2.3.7"; + version = "2.3.8"; sha256s = { - "x86_64-linux" = "1hnw6bv60xrnc733gm1ilywc0y93k2g6bmwgnww9qk7ivbvi6pd1"; - "i686-linux" = "0hj8nbq6mava15m1hxaqq371fqk0whdx5iqsbnppyci0jjnr4qv1"; + "x86_64-linux" = "02n5s561cz3mprg682mrbmh3qai42dh64jgi05rqy9s6wgbn66ly"; + "i686-linux" = "118qrnxc7gvm30rsz0xfx6dlxmrr0dk5ajrvszhy06ww7xvqhzji"; }; }) diff --git a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix index ad26ab6e9501..19f130bcdc6a 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix @@ -4,189 +4,189 @@ # ruby generate_sources.rb 46.0.1 > sources.nix { - version = "48.0b1"; + version = "48.0b7"; sources = [ - { locale = "ach"; arch = "linux-i686"; sha512 = "464c3b19ab7bda118d962da2699dd40482e1742887bcd9d72b8b7d211c7ab085aaf4c31fdea3c4e195af9030276118431ed7c2e6a917b354c5bf9f55cc8111a9"; } - { locale = "ach"; arch = "linux-x86_64"; sha512 = "d9f9844fb06637ca7449bc00c54c02abf8660c42207c0671fffd53e2415df7b0fc3df782c4a2ccde807b4c2e477b0cf3a74c36acb7cce3f75e4ce267a3575e5c"; } - { locale = "af"; arch = "linux-i686"; sha512 = "77bca1f05627ed9ace120eee7a7cd24fc354e9bf23a7709e38879241ad87c5d39a8cfcf2aed12881b6f9d6d611c334a864c20c9dee877952990c47c631c6a61b"; } - { locale = "af"; arch = "linux-x86_64"; sha512 = "bf4d5353a46778d93627c232c404c768e643420b17d490c932848d126846e4ca3a185df671dcf72b1c1d3fe75606c212e6b0dadd2169b52c4fe73f5088e87b94"; } - { locale = "an"; arch = "linux-i686"; sha512 = "2882258205866c93a4b808b7397ff62efd629b74b5233154190ce72ddd0be5d1eb8153d686d921ddb72049dfae0f11c3eb46128413e578c0f9f6323636a0e378"; } - { locale = "an"; arch = "linux-x86_64"; sha512 = "543b1d66dc37e1843f370ff071adb050af16e5777bc0042c2d25579a7d99b5b1d176ea099a0b3afc19f270ad5f191fec65e544634e2bbc2223ccc6afcb1869e0"; } - { locale = "ar"; arch = "linux-i686"; sha512 = "855fc1c71b50ba5b8354ee7ce2ea59664b40b77d007d99ea6b658873de729e22ca9018e475a669992b2e2bea9388fe0966e06f1e2b0d334df4ffbff2be147949"; } - { locale = "ar"; arch = "linux-x86_64"; sha512 = "8ff272dd30cc66460a617dd80678b68917067b87d63d6b307f6d60e61deda092f46bca9e890d08b69a0738f4c204cd2c5896201b362df68aa9abbe7dd0fcc96d"; } - { locale = "as"; arch = "linux-i686"; sha512 = "607039866932e6ec0692c534aa2e4ddcb3725d81f2908e7e905edafdbafb3221161f5ae4a5b6eb2ba065e9bd66e1f63c008015b17040033ed90ffa0576b1d08b"; } - { locale = "as"; arch = "linux-x86_64"; sha512 = "59f3c28bcbc50a9ffe780025e03edafbbf82a213f28ba8e0f62a04a0e052038c24e1a5928ad4a730455bd358fc3cd0f1188e785dd13f79b377d86e5c55360735"; } - { locale = "ast"; arch = "linux-i686"; sha512 = "c9767d9b73ec2dd411e16b1fab503e97b7960c315533ca529c4898dd10a6e0f809104588ac33f440e1026d026d114ec080cfc312b1902601958656607cdd4ad1"; } - { locale = "ast"; arch = "linux-x86_64"; sha512 = "f4c7ab66af5e7fca460999b3d68793f8099b177809e70f682fcd7b0a50a3d5ad2a1c15bc5df5a63c37437fce9d70e08e963119755626c357bce6eb17bfb229ee"; } - { locale = "az"; arch = "linux-i686"; sha512 = "58bb0eb057caf6af113debeb8d9d7eeb3b2fbd2c52c9dac04c527a67da45b3a4ebac4debfea1704639cdf20ec116876e140f4b55ea5f2b90f3afb9db6b2641b6"; } - { locale = "az"; arch = "linux-x86_64"; sha512 = "a82fdc532e4d9fee9ffab9ab8aa58074c4ed174c131d56b4ed48b1ebce1f8950371fa7c7e174c4f35150b752cdeccc2a553b416e94fb3eec22c0c4467c0b1f20"; } - { locale = "be"; arch = "linux-i686"; sha512 = "55a96ff3fe9e54ec09a828f740899118504848c82b9c842ed27b9c1e1179f8efcbb2fae5e25f01dd1440f9d2ad896e37056fe8240979cf2c60f536870590cac3"; } - { locale = "be"; arch = "linux-x86_64"; sha512 = "6fe1b00f8a03160a5131a52aba5b31401bf18913eb5b6018d1dccb0456ee09154c76220bb94b1ee20bf5b8e63535a888abf895af570e9a668395b497bbdf90b1"; } - { locale = "bg"; arch = "linux-i686"; sha512 = "e21d3a2234b533b9d5904be3c1ee4f489bfdea747ff2b45828c40712f70d631ca824375c7a232989741bfceb8a7eb1ca341a4709285056cea2cf3689326a9c35"; } - { locale = "bg"; arch = "linux-x86_64"; sha512 = "160600a553d452c30d533e4d9a4ccc4c4d0cbbadf7875856f9be0fc81dbb7a686aa79f47ae8ea1c1e3746d150db31c7ce0dc18f1d271a47abb6d9bc35f478bf0"; } - { locale = "bn-BD"; arch = "linux-i686"; sha512 = "6a4267ce4e0d474779f16a7bb31fb873c0d2ba4af993428330bef8c93a24c1f9121b68d50956beb3df549fccf233fa2ce851c69950bf93cf6cdf34debae0cfce"; } - { locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "31100d78f0b2fcca2643c822f930ffcf01da9ad3c026d8e05e88b659afddb9d55a000dfe043a87d6e4008d40fced109c134a3bb2c8183a1044d462fdc050989d"; } - { locale = "bn-IN"; arch = "linux-i686"; sha512 = "cb0efc8151949b33c23cb9d4fe41168830e215d4361963ec9399e43c97aa4504b4539a202f2c43283e63ea0a4afbdffb9bbfa1340a256483c3b848ef24660734"; } - { locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "37e8311e0126da80740b9f97b4b69eb2285716b309e1986daaec5becf88ee5624343ca3b208fa84eb63477f47234c8d5958e394bf750da32e02d777ee94437f1"; } - { locale = "br"; arch = "linux-i686"; sha512 = "be6cb0e7b1ceb0be27a7203620b19341c16061ce0d4632f9ce135b2559db2ca31adac2e40ef95f98db903fd151a1b5d411232361631272f2d6200dbcc45464be"; } - { locale = "br"; arch = "linux-x86_64"; sha512 = "aa71bd069902a921b2a61ebbcbb604972104ba5f4274788da261e1e527dc7ce10c6a9aa0652773f0d0499d53c2916dd1e2d862b900fb87d678a9bcb401948cba"; } - { locale = "bs"; arch = "linux-i686"; sha512 = "5282780a9f35577498b95ded38f86423d043429a0fb4b9ded956716381a3343ebe653508e8929bd8ac7475a2fa0d6c4c67e84482cae0d40a681338eba09f4c96"; } - { locale = "bs"; arch = "linux-x86_64"; sha512 = "1056be9971338d821025a5d272321ea4b1704f3103c02014cde711516e9da5303dbc5753f0c2c1cf236096a53b3b067261b628f17d6d45e6c713f5b5cdee69b1"; } - { locale = "ca"; arch = "linux-i686"; sha512 = "15c98207cb051466bc89dc15fb2dc1da95490306030fb318f3e3bb184d23590df7213e183af2e5178969099a4edf9752e5872a9d4a091958d7a9ab6087ff6bdf"; } - { locale = "ca"; arch = "linux-x86_64"; sha512 = "f7fc94c6c358dff1336938ff2d28c4fb9b0d391c22acefa7e286004978570e18cc1fd1a41a101a8bee27cbec1d750e04ba43cb409886f2b72e8e16a9aed6c835"; } - { locale = "cak"; arch = "linux-i686"; sha512 = "96da63ceb6d4382abd8d1e343fdc4b72ead5e5ed2e3d451e768c6b092186287dcbaf239c389d29bc23e5641495a3f2a05512377300f45402428647ab77550b17"; } - { locale = "cak"; arch = "linux-x86_64"; sha512 = "8584d4d82c79a56657a01a9cff211fa99e0fbcf0a42103a6cd9688713e7c11b77f35535fe31ed7e48855e055897b2c5fd84c2b1796c313401d8f01ed889ac7cf"; } - { locale = "cs"; arch = "linux-i686"; sha512 = "2dff956f8df85bd007b68eeb8b809ddf7d99a6185f6946d2f4fd371f17e4dbf46bf2aad1799b6a1c84bd983935fa2ade5acd3b062f3eee48f7a160f37f3e8e6e"; } - { locale = "cs"; arch = "linux-x86_64"; sha512 = "725a2e1272722cdce125b5dea7e61525a43ddda6a45cb003f397ec8d1c9334f11adcd7fb6dd2c901de1cd9a0d07eae54304e5f95ecc6c529c80070b9d6af1b47"; } - { locale = "cy"; arch = "linux-i686"; sha512 = "5eeacbc1cd803687235927a91923895930e135a39de62574c79499fe56accb5278da3efc4d151f0f93ec482ad44099481960dd6e3102afa94cce3c30db67b133"; } - { locale = "cy"; arch = "linux-x86_64"; sha512 = "49fc8136b3900b96fcea850a9549812b1cf1e9b1058cf99ee7e2e135cf49827e46ef4361badcc4efbd5dd09600d5269e68392f8df03c2e039d6b3d04b244aa71"; } - { locale = "da"; arch = "linux-i686"; sha512 = "f806a36960cbec3624be8ebf6e7f8116635c7fff63ca890a886bd16fe73ec8a311d1e8b3c34ca680425d4634c91f8b96b0617cd175eef69e701d7c72e8917872"; } - { locale = "da"; arch = "linux-x86_64"; sha512 = "22a274b9a5a1e670369009f2e48a4b7d2f63f18baf435d001506dd590b59115d43619fa824e2156b468b17739aea420621148ca47cd46bc3ace31bc5be4533f8"; } - { locale = "de"; arch = "linux-i686"; sha512 = "6d64a77f420d1f87b7dac151eec75d4d42ec1f904b882b970d88b0e20a38ed5ebf8cbb2180abbdb8fb00dd60621e538fecaf77e09c4aee51f71a38a14f81b9b8"; } - { locale = "de"; arch = "linux-x86_64"; sha512 = "897918d57691fb1a3f93273da48c128cf8a91e9bc5dd12d0ce2b4a085ff4df01db3ee28a378f36b7e7944c23f71df8a6dbf3481ec207cf85b73f3bac95bde054"; } - { locale = "dsb"; arch = "linux-i686"; sha512 = "d5fa1438b71fcd3507175619090840cf983de9efb003f537eb28b9dba66f1cb3518e1410c4918187eb25766634464aaa796ebe0020f8fc110361008751e1c359"; } - { locale = "dsb"; arch = "linux-x86_64"; sha512 = "30cb3759bd1f6ba91dfa847703326a57901782ebf397adaa1a403afe894f9b8cdeba80fc910f50037bae003e61956845f605b0e62c364c1c415b12a5abb87080"; } - { locale = "el"; arch = "linux-i686"; sha512 = "991dfd0870e38ee4a8887a61ce87a4c5af1c21206442a0602197caafae0be2c3c5aa4c7b25fd92fd9968bdf25c780ac342dd0203c3df8d729034ba20a459d120"; } - { locale = "el"; arch = "linux-x86_64"; sha512 = "d62b4f1eb5feeb30e4d2d7b8cb7391f374a209d14b70cdd77acb56106b6df36f54c67a3c5fa1ab4286fd7c46b5d0a42efc52d140b8e5cbe08b17c6d7bd14b498"; } - { locale = "en-GB"; arch = "linux-i686"; sha512 = "2cddfb3d4472bfda882a3e3a054d5826a596bfd6b9b4399d7f45c6ad9f157599206f5e149f6c4fb35845ae291320520bf7a76c891713f1951c6e9a9450e92d23"; } - { locale = "en-GB"; arch = "linux-x86_64"; sha512 = "d6bda8496f96448b9b046822547167c9c631dbf35c8bba07226634fc9aa1058009200d10e4e586fe059ab1e7b558d6cfa2c0040a33220d46dba5ca742bfe6f5c"; } - { locale = "en-US"; arch = "linux-i686"; sha512 = "a9025b8d66c9294ede71ed37b7df256476cc640f7b7ce74cc4998c0b4b5741b5f869c486f1eaf4793fb4b2f347ba069f859e1c5318fa8df18c52377c83f8a09d"; } - { locale = "en-US"; arch = "linux-x86_64"; sha512 = "a551550037fe762d6d06a4f046ff4e2f37cd2607aace13df5ba2e28d643ddcef01210367555fb2fc66c6fe45d83f0306f61f4139001d1059ea5e913fbd43cd69"; } - { locale = "en-ZA"; arch = "linux-i686"; sha512 = "3e4721593a69bc289c7299b64e91af0ff121d59ded0167bfdd6692dc6d7a0ce0b0a7e8e89a591cee9fb90dc8b9eac26c5d978e4443b1d3462a0f4030ec8c5a50"; } - { locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "76e069c8938cc133576c934e4049fd4d8920d8a823122f1961d4ab69802e9e52e920873fc1406dbab01edebd0cc576ccb12df0ebbf5487ddd49c339111bf7101"; } - { locale = "eo"; arch = "linux-i686"; sha512 = "ff071fd2545a8dfe0fbb1b1dae57d3fc4b0743698e54746da1f774b568b2b9ad9b0e14e2cd27f56031e1d159a05ae7d54060509532a7503b3dcc7fffa442a514"; } - { locale = "eo"; arch = "linux-x86_64"; sha512 = "7705efee2c65de30a0efc6ea0c372061f47c4266ab7faeb6feb01bfde4324ac92ed99a9eab81d8c4e2e6972245953a200c4331b26845eb7a2f9e048fb3023840"; } - { locale = "es-AR"; arch = "linux-i686"; sha512 = "3c08ab10d76650fd11ecd9616af1d4646fabdc55b63c7625940630f8aa25427482a3ff04052b91e6aceac708ca187552f7c87343d08c01cc1b4940e341e1672b"; } - { locale = "es-AR"; arch = "linux-x86_64"; sha512 = "b6d700123f612b93b952f05bfa92dceed8878ad20a84214f8daab63e4eb669f1f69a9a5d6d28896b16b19d3dbd710b98a4851d7f611bea0fd79e41930c3d838e"; } - { locale = "es-CL"; arch = "linux-i686"; sha512 = "7c64c7f7058b1cb3bd5f55b1afa0bc2e779d46d05e5dd354fac7573ad6245ba31aa126301d827ffd17f197b460be24c98ad7c2a9a3d4c66cb6189618a4e38ebe"; } - { locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dcc4b4085fd4e480e79ca85b862c421f6e85d200d46b40178ce27177c1ac00f0d19d0c71ae3d7c12e15bf570cd0234743d080d06dae1e9e3c0c2f0eccf4bdf86"; } - { locale = "es-ES"; arch = "linux-i686"; sha512 = "d049bada399fbc723ceb14aa116b9218d14729cca6a2297d852782e4d3a0cc7e278aecc62ec4b7f1e1c5af10f65d0cd0bd39e6fbf95d989ce4d2ea5b0e2f7901"; } - { locale = "es-ES"; arch = "linux-x86_64"; sha512 = "a77978f8af7f932151468c9e002731c8b6b3e9d3d8d8dfdcf28cc545b63f1d859b99c6dd25c547201b050f58bde9a55fc67b8134ecb0c893ce50f7788774fe99"; } - { locale = "es-MX"; arch = "linux-i686"; sha512 = "46a7bc0f112f99ffc218e0161116b373c5b496e8d73744f9ed341fcd0fece5bc4618bcaebd68cb0aa80bf86078163d92205d322464dd8a918463507e4a9bde9d"; } - { locale = "es-MX"; arch = "linux-x86_64"; sha512 = "412f52d4eaf3f85cd452d18164d2ce13d3057b45bd4f81ef2255a3580bb5b7e68f23dfc8622dbe3c4d69291b1fbb4a3312a429713b940b081415157fe5dc849c"; } - { locale = "et"; arch = "linux-i686"; sha512 = "34d56c20cd06f224d1a3916a12bfd3f076a1659d9bf21aacacd5bea59e789ff496600b712a12f0b67410da97e0500d2f28f1f916872bd223f9f3b913ac648552"; } - { locale = "et"; arch = "linux-x86_64"; sha512 = "383a4e2b28217651e76a06dd84eed5f058bf53c25847a6ef0ad1ea9e6a3c98f6a94ef05999a92f03f669e7cea0df11654b201c4e21fc595fcf99bc91b90c05df"; } - { locale = "eu"; arch = "linux-i686"; sha512 = "cae20dc1b9880dcd9ecf4331bf1b6c6208a63ee3490ac8b827c9e338916a9d07e447f93be4108db78ce3cc96b8d3828f1882c28aaf28f198fa4f875035ca5835"; } - { locale = "eu"; arch = "linux-x86_64"; sha512 = "38ff3155783328b685c72f1ada0e01ab8a8fb75b191455dd43de590207f9b3a258da7cca6ecd3538a7d8319c8d1372e174fea0a22baecb497ca33aaff80a33d2"; } - { locale = "fa"; arch = "linux-i686"; sha512 = "6d4d15e4897568d32128f193fa7bb413e63cb2bca23b81a16cb5b9ae7a558b768193461a182552da1153dfb708f834434a1fb63478cb5fe7984b91d00415ea34"; } - { locale = "fa"; arch = "linux-x86_64"; sha512 = "6439f27cec2a8af66a4e68406c88b536c5f8e2b0202ce82aa46e75f840cb3977ddb041d8ee315d95505ebaa0e37b36afbf26ea0f39310cda09f6e765eb7bb120"; } - { locale = "ff"; arch = "linux-i686"; sha512 = "ee9114fe358d9a6dcb7e404f13fc594de9339fc7ad126063b52548d42aaedac7abbce9e647766462de2716c3ad248b6992dc04e96ea3816068e884c30a3bcf84"; } - { locale = "ff"; arch = "linux-x86_64"; sha512 = "beae2223a6b3aa555c071b51a46d3b0758efa53b6002f2486554f5bec154cfc1a1598f0175af654fc47a60a170eda916152e959a5ce2f799b779e5040ae15c5e"; } - { locale = "fi"; arch = "linux-i686"; sha512 = "d8414f63f04a5a9c916487f93c67d2368bb4d8c8fb757c1d58233e6c6e6bde139f323b1c77dda57730173c6005b2647c688f7072ac09c1962b04a2493cdfa18b"; } - { locale = "fi"; arch = "linux-x86_64"; sha512 = "7e0fce63b69653fa5d0d0ffa9598d10976a1f49aeeb48bcd8eee26b51ca1f6d1d898c84944a442d530abcab700dcfdf89c48ca23db9d835c877388a8f694b7ea"; } - { locale = "fr"; arch = "linux-i686"; sha512 = "c3bfda75397d644bc4392ef87f1d24faa033f4c5672adc4d5d0007d5fbd63efd7f46a2febd0bfdf95d8f06152d274daf39ef6355e049e7fd5e53e2d750d03ae0"; } - { locale = "fr"; arch = "linux-x86_64"; sha512 = "81c8091c9d8cc1ede738bb1d9b4fe72580d13de7e3f89410d1c684ca017ee197837788e63243c9722b30e23b2c910cb54fc7985f4936bc6068643a504d9a4ebd"; } - { locale = "fy-NL"; arch = "linux-i686"; sha512 = "59797af1d76fb2afceb06de28c6fd13bdbc14d42c61f87f1f71d8273e03aa691e2ade3ba0361d19721862878c911ec46ffbfd0431d19d6ec0a92ebac05cfb4c4"; } - { locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "19d0cfb01374bf2842a17ef4e9f5ab85280c1090723c1657459a230262d22aeb14c2faee1b86ac0b342c5926cbbf0479f2e1ec315117c06ad3272a3362d02f8c"; } - { locale = "ga-IE"; arch = "linux-i686"; sha512 = "c1a4fe00a36e95fcd33d21544ee6b4fa5a6eae0628a37c27057cc801a641fbe5519818ccc157b87b64f24f4886dd6dd629809c89b9c89dc4878de794e48b107d"; } - { locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "8d9654ecf7b6cb43b4794f345105c779809b9bd39a9dd46a0fbb1920139e9234e7433fd9a8d7dd57192c738d187f97ab82c8dd3f3a2460e3a34cdc9e9a5c5089"; } - { locale = "gd"; arch = "linux-i686"; sha512 = "0d48b2886c431a9237293f24fa5f8cc7104a3373b24c98e23bbf93f66aeeb5b8b9e737712bdd1c777db19bbd6b01f9a33f0c388b6af023d852cce6543d486973"; } - { locale = "gd"; arch = "linux-x86_64"; sha512 = "0339b6952f993d38686d92ac9a664cfa558f2827b92ae3464188f12e28e2676c8c4718cff62a840dba14de687434cf13902a621094f63e1bca1ebce321800d15"; } - { locale = "gl"; arch = "linux-i686"; sha512 = "5cecaede8ebdfb58951b3f839388b81dccaaaa5d3b4fb5cbf26978b23cd962905191fa91d961037fa15000af47ab48042d272fd18a73e5ed4dcc2bb0ff4416ca"; } - { locale = "gl"; arch = "linux-x86_64"; sha512 = "d1a0447ce592e7d2a8564d9c27fbce5f9378a4e21db3fa501782e57b6e13ede6f42b612fffea32e8891d47010509ac8e3ed1f63c5a81878008f9bead68b6b750"; } - { locale = "gn"; arch = "linux-i686"; sha512 = "aff2f407e4c947d3e34447b43e844135562d79bf937a05dad5ce4dd1853dd479f35b4f6af1b2d8b52deeb9786a4fc67980cbf58ad82a747a7e55ea753a50ad43"; } - { locale = "gn"; arch = "linux-x86_64"; sha512 = "78645796fffe364fcd28b80cde591d88db91a756318f645610f6823b616222c0c53faf8d55aaf1703d4bbcec1e8381cee566bb5739ccfa181e1d1224408463de"; } - { locale = "gu-IN"; arch = "linux-i686"; sha512 = "331bc227d138a49d74cca37f8d7ba4e6eb891064357aa5b0606761f9af8cc4a029816a3a96cc3ac4dfb71b1d010c569940ebd70375fdd06af7b6b487bd90dafe"; } - { locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "d1f6c5af9e75e76683d39281eb559ac688436eae65d6bc486763028744af030a6c311d1f0358ead5e88ead60357261032dd739251352cde097986251dfdff325"; } - { locale = "he"; arch = "linux-i686"; sha512 = "7a49d8cabab6aa8480026de6b77e1b6d60333c580d2b9591cf3fdc8c491d269f6a7a7f93118594de8c87576dda868f12de5a88f494736f721ee3ddc16a9afea9"; } - { locale = "he"; arch = "linux-x86_64"; sha512 = "0eed4301d7949415d21426d9e52825710a0f48a1a0a3546f62d757059091bf12b3b53091f2c3102de0682162e3982a9fb58c111c9a6b8245d84825892e1d6844"; } - { locale = "hi-IN"; arch = "linux-i686"; sha512 = "70ecabcdfee807b1a7e0b6a167bab07d3df798672a61bb7b80d1d6c3ace9385c472e08dd31f2c4c684cd5e723e7024016728df7b22943d3adec3d770ba7abd1b"; } - { locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "11e8be059afa8298a23857bd68b2f895bb60f73378c513d2aae0395b5faed68123631d9ee44b5608263334269e33b76b4563c063b2feec486e7a2dac1be42275"; } - { locale = "hr"; arch = "linux-i686"; sha512 = "2c99b81cb0c8413aa98dcbac2cbd45d59a440c173a9cd744b78ee0d60b82ec4fe4894fe5e313d51b81caf6b86f40effdb36f5fd90c73cab82acf97c20fb5b152"; } - { locale = "hr"; arch = "linux-x86_64"; sha512 = "fc209d82cbc24eea777a4318f5555d2cea4828bb7f305f868b8fca18014ea7c930f778c716eb0b9c1a7e29d9a4353b4c537900f9d659c432d6a75b1eebf30963"; } - { locale = "hsb"; arch = "linux-i686"; sha512 = "3232380f15a33f31f8e3755707231ba0725b9afdae1d2a0d4fb2eb883ab4dcb5c8aee75549e41e7e2cdf445b6f39331b2be4d7e417604987c7ced46d2dd5dc51"; } - { locale = "hsb"; arch = "linux-x86_64"; sha512 = "11bb460c404316c322e2498986ac6e7cb976a196de7208ee54dcd4ec61b8f05fa8f7782d6cf462cd5531f3137b1688b7797da2d78437e3c4d4f95867c781953c"; } - { locale = "hu"; arch = "linux-i686"; sha512 = "40c3837c7ca4e0dc9e97e4c4422e54cc3ef157933ce9969abf71fd422fbcad517a6f6da3bcada83d3567323e83248a060fccc8a23a7f6fb55568a5b7ee0ff464"; } - { locale = "hu"; arch = "linux-x86_64"; sha512 = "d05bdf14ed9c72031a29e7e9b39afe79bd2ccdc69bafaf8c6196081d462b0aa57a220a8a2105812b215067494c53de8adc994fbbb3549ccfcadfc15f99c710ac"; } - { locale = "hy-AM"; arch = "linux-i686"; sha512 = "a9da495cc3e7a1e89ca8dd7a3db6c83529e0b7ba6562e7f0542f8b9c93bee8e4c219973b0b6fda1abd046d933fca718fab1f6bd4350ee960ddd89144dd321ed6"; } - { locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "53db4843e0c9e99188e28bbe46b09239d998a3bae35ab79954bc6eedc5e73c0f3010c500dbb93f8a6ee2d5b22fb3ee9fef9ef6eef2dbbadf4b83f948282a8bc3"; } - { locale = "id"; arch = "linux-i686"; sha512 = "05e7450a164c940e43ce34f6b7c9ad610d1652f11b0f030dfea7c9d8539961b2f3e69ab0d3b8d714725cf3e8bb256f18f4ac3613bc86bbf6223d9914e4eb77f3"; } - { locale = "id"; arch = "linux-x86_64"; sha512 = "7ce0b880406dfbef90ca6ae6f121eaf72bd289e7b57f7686ea83fc182cb9b54a3e0bd8b23bffbcfb3c9e82a6b13c7afa16ce56d426f33f66072db4b5f466db04"; } - { locale = "is"; arch = "linux-i686"; sha512 = "71446911d5142ab19308aca456dcc1d4d087db07898e331604230faa58c2146b980212880c7f88b6e3770b303a8450cff9e447638b5a063daf50ec25d29de738"; } - { locale = "is"; arch = "linux-x86_64"; sha512 = "2542f214cb2474eab97d18a1daffb1181fff569058b91c1c9d7d6400b8401020b69ea9492fca55153c904289be45215b37ed0846d563f8f06ba401c482d59762"; } - { locale = "it"; arch = "linux-i686"; sha512 = "bdf0da50be211492e2acdd9de223ef741fa916c54e94bf9c8eb20685006b68b5f430949161199a915c368d11143caf828c25b2e82c33fd5a61bfcd05de53966e"; } - { locale = "it"; arch = "linux-x86_64"; sha512 = "a4562fdcac6d9ba96fc840498bbb381de6190158fea65c4809ea1ff3518181ed47b7c33bb772077975fd07c23a1e8700403cb6cc67c5fcb1c24e72563214f4bc"; } - { locale = "ja"; arch = "linux-i686"; sha512 = "cc81a02282474928e7d2efc694761168db022ffcbf5ff32d92c21b90edfb194187dfb78f2eca4c42e60cfbba8ab6614c1c7b0359aaecafa47b1c9d3918327cee"; } - { locale = "ja"; arch = "linux-x86_64"; sha512 = "07cd92b7f9647f774b080cfcef828899144cb03472d70394be197c43732b164978e1d9ebc9212a47b58fdcc61f5009328e766f4c6f799f35d73a4dcd2b31fdd4"; } - { locale = "kk"; arch = "linux-i686"; sha512 = "1bef31c35180ad7fd49ab695a6985d8be301a6802225d319e979b8c716e78a5687753b6f63516f4b4221c402a2d2c8c0a0e22aec9023cdee98d71a4335728e7a"; } - { locale = "kk"; arch = "linux-x86_64"; sha512 = "dff599278a27fe2b4efbcc99b7ad3b211ef5debbf1b95d765a36fdbdbaebff69936c250018f237843481244e2b02cb8de4e3090d9422adcbb3d8af4239759269"; } - { locale = "km"; arch = "linux-i686"; sha512 = "0080783187b80019cb4c56e2b30a1a403c632defc375adab7d613489fbf7f217a22a779f0119e2810ee9f0bd024418ffc654df146873a06f59bc7f1de5fbf244"; } - { locale = "km"; arch = "linux-x86_64"; sha512 = "84d1ca7fd0a4d6a39aff375e922dcdcbe51fb2b497c6eebc312abe6cb5b29bd049e648197f0181bb2ee1b47b43275c14eb13233958c0bd4f7cf7b28e5725de97"; } - { locale = "kn"; arch = "linux-i686"; sha512 = "2dac35157e3264547726ad33f786bd86e52a4db8aa8d1449cdfa9993e5bc16556c6005e06cee915e427e74b3eb4eed665a4a6deed7bf3800a95319346fda3690"; } - { locale = "kn"; arch = "linux-x86_64"; sha512 = "175b3edf58286a229ab4045ca2d75f8a00e8ddcac532fbfc8aee5a048e0ae0cd5044155a8619d6dc53756150bce2d46b910e1abe216bf537d259435199cb42cd"; } - { locale = "ko"; arch = "linux-i686"; sha512 = "1db17eaf47e7916366d05021d683c2b4d8f26316abc057a450d24a5d19fa1ed9aaad2f7a45cee63c0f021d93214b62a032d17312cdb123289b31dd2e5bd43808"; } - { locale = "ko"; arch = "linux-x86_64"; sha512 = "4bc673e54fb0c30b7c8389c2a66b322bd4b19e8635cb3d633754214c0726fb95d3194d09435bb4afca17e6cb3f03f028408d13f9ed44d8c2b9c323eabe5101e9"; } - { locale = "lij"; arch = "linux-i686"; sha512 = "8349ba8cf921d73f0c3bd54c9a30df9c0232d7686724a0d635435d65a6bc8baa1915e25702b930cbefe954b5aedd1d3faeaf54ffa9b5dc494e465a635a57369e"; } - { locale = "lij"; arch = "linux-x86_64"; sha512 = "e12597062c060dabaff08c251f82ad63f534c341d1afa94e567c763b7ac290cbb03a27726e03b449ff89fe8b86b25211e807ef7ba34e876d902705f9361d5cdc"; } - { locale = "lt"; arch = "linux-i686"; sha512 = "f67ff28a20ae0580aa537797928bf84cdc088cc0df586071a460eda6ea7b96337a5004b2689688a487ed246b5d83a14bf77a5002f39fe7ccc46e92f65b565cf1"; } - { locale = "lt"; arch = "linux-x86_64"; sha512 = "f4ffb37c69b9c69e9ea54d691bfa3c069b28d5b1b0b48b917f4c6f10c1434bb451b7c17e777b5daf3c869eeefb2a064264bba7591f681d319fcab00335b37384"; } - { locale = "lv"; arch = "linux-i686"; sha512 = "7efe759ef2f0e585a8887e829e2bdf917209efd5b3d5235f5765c0995206c25941abed9b11f9241da565a919f94890682a944d2bb7dd1d1360f67f173dcf2852"; } - { locale = "lv"; arch = "linux-x86_64"; sha512 = "63cdba3ea94fb1847913a42ba70193ebfbbf1235a28881c7d671b20dc8272c5989dcb8290087a0862cea7a4c8ff448ee61b42a13d6c03c8787be1dbd957769f1"; } - { locale = "mai"; arch = "linux-i686"; sha512 = "0619cde7ad13590d2da001fdf87e2fe9772d65d1ce468ea2b1f3085d8c6c157f48d23b343e6886969dde5827d12a368e208242dd16df4e498893d53f030665d7"; } - { locale = "mai"; arch = "linux-x86_64"; sha512 = "f65ab5c51b7dd0f127a4b9f65a0280002af3387b12e8730f8efd79f4700f6c5f5842e3f634dd738571995dfa52ef58ec0d68255ceb52c6a7df0332797dfab253"; } - { locale = "mk"; arch = "linux-i686"; sha512 = "e6d2bf183fc1fa88d0bbccbf058344e8dada0271694ba3bfc149e965ff16ec05ba6f7a04cc39f3657524555e84f25d072d7922fb2c075b0bbb8cd933336f1d94"; } - { locale = "mk"; arch = "linux-x86_64"; sha512 = "68a96a11e38944d654d1aa720b5a099fd0789520b8681f15cf33d972956e7dd2c44d940ea0b2840c48db79615aed8c83d3f19769908752f960f84a7bdcf3a2ab"; } - { locale = "ml"; arch = "linux-i686"; sha512 = "32c8e00f71a7fa609c3b99799f64362962d245d75865ce54fcd72e8cefc45f5cec7a99ed343a7bd92614569e62a02ac0e712b4ca3fce3d5d0f2f7ad52767c209"; } - { locale = "ml"; arch = "linux-x86_64"; sha512 = "c641244006a11de3b6ae947f2d5bf8b40fd4bcde8e7b71d2fa2a8258087bf3d6382f21b10b05b2554f031ee95a579d31d0e0d8f1b72a5e1101acb31075aee02c"; } - { locale = "mr"; arch = "linux-i686"; sha512 = "3949d3e4d9fa507c50f5ca92ee9cb041dc9d034f78d44343139a1576f128a06d8ef3aa2b1fcfe11d77a7489b0f7dd18e14f0ec0fff595dbefc219f6b1eadd969"; } - { locale = "mr"; arch = "linux-x86_64"; sha512 = "c323cf8842f695e47f3c91d356ff63bb0ce7a5cf47cbe874dc6956d90fd84f6330e6e1f5f0bbf61e2cfda66a2dd0e81a756f3b464108e7ad84450722562e5906"; } - { locale = "ms"; arch = "linux-i686"; sha512 = "f5ded01c47ac91d506a10774b198b3c2fdcff35a10ced17cd0cd94a1e367d489f2afe7ae22d59beb420f771684cefe3724c88313249a4c6072ce68f36bb16cbf"; } - { locale = "ms"; arch = "linux-x86_64"; sha512 = "39d4a052c21fe9ee876f8b8a7fabeae9a6a30d959e1a7b27b0a1fd08658cac5959aa4879e3056675e2b7de83f588cf82f5d138f2ee5d9b0bbd135b51de109f7b"; } - { locale = "nb-NO"; arch = "linux-i686"; sha512 = "6cc34cda3cccb3ce92f44244e291dc94238292ef6e91172d73659ca5b4b46fd004483680a7a45ad3643d59c57c7fe7bf4286f4cf7c903301eb39712db9bd3583"; } - { locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "da645c69d2675bdd1d2808f0d7446ded4414311bffe5f1a37a685f6f4338a56e831349a1a7904c0332266e909e4e82085585afb14b3fda7925698d66e9912a65"; } - { locale = "nl"; arch = "linux-i686"; sha512 = "a2d906caf6b4c36305cbcd2840915000c53db2ac03122aca162e672014b217237363bc309cdee5ec19d21106073044fe8668fd044805161bf4916cdd938565ed"; } - { locale = "nl"; arch = "linux-x86_64"; sha512 = "6288c2f0306aacd87a82a3a6262b514f32a177674e6b96eeb5a8f937ee36b6573d8a3e6925be87609e4d7dabd1e6367eb0e730d87148cd50c1572756bb098a5a"; } - { locale = "nn-NO"; arch = "linux-i686"; sha512 = "04454f9f5dd2611cc76575a41d56f6819c5b97e213f82ebf0aa5e8393d9cd4a99a9df5291d3e3c3985396a99559f39fe5dc6a85141ac1d2f4919b731d7539a89"; } - { locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "fb55685275d0b6c9e47b0356bd4249feeb3005b338d2a2caea4bb7b86edc6991752af9276db91f448032ba7d9e01209d92706f7612531232f87c05cbcb13f337"; } - { locale = "or"; arch = "linux-i686"; sha512 = "16639bc10229e171577abfeab841bd7b5dc411f4e314335787727803a486b8f04e8730a7be9321172fdd60791fce7363d5ce5aa28628cc4d2b7769357737cd0a"; } - { locale = "or"; arch = "linux-x86_64"; sha512 = "041f3a63a4cd9c0f287132252df7aa6d7eedc72650244729e01eb52a93a9ca8206a11cd7783e7778d4cad9a525ce2aef1c423840ea5c54fa202600a0b5805e31"; } - { locale = "pa-IN"; arch = "linux-i686"; sha512 = "7c9cda0d9dd9d1196ca33a58b6f5f3c3f09896bf65e8fbeed67fd9811cb1bdc12b7ca8966b7612cad524a3bcc9dd1e2678627f6cfe172b1bfc2d9b64eaac17cc"; } - { locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "56507e7e1e93ae880de5410b4ad8c1302f58b43ade2ee4dc70c1290334edf2ea05f7ddf2ca00317ee33662de29c635caad8f73332935fd5bd4ff6a37758bd195"; } - { locale = "pl"; arch = "linux-i686"; sha512 = "52cb7e700e541a82328c935a0a99313dad6b7699c09a1386697c77544284d53653705ec6d57f3cc1bec632962217c090ee39687a81b19f3a3af2178eba9a1eae"; } - { locale = "pl"; arch = "linux-x86_64"; sha512 = "77a99740ad99808a31df3e71038944901fc0d5339f919cce40389de67baeecf2b9c34608194ea1f0e4a25bbaed0ba06159d10ac8816735b34a2e28ab041ae97b"; } - { locale = "pt-BR"; arch = "linux-i686"; sha512 = "e39d9b22f8b7226ff2908b34847fb77cbe0c834f51985712024de83ece7549c8a89c3ab3d81abb6bfe6a7b21f18dee2d87926abf3d2edf9f8a8976242a4dcb26"; } - { locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "a03a0e37ecc2d903715b70eec0a4b2808a913a8e27398dd96206295e1e765283e97b76ba278b394f9629e352c10cdb2011f3184b903d0e6de784a13abfcf9668"; } - { locale = "pt-PT"; arch = "linux-i686"; sha512 = "2d511400948ce05358b9400752bba41cbd947d1a4a5a5a92f982830db92507e257c28ae319f411717253dd53a1a7e73607f9f62fb7b7c8666aa339fdc73ce728"; } - { locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71e2a000333ae8565de6fc9d01e871c2e894f96a9a2544a21aac08ccea0399da37d74c3230c4b3cb7ba0231fcdddaa417f78e48848fda8f063179766cb675038"; } - { locale = "rm"; arch = "linux-i686"; sha512 = "4337964e6daa7bc799f01aa52a33f04c060288bbb881c2321ef938658b57f05b632f734ea0564cddd0078f4b38d1c8cb2c2e6221849ca4aa80579f308fdc2056"; } - { locale = "rm"; arch = "linux-x86_64"; sha512 = "a55e250de5e11ef808243ef974fac8938c70269a36bcf9db898a11997722b8d96d60d76ca28e41e023b4c7e6614e323479d3d4d2831b83655ad3ae3eb5ed774c"; } - { locale = "ro"; arch = "linux-i686"; sha512 = "17171889ac7647e525783c96afa5a5de796d603c8fa6a7ad8d12205ad510f869b35f0df79aaa04e4b980c86ceb923f89936499df7e55539393e40ac92c23bb1d"; } - { locale = "ro"; arch = "linux-x86_64"; sha512 = "721912e5ad4b0ad0727f0185f660351b3c59291b3a22aa394f01c26ee87366b43b5aa08cdfc164c16117e1650837bc2007e42c34756dc26466edbb113f11fc09"; } - { locale = "ru"; arch = "linux-i686"; sha512 = "28dafdbe6ae4fdabc061c68ca82dc6ab8fc463da11c712500378d90dfb662d6e0991f35a918315ce138603283befcee182092ac4f8d348815bef27431252874b"; } - { locale = "ru"; arch = "linux-x86_64"; sha512 = "27bbd48859f5ed6053a2062778537f4952a0847ff74d2dd407766ef4b4f144903167b4fe80b98a5b2b80e42d6b730bdfed36fe9a958d247a335bf31f091b8c70"; } - { locale = "si"; arch = "linux-i686"; sha512 = "0f50616131a3b80499885ed5fb8573fd3ebe522cc893496d03e48ac6eafbc2a5224240971b66c393323d2583512dacb73f3201eef1a495298badad605cc76bb3"; } - { locale = "si"; arch = "linux-x86_64"; sha512 = "37996cbc994a7527c2ffc5143dfe970ae2fe0e098f0bcbf9fd4643e8297bddbe7fc0f4af2f2ee15b0807c339c25d780040e2f9f03975ba9f49359052a2be271e"; } - { locale = "sk"; arch = "linux-i686"; sha512 = "db95ce3b68fdfdfc9916cfbfa6a797370ddf58f5aa234d59bde6e76cf7fc0e821e9954cd0ce090404f5f718b9ede9c1ae6b9c7e37db9e64eb9d9dcfd975c6a79"; } - { locale = "sk"; arch = "linux-x86_64"; sha512 = "f9e28572c83e70c7658fd67abce93d021600fcf6b8daa7861cb6eff315a28c0e531f1082f6c25f5779371b2884c975fbc22cb953aaf589ba6b050bc736d25d9f"; } - { locale = "sl"; arch = "linux-i686"; sha512 = "e40c201c5e892a83a23ac9f1af22e9274bf6d964b39bae2e191bdac100170685376fa81210ddca38c76e5277978772c693563e55871318777cca7ac7e47fd1f3"; } - { locale = "sl"; arch = "linux-x86_64"; sha512 = "ea4a198b300e2fbb23fdf863659b683b772624cf4f6c2c3e5e07af9a3f991a8fdf7113f852646f36f697c705c3a6f24485dcb8e2d615a3a358bfdfca406254a0"; } - { locale = "son"; arch = "linux-i686"; sha512 = "b510efeafff8c32ef3b7f88e81d4c1a1c1b2bb435c2ed4ad69adbef8f5d374677e2231f94700cdbff9e5f747c712d8f58245a4c8f0d38ac3eebb5adcdc42c7ae"; } - { locale = "son"; arch = "linux-x86_64"; sha512 = "8c8d583e7e5ef1363096c905535c8e6dd63900ee50684d9cd36b4e55100930b8fc8ee9a3ae770128cfc71a30a73f331cc508555ecdfd3fbbf359ad08d5cc9519"; } - { locale = "sq"; arch = "linux-i686"; sha512 = "809ec8706df6f3538e3c53765a1f1834cee3d2d9cffbfb1f3e991faeedaca28a2dc3d4e037ed9e00d58ac6cdb27f5575bdafdc454828d9fa988d7764bca88c0c"; } - { locale = "sq"; arch = "linux-x86_64"; sha512 = "6f2c5778d40e9bc5bb558ac626becfcbe33c42e2a2e588ee59065f60643708ff83be55a082b383f7747241ad8d59c0e3e13bc8556967f5fce034ee23d7f054f8"; } - { locale = "sr"; arch = "linux-i686"; sha512 = "cc0e0c039af32611d489bf082dba5ba971b54b22937d4b8fa80150a560a3c452851e67d02f7cb27e1a63229c9a42da449f932cdb88af342e0146022586de109c"; } - { locale = "sr"; arch = "linux-x86_64"; sha512 = "21928411981e8d3fac5e44f02173a08ad4c3135ec874998d6ddf5ef2821226ffee260023e5bb45848a40db19537b1d6cc0b127d9524c0d0616d80618ab1d9228"; } - { locale = "sv-SE"; arch = "linux-i686"; sha512 = "cddd222328f1099c25591b03abe23692fdccc82405df127ff920818fb7952fe384fc1373b1330b971d196e98acd62b3754711b38876050ec3cce7de20f183b79"; } - { locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "06c819436de292d531a9d3df34b76bad36bb627e0e45ca042f2dafb06db14cc23e956dc2e00904d5147bf7d0b39c16f712f2b8acb1d9bc4daa210d56d8058e22"; } - { locale = "ta"; arch = "linux-i686"; sha512 = "5e8560e423aa88c1fc5b61cf91c558a861a58d09d7e560790ba835f0bbae85cc82c61e1eb9e1a92e632d2fe24419d3eecec4a15bb083bf0c1568a441a5586a50"; } - { locale = "ta"; arch = "linux-x86_64"; sha512 = "6ba48474d930036d77d23b717fd2e592b19d0ab2b4399f7a6f7bd36da48cc0a2dea9c25442928c507cdfe8a8f37a8d0e4ddb94da42a7a3d6c2ecba26d4f7dd2f"; } - { locale = "te"; arch = "linux-i686"; sha512 = "2df2a46677c979b8702700c69f687e8bfa49e879ccd9204a1ca876b7a5f8925abfe6f81f42e6d6576aff6cea264cced854ae536a3cc01ed04b7a536396e9ff33"; } - { locale = "te"; arch = "linux-x86_64"; sha512 = "d6c7bdb7a823be0cbe8286b977cc265e80ae290ae8fc4002a7dc71eddb3b80a3796e66ad1e00fe2e797ae83272422f460defa86322dea8e33ad0d7dfb50491de"; } - { locale = "th"; arch = "linux-i686"; sha512 = "eb017475d187ef4f1329d303bde84a17995ed84458923330c2ef61940c86674c03f06de2e3655885df49cdc384d1b8e952dfe8ce960cec738f99b8853af1e018"; } - { locale = "th"; arch = "linux-x86_64"; sha512 = "cca6fe63bf24ca1db9d736305dff312f334cbe0a836cb181fdde85c4b2e383e1a19135f441a1f07c69cce716a4c2d3fe42a07fe3c91146aa6598d651890ff049"; } - { locale = "tr"; arch = "linux-i686"; sha512 = "98aa598f348be7705c11834f6d174fa19a8408b87193a93f641c4fe92898f3175f79a1bef9c66dc93c3cc19a372930725025d7ff1bf178e951c9d5dfd675ff36"; } - { locale = "tr"; arch = "linux-x86_64"; sha512 = "a4c2d82f7e56e413526cbe40eb24df79ea264b37dc09b470ccf3416c922730d714ad166507f06b6a68fc85ff73df73309da936ff56499cdf81b78fc973675c86"; } - { locale = "uk"; arch = "linux-i686"; sha512 = "cc04ead20aa1f6d3a8ac470ed3fc69ac0d348ab0523308ae56b49734785fd63bae4ac6fcc32bcac3f2e9350ebfefe76fa39efc2a7a7f5d7c2309b6999f490e90"; } - { locale = "uk"; arch = "linux-x86_64"; sha512 = "1f29246b8bd1a4e07af7b30c2ffcb5239ee5f870e529227e96c0ef091cf9d9d8783891b2e60b0a5dee10e80893ddc6a5cb972d27e70ae4cd0f820ba9f60a2165"; } - { locale = "uz"; arch = "linux-i686"; sha512 = "d144626529e57e93ea12ddca25184903b78b878563302c7f14a396435187791d2a14482a7d10bb569890d9483253474634574f105b9c79763ad6a85fb10de73d"; } - { locale = "uz"; arch = "linux-x86_64"; sha512 = "4e6b7706c6f529739a18748f35d7e31071c6818c0f83261e1d31e66306fb40ac94573f7ebe3b811f4c70f88a2bbca29528b868821962e88ba30dbf84039c5ea1"; } - { locale = "vi"; arch = "linux-i686"; sha512 = "fc7144a73551e09196b7c79e4fcf1ecf5ad92b3e54e8a203e213627133df0260dc53f0cc9bb9e03ccae0953de5f2752e303a35e0fdb720a40637e5b31edd3544"; } - { locale = "vi"; arch = "linux-x86_64"; sha512 = "7a38b4814418516c8971825616874782512bf91d51a798fbdb1b8d8a817d30e72d9fde45238602a6de9cb9c53cd0512acb07f6e16a819ce24fba6467ab1cc8b2"; } - { locale = "xh"; arch = "linux-i686"; sha512 = "0fe791a3270343598417b093476fc7eb50628a7557c56294b3222e657c62a2b5ce7988243d75ae08f7a11c2b9e437d01d47258b1ac93c2579638ac67e12c4d78"; } - { locale = "xh"; arch = "linux-x86_64"; sha512 = "f797c52d88b62aaff15419baf5d7c5b2a44909674602ca82c295120b4b0fcb7182a36952f7adeaf7e9878b3d21031e990d22e5f8dcbc5421a3d587ba37f63906"; } - { locale = "zh-CN"; arch = "linux-i686"; sha512 = "970c14e1f105d6092fd542d73db57260836bf249aee99ab53f43882cb6327520905b7a452e96a6c142676794bf22e13c80e86291bb5b6dcaa09d0d9bb376d4be"; } - { locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "b811f9d359fb61674781443d71e961ba687fecbe4904622b6ac410e435e31b6118f30726896021d28ae51628ab95092b28181ca0ae471374c0cbc5a740fea496"; } - { locale = "zh-TW"; arch = "linux-i686"; sha512 = "43f8d6e9cdf5815365e0eb1516ccb5f6c7ac7e19c10d1ee45ee367d721bf1944321879d9966f7000f50d324f14c36f9f8fcd9bb43ef20c780ba39d3c138f2192"; } - { locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "02f4910b3c5b6f75e2f19c03452ce0534980be7ff18abed8be2a2f9af19c6eee5928c493e618b00d167bb3b2d7e60724741a2f4de1df9b1e48a05923a7649cef"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "9fa8e2fe59c149abf5b1f4fad168717aa68c9e3e9acb219aaf257aff953a719c2df1dfd55081c6c4398732c9bb16690e4481b7c3c9f1fc9ba20468ca38d7b9fa"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "b4115232ee0cfa6062fb9c06743d31edc444f9e5481b84cae4c1ec275c55500a16fe7478ee79caa269b669e566701be225c45729946ca950a492b36038d208fa"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "03dde31a027765e7003c89188cfdbd87f57447c8d7f6542e11e01ac4242866f6db98943d8d50188b1e0c41d740f3ee95b5f9ead01e9df5ad9beeb066c0b1e54b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "e9973af0cc52e2126ea682067fd7aa11bf071ae2aafab935d704122480a46658139043a29df30c038af85c1fde836ff7725bed21ea4c4778e176adbab704c6ed"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1e23956adc055188e4342cfaa0e38d062bcacaf0fb99895fd2fe3535f4e528890a75a18e0620e881e1fc87d11ce8b21c280c88ed11b2444d037990a11fb8e9af"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "e75ea9a5ca4860f228d4b2aba3c9ba4d104a7cc24fa138102d80b595e29a391d15fb82d749ff7a03193dccfccc7bbd106dfbffe5ae7152afc4b62f4d05d58ad2"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "df97f1f2414d9f2c1d5ddc50e901167fe3535ac0f71ef99e08552ff9a5f4b7e6162f258c41d1024e2f886969e7ae80b741c271b551a51ae05a48a3e7987a52b3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "79da3baef8806966891b803137f2b9610b3562f0a806ab2fe3234f3320cb0efe11ff523373e933d5d230a6959ca68ab013d64dded47e6043e9fee90202c8bbc7"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "ab18bd3f015cddf2dfe337556d29a20576dda5879a56242955476f50b0978808d3ec63812666ce73a58904a70edf251e3773ea34a38b955510ad331e5f66751a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "26be5b409c5e4acd6a09482d1380f902cbc9948fce33ff5e33c22a8573b5ccd05f10a4b6f84dae8ed9280f5b6568a411837ec7bd1b64bfaf18670e2a45c475cf"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "30d23a4012caa6faa02871be312ebf867321b5cddf1e74d7680e426af4a6670b34aa48f237ac8801c696d0cd2551f90ab5fe482b4a9bd03bd7d4521e204bba65"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "cb0ff48d6cefe69c4f05a83d7b9247b5bccc31db8efa708a7de3ffa67459f8427ac255bb6645e59f7ff6047f0370d24d2668954837aed7d71eae88df6824cced"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "00685bee899c7a083fbe2a4dbdbe32df1f291c619e1ca681164a3c88782f6898a11add06a17f13aeb912c635d0fb2ea2c30c0e3bd5ff7cceb63b1134901ecab8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "e4133e1a9fb103652037caf21bc18815d89bf5e1a0d7b34abe115715e8e5060de8b00d35326bd3cfb9d5edb7cbe286456748953742e4cb5d5c76c7314a344720"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "9444970e5cc3f3359b02b8bc58f13edfd64ae6f99d306ae7d9baa084658c75b85120354614fe2655b600e0005de1b128df1e2967f93dd0fd1c31ee721e0ac306"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "08bf09e7b8f8911e42f5e88852f705c1f7263d1b6a0981c07f7ff651e620bd31c1a6baebd8a8a9353e49f9ed50d1c0d55bb88c97faaade0d415cba482ddc6f73"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "1708e547f2ea234537a0dcf40163ac18c641bb4860e74f054325db8ddf4960ee0649348b458a8fad1f5bfbe1fa4308c9fb13d84fb941c2928ea42f6ea77cccff"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "26540e48ce864590cc40a45d4124250674a1977778d3251b5f46701d3fa3b0f6d8a602b5bbe1449040ff943a2ed12bce7758037fe8ab753d0b43eb815e905ffb"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "6e37580672455a717be37061c4d3135e72cd6aacaceef20957cafe9fc95ff40a6781dd92a8425e4023f75f4d027c5961d7a3b0b6373501790ec5057da519baec"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1498ed777a7e3aec18945ab01aec80a51e7cf6a202ca38b333ed6aa9517170bf9ec4a3c9e638acb60cac5b01ca16963b41489cdf71cf40655cd87d2ef161d4ad"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "1d9335e8b1268fc163bc31d1afe58613738f08e4ca8a429da63e59e4b862e326cd62d82a686e5710304a5b86e9d2981885ce52aca9913d4cbbcd4c1e0a88e782"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "e686e0a9f8d5078d2a728add3085d0d11fcec9ce8b1a05f242769532ede411f41d8385b2199e2a27edbe8a58648d3e4b91df2d730e6bb17b7cb69c4a22630fb6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "19f012125431f7c56ecf9ac12bb44a52aa041a97a0b2c1db3656d6229b4215d5bf492730c2bf08244e38ff120ad9003d4ee0842f834cfef8536b8f40d8e2217d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "250c9dc52e661c91163ece0fc195ed29d621508ab5666ae97d74ffeabd0dac1effddcc4d0ad9573c5c44ba9aa746330b5a6dd40693491f52609b1c47e9fe97a0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "fa946cf9eba376ddccae25b44c31cb41dec16c016c678c155d0fb6f235c2932fc59eac0df292940acceaa7f463979495de17c86863450a1a771a277440d2033d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "eaf3e8c8706a6005f6f78645c709cfa2463e47f678baa395db6c562506b872d9d110e973186b4408022cb1d4a8b343d7c84e2e0f1a3c18e3d5c04b72c23243b4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "c4fefe7ea67edda4cf5ff7dccf6639246fb73eae683ef72bb7c75e25d630cea78fad38d11d690d9786e43e506cff548df3c867fe91d7570048759933f2ec0523"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "9bcad65fcbfdc85892fc552809da740fd28094bf6be32ddf783a6d011c901f3a17d8ba8d33649111978cfd75274641f6e0aa3513b2d05ed100f2d2d9a8cf9057"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "430b4f156d4130d2a689349c172c40c635ebb4e41d8dff65f7e3971b92ce7682661de763a1ccd706c9fcd11d3590d53193502c01964b703a7a304313c94e710b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "46f3fd5a750618f8bfbc8015748e12df62b1f3db470abd3e7b0edba01ffe4dae1909cdbda5dd5cdd78a0d62845eebaf8e6223cc11e4b88b3710e1ce62e3ebd39"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "d8b8eed71db048dbcd25f116e70040d5105dc3ea9ea69a77064807862f19229cc215ef1482c94609276b914ed7fe55250889b986ac1d11ed086e4de3bb15b9b3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "01e23193ad0bb1c0cd218bf22e301fa79da810ec79f4d68afdbb6d7f3da5871de3f15f38abb5cb5440fe29a3781600dce4733fef67d0410ffc6e63b0c29fb9e4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "451f4eaae757e9474e905135caa2718d75551f2893a6343256b8c8595dd312e0c5416a7d7488b6670cd361db81d44097fb3c54c3cfa27a7efe6386652addb472"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "c260f1090ffe09cc714ade4105c74bf234ab03f032cb066cecbc0308866c33169c9b3c7b37f3acd70d17794878d9e7e9f928a29c5e8aa2172d8475ca7460fb15"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "a449772de22183399c34d91b2c747253e7e32bd388e37b6f7194d68b87faf74df805886bc75230b19766ffb40e312c76d439754902b6d3c8b2057a654e656f33"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "990bf989ce48afd5261c7a6d6a4e3ada0c40acaaa5cc8c369724ff7eb73f5800009ea2c4584e8afe926f77d4b18af95510558bd99ff564754625e1c1dfe0d5ef"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "5c6cc3a65a31043ba0143d9609ad006b6cb4f9af4cbc57efb4d2012ec08438b63045dca06c93b7d9c657f7cab9e19e01ed2b5dc78b79f2d9f59ff85836a89009"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "1dcee925aa75eb0acdf3e21a0578dc7f747dbef8cecfe5024dba66461e03420ce9a9211b2c69a35861cdc75facb956f576cfe3664f91f4085aba1585d976fccd"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "c327582db0a1f78b1d4ec56115220c4bd5751eb46d16f26bd589b4b64291a66845d0277c4eb099cf197225771414ad1bd16a56d41587befd3fa1c766095c697d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "eb049a000e908e5d46726d09ad8a219e1c60ff2f29959f5cfa416a788e5c747f50ff5e6b807fe30f7e013a7f5587f607834ff0faad6e060a33db55d04dc6cfb4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "634320e4103b0ce72a6c132afc8e33ff4a234669f835a23e526c227e94f62be62075cb69d6883831d72d13d309d4e1ecf9947d850c8079efe0c880f7b7b79aed"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "85c4a47f5d3c65a6ee623f89420141f0cf7e02d8c7338d39c8c672cb0aae2364afd37c66fa740bbfb88c52aa37da6b9d106a824845c881e4de6c2d2604477d47"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "1ea0aafb65140f9c09aa4557d7460cfa9f206bd963137ec72a86d237be9cc3ca131b616c198e330d6328f48ae713cd5ac9f53159477b131e55e3ceef8e2ed7b9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "1a726088d2843ce835154675c6dca3e877af6281bac63aada1e4969782350e985428971b216e9225646c8daf523907394a21080e7f4e40225b9ff62d24df4295"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "ded034cd43b45d73539a3c3f8a196f26d5e80c3cba84e3d2ccb925815b661b4c9a3eaad1d35bc363ecee70e3ccec953bb03795c6fad33debd1a81ce8dc71669c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "0bdb77bee7fb8720f1154ffa486a8f6564ca592c56ce07b823800bd54218bc01c57bc27cddc73524c8f8fa1944c869523880a02fc698e44c5c71f4c800dd7208"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "9557d2b57e09c390cd706673c6b2203f2a1beec8952a63e2d891d00b975c67ba3b5f0f6da622e81572d090aecee42ea8ff398df61845f7564ddfd42818bdaf4f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "0617a7b1117fe47bec89b86f89248cef981812a2126e64779d2f7b9c81fc11b38cb3ffe8f039aec72d4904cbb95505519e7ce64c115c1613e96adf90ee72f5d3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "3e4ffa7728382e6862f224be0f576953120b563e0b68599df545ffb46483ae470d12280556a97b238aba0427651be744e9e93e7ba19be3d0764698367b4ab5ac"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "acf8527148b42e9ed50d027dd9c9a6de11975d40556b2ceb27bbb2fbe0e37a4f2839ca643972b55de52f95619eb432e16b12f0cfb501a5be3824e977315ef89d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "ed70d0cf72acbcac71e0684ef755d987702412103bab21510daa7107b369186569e848586009fb3e654f54ca657e7cb259ad5574d5ca1e16c517100946135466"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "541f5579e3889413b6cfb1be40f5630ab401b7b0b3054cef1a633d89e36b59b1d83c86e44ccbb3acc8fbb13f2851b16e0b43f9aece4f98b0713b377606e742af"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "a44839ac7686b1d252cb04fe17ef5c2790d30214e5fa34a3cbd11f12dfbd9168acf7b33ef9dc22a06edd624726511e718691a973c5b70665eff78d0a18287413"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "84b768876fcbd95dd1f9734368c73b51b82ff445df975bfe913eb74c139e35d069acb1428b9afc51357c4567dba0d03950d7199b3fb43017df4987aa69247450"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "727f670438db45203d403746b7396b3b754b888b4a1d104b2bd0599790ef12b0a16db9a32b51617ea05bdff4f2ac696566970e83029e7e3d25434ddda8c4e88f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "638ebd73556eacf0f2b38ef2d71db5922299d10c0d5b72b6bc7e935d814e300c17dd835f94517b8d0e62ba6e54d5bf5059dcaf57eb03a03bb7068161440f7c22"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "da88b8c3d5c9aeb33cbd637b00f4790225b7b46f4b8a1edfc6c49edeb1e29929c4690bd66de0afd31492b213a67eb617355adfe5a7d7b5ded09208eb3a861e36"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "0581028fea7610b44f27a6e5b25203020768d87e83e665aca24e753bbc0f0d49e2935c8f12755e6d4911e5f79052b4362447d1dfdc37838bfe9976e0d218e49e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "6d150372dff1113d14cb32003fcbbfc11f9aff6ed8a0fc8f5f8e2d5d3119b34a8471469d69e8fe48161297e69f95185c414680b3c59bb95d7e483ab2805b5729"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "72d784c90c054d29420582a9a71d96c9a7270b1ac5592d8b920f8148542f17181d9cd71d019c0294c60112dde94191a686ad105993d7bd8340142ca849b5c150"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "0c2b1f0f886436c8d9fe6eead6718ee47e72fd988e1e4d83a70200f6d085419636058d6767a66d273842cb44573d39f58f72181ddfce01ca60f392c6c18df22c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "7c03846d49cf1dba85202b2f7b6ed722898da5185a956ffde1c88df454560eb682ee562f782c3e21bf62b41ab156048ba1c63efacf7fd46f8fd7adf0536cff5d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "3a21d3ecb88827de7094aa4ccf29005ffbf3f88681c459aa9f159d6dd6b04affda08661b1b77986b73a19de1fd2fdba2ceb91036ecc718a69cc5cb16e8c8bbe9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "4750663d5eae7ba9fa282b0dd97e05cbcf3ace8b0715983525ae207de57d352b45495e0dcc46381979997532a8e20c85567a9de18056181f5d408d57cefddaa4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "e9f452656328e3c5a2dd7dde23b84ae535551bcba16b14cc58fbf8aa33f2eb8655cb4ff524a15b0a2db2d4af9ef5da4ca853fedb5c0d05b877fb0a8656833311"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "f43daeec8c0647a8ee984d3541172516d1d8822596ab66a1a9651cd31d447a35f078725f1eb4b30a3f01c02b8573fb0ad268ada70ce013cf1932602f22119e4e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "477e5594a9821864db879ebf04b74852c711c5f0a43e00c02bf17754817c20279c56705aa3e3b51bccd52f9380bc242b12bf58cf40a2b64d9697c8ea76270771"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "aeef4b397c9972c055392faf64947d16173a903c290e4d710067c5cbe6c422acb2172f17c8b72bd5b80ae883f4d22c905ca0581c11822975a42031f2621852b3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "363bd189e7988393a97c7fd9544537068cb541e762427115bde4a3f05297302a30604a5e6a34c97b037c8f2e9c25ddcdee0ebbd8c292ba007362b6de858643c6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "4da717be716a1c16440be76d988ed2ac2ff73bf5a8734d1025ff190cb6d3b9072bd613d973e65207102e4e54479c32e8101aef59de533487b60a1cf10e7ed9ae"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "49e343a363afb94a8b7f7d2aca557127af4743a97678d123fe2a4355d542497da1f5c43a9c83ec974586ca707c3988d416c9e55090c9bae10923bc5aae785bd9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "1c53d25d464e36d7dcdda0ba6dbe5bfc85c03309dd22edc916c97aac4ef7f4bdf6329349fe66d27e1e885b7ad76359e27c6fa885302905e6c6e785da1535b53e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "bfa9b70d5b2c891a82b92ad78e5f7b71df005ec142a1fe60e6bbc5717152f1b5325499fa5baca6a9f4e01be104b0dcddc11994a510e7cb41a5f1709dbe00c895"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "3d6bc3254bcffeda6260168bc43e58e1ea517543831579892b784cb43f51d9cf0b598f6acf1b56f51b72b7946f1904eb96168f046a80a76923ba52f265ef6d12"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "4c12d70a50e8d1b5bb2a912f3d070b30783757ea339eefa87e63c46f8e47646e69acaf975f3a565dff67bb65933bcf070bb823c195a5df9ba8968ac9a7fd82ea"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "fdb748f6914902308d074262d4a1816d8a0a26a3e7f159d013d321875297b7c46eb266473361567c92c5011234ddc66a89f0a88b7ec6435c39e7488167d0b63c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "e450407c27de08ed93b088222fda97daea6cd69ec93a75f267ec67a510f3ea6a657eb4eed67844990f8815be28fa1af8fd722f208c3b6193fba38188eb03b134"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "be63e8e8dc2daa586fccfcf4e41979cc6746ab2797962a86b6644c9ed14d0f228a0a83aeea7ca115e4a13f33bd5048075ceff9c0ee7516ba1fc50dcece31d88d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "545a5c29789b626e47db56d0b962989f8a73244d865ef03bbff57272f463706cc5de1cc5e346b0188d4dbd7caa3fb67f6c0ea6064320d6c81a7db678b8eac86c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "4dff9aad6938c17f3b97b1901831cdf1f993f0c8c03c3d03881680e1a5d82a10c414f85d5d6ef8791ea5c352eeede94036075b8a14046b87b19caf6cb917f950"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "a63a9c54fd2e3db1c161d33b6c725711bbe43d5e915f6bfe50ebe9f667a47299989e9096ac8b8caf80c7f69f0fb276fce33873dc77b930d0cc228d0472ae81af"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a9dd610aefc900d712bc68075d32ebe0e87a1de05af9b8592533db8cb65a1a6f56db5a566cd3c013a84d72802eac917fafd42517c0ce53b4701f58711ef0b7d8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5b0b46f00e3c61ea8c00b849b5605357979c7ec4276f9f490b6e75efee28fd4ba2aa285ebf689bacf58a40f03c2336e77a7b19c7fb518f95d900150c3c70d62e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "d67ef81f2c539718ff6916349f9ecfff42983c2e28b02b64e8ac71c54ef2dbfe5e9a4da6ec6f1b4361e458940bfde6f4da7f22bc19515cbdb98cc0166bdb1c27"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "a15ac725626fdc4f9bfe02e31da4385af32c57c407dce7dc321e259fb29d4c46a254bd484dce8ea7d3e322fcdeef07d62f64a874d45f0460bd2b17007f688b71"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "2ded18a44554ddfe73721a35af71b77c600b362dce138ee78a633fa8d4d91a5fd55921654ff9c2eae05d0ebd9ede1de8b5c9bc07f761e068339474bb8622732e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "797fa8e8ea628b9855f42bc3f77e1928743f9b96566ce886cf2897dbed920a6f83089f518bd07f5f820374e0968de848b46d8a6777d8c77ca581a1b172fd25c1"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "623eb40846a769825300177ffcde2f18721474605e6bbf7cacc0f26f2d7e3e68f0699a173fd0154bdbc6f56c13befe2bf45caa76dd3de7ba2249cb153b8624f2"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "58b1f83e123fbd32ca6d824aa87e0834d92f8c148db086fba5414519aa77a1469f5010077b119dd6758bf58165afdc1bcb0fe5b0b664a68fb73951047082ec07"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "853b6fa276e7e6c1ba0a30b95f8fde73e4bd4fb7e745c3722fed9de00bdae0d1739b78570a0108d2ff9efb73e8052e5d5192151ae789c5b336946039ece560d0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "984d3ab191091e9956bd28a2112715d0c27a24e5345b9c515e2b0521030200d2742041340db0d916915c87071c70b3d60762ca278dbffb88ab35611f30337468"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "cae180b050bd956bca474b187648dc969c2ca8ca3816ebe46d379681bbd470029d93e6518e7fe6170864c2466e6b3752aa3f372df34b672f93687704a26f0b83"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "f26993353fab3bbae965b7d7cdef57bee60839e4a726c75c966ff2e99cf6edd3e249bb3e3adc7791b1095869fe6f5b43861337f8cc6d3017600e61fe436497a8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "b7c228256d16587720f186c1a257cd157d8302e597dfa6cb72fd984c05105cfbe6e33578addce044a88ae11b11e4e6703aea432d5823526caffb08e81b1b300d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "324de4444814ec0e57c57fc4ca07dca20e10bb0a80df33ee01dcb8908caf6e5310563bfd66b62ea4eb5f595ed81edd9c504a8b6f81317bf85c4acdf9da2181af"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "8b199bf64955d23fdbf47c92c57022e7742dce10c02242cd3cecfb662303402dce4a6c784c141a63007f4ea92b78e0ea0fa74fb6bddf157a848b2e85f50acde9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "4addbf9e9626f6f81a276e506b5974232da161e108c194ea34f755efa40e5f5b4df6e4feedc90309740b4e8c04b946a8da74cebc28867f2d23ca71d9c0dc4cf0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "843bcdaf5855dba929b4e12ba88388e3dbe3372051a3d789ac5951a66ff4c044af563e2c04e005788bf087590444d390ccdc0646ed37571e95cfa5225976cd36"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "e637a52c2d365835de33b8e3f3dae7beac254169ac65671282252c3ce33816c3af3cd696c73d15a3f3a3827c72376245ead9b0f655d2bdc857156bab353ddf69"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "f62acc4a2d2e8fee43f3744e3adf6b2850de9b7ada59a9d985b5ea0051a2f00c2fb0ce14bffefe679c0359897e1920e071aacd177bc140719f47d64dccf799c6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "081aa992d79d9a07e82a3027294752fc338e715e0b26edd6dfbb80fad3fab78fc4c0ab5082cf8880912c3a3249d7d35b0ae99c2152bb87a025219e7ecf16f330"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "3ffd093818c2fadc5d6e6a3ad9891b84352d522686ff1c23a9574c981a2421974d6346284db686a382193078ef3ad4ea8eaa081d9ecf59e4d07c396e1a1b223a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "492e2165c88e5e2a1fcce1bfc2c994f7daddc1ded69d6b486f21d0655c6ccf112b1202080cc989bed68a1c35502c078025135af13ddcb0548b17d6f830c09b66"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "f5e7a56849dd1aafc13b3b0772fdb482cf6e283ad98cbf2aa655c016d443242d9b760cf133c130813f04cc572de3f5ccf5cd4beeac98d07cdd4d9441838b1f34"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "d21d401e1505bdea1dda8fcd65622547ff919e0fe2c3ef402c1a5a67a5c61d6c082730ae21286def66699a994f0196202ba03956e9f5ba42a166d8dbff2a1aa6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "c0e08b44b09c3f8c0e17335c0d287285e3f6cd5e308688da36647ba226ecb10c98f87f92ca6b2d50e0718e39757bcace7132390ffc4d2a339db5d3cfbc37b85b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "71d3dbd2fffbf51c64fe7af008e27a2d9ff3dba3417bd9c0f1106fcfd445f88c2865ba03799b8fbbb00c13242c1cc7995b5aeed3d20c19b95448a7597378023d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "dda7d698c760ef750575f5978599bb964cc008a18ec048e744aecd17cf41d6eb2b9a69ea13efedf5a5d5a46da990c1df817027b7762cd169ca2f30a0920ebf98"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "f427847b0a4d3e8c52f59a75e4b1971ae96998d202b44ed360f5781775d3cb1c705923a4acb96a365925fa1f27af7e7292d3e4f0af6c22af9803600d7a64a9ee"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "fda5463fb43253a392616ea7f0e287464e83bc9f4c9b3a88ae40f0e2bb1b18b5873ebe7304d27b76b2016312d9a2ff416f3006f5a75f315e2be5f8ea16be82a5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "38d539b3b0ad87b557aa9c75212c64978fe1397c797247d94ac6b2fec33723d6d05de80f1d79b84989424fe5074204eda4af3f23d163dbcfcd035e5f7f568ce8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "a03e8261420d0b336545bf140916fea9cdf6cf2ba5bb55de6f039141011bccec49e88fddf7664e7a574c6da525f2f6646793b9d505135a311710a4d4014fde5d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "ca11b61ed252863b6efcdab2438fca21bf837f29bcc7b719e5a99065aedb8f75bcae8beaec1a273624ea3c2a7a57db4386f52096777755297183691498f33c62"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "7d6af8577ce9c9e3ab13ee3313b4c35bdbeef802bb5a5a15fd991d4fcf063b49ea1292718a4d74ed57b7c6f00889c96c9261bba442476d6aa090623afccebd9b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "19024158acd59afccdbe39430e463e9b441cf1950aadc713ff8a74d9da97cc11d9437d86d0542306a8fa4a29a69547b4d59aa28be2bbec8a434425f20ca0d1dd"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "73c81902a047a13c01fddc07eeab9886c0c55e2a3ebd30fee0a036878e52580f50c47a1dd4050cf39587b63432cc9c2947c88200fb2c95b143379a21ea60c400"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "d6a2d0b8821872b4f78f2fc9ec6ab9e602673bfff2d1b6339a37532f883b61134719d0e4e9caba53d3198107b895b3ce193839de2a374391c3fd58e595be1eca"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "bdb1e2e97b736b70a7d11538e3fc16be55889b14397709094c2efea1faa3c57b0c272cacca0fb0b307a3cba656145df3f7945cba4e9f762f3f9ee4f389e3ab50"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "0c52c93a00e1b82b5569787a624806f1c3175d40813da3da0833b23006cb377dd1b693120f96c1a6c172093393ad08321efc52262c5260e80fe037e709c94ae4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "bc2c513eb37a667195180ba3933407c7f90cb1e815f2c646a5410fb942e562c3659eaf3200ec6397a12987267ea26be1c71dd4467f80045c79bb793f2144cd89"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "7336e98002f71f6ff9b51d94b5c2ca2b5ff412d9069837053a63e3819013b36ad6587b9675089243f19474eda2906767e98b2cb3e96ace266ea29f5142c2533d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "fe70de56fa9d3bf56d355058c4412427f967f69467dd7b49cd1fa26c6abc898ae061b49bf259eaba7073fd926c1e8e5901a0979a88007ef3ba3d5caf07329203"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "180072a70d38d4607b8c2105dbfae2647900796208f6f5a6111419c4712e6ea959a6f5ca5068f1f7653ece073087e2f3c5dff177d92da4d92aba4ac1b4b7971e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "08bd093d657ae4e6b6136d1627ebd355ea2794c2e2824ca4d4121a5a506b0682a65e1416aa2cab49fd00db4c3736ce09101225b0333385032a958309cd7e4edb"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "a3bdac7effbb5a29f2ff1385da3de4a2c16a914d1d3306cee22b379779b1eb9d45f6a6c6bf10ef1e1a11ab52834a08c5510a38303c10cc6e4cfb96b32ce2769a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "08f2fe47c14ff5432f8944312e3d45d26dd3fa56bf4b0d350b4504cdc639eab147e3da9edc25b8551ab5156dc214101831c2c1c0f1b159201e5a061461e51285"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "cfbb14897df334df5f11305ec44f8e4b736a8320b6ed39e5581be413cc4daf92908ed54215e24e35e34e0904a1a500f295ebe64871e53438658d0340f7e708ad"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "19403a121e9e86447f3265ef72bda4e3a7fca55dfa76e8a25381ff97412329705f8b8a79031fd0116ac7e0fdc29fb9afa0c1de14287399f28e95d181fc933470"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "73789e769bcf2bd710f5234cc9c0f046abd5aed5d66b4e900b19f87a3c23a7daccfd086d9fb80fc6ced3742ccec90e96aba785330a2dc9cc79d76780fdf56cf3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "07a842dbcde5fa7c5623fe5e8bd8dec04b33b300f52a1ffa8fe604ddf93df9879b9179bf8363cca4aa62a1c878ed77fb5e0b5db85355b4a2d1405888a9a6268d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "b82f14f66dee3036dd62d0af2889137d51521ff51494584fd8f50f380e8ead3d8290a73843a0aaa7dfc7e38c3f69c28b661185841c3f71f11eec686336c7f36b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "9b627e063644d138c5b9b5bfce48431f8926fb3b13caa01547aebf007a002c75f8ae3818d5643f212c2e6d1e6203c49a24412aaadcc2dc5539824c168ecea52e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "7e36e94c90cd2ce6116a56a5f1ae2772eabfb19bfbe0a5bb616173f0e3cfc6d9f3cf77db07c767fe2673b29437ea8cdd70584e2b65752660d6c4878d598e0998"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "cfb9989b2ff2e2a81c3453dc7b03113e251d57b1925ba1fe60bcff4bca9fa16fe8ce6409cda6f90d7afde832b370a731d86c999df08e77a7c69ad6e72181f6e8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "63e4f8e6e5d6360914073a1a8b9dfd9d1936ad3efef6994a880bde075468cd37809294d3cd80dbb693b429dd82426e06632b6ea87f776da509bfb1ed1cdc1848"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "49a065634297b37532882cad5b13687fb6abfe0fdb577a4ea1bf86568abe2ef5b29bec7d786a47b8a12ad06d4fa78faffdea1f531245488efc42b14da24d2f52"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "06ff4df2f58d8c39ded84915d5f4ea2137f1692b7955c205a738fe65adc8c324c9e4e1f46963e40dfb74c483a33028d6157609e9f99819683008e0e5f992e52e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "b07fc75e55b860ac8ce03262dfbe77ec558842baef037f0e390245f3bffab03df31f6488811b630ed5355878dc01e4930b839251fa726a121fcbfac2eddae9d8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "56a5f63dda3c359203a1ada88dda971aefd4219e0d76a8123792131cc5abaf23a1bda2498c1f93725b853576f572205905f3b7d16569611adcf87b7bc96528b2"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "5f7af50fa1620c17e4473c869fa0a4384518b79514108317c1aa8c5f32fe6635bf88eb53d589f4714fcae740988d56163e293960b40b2165eeb6fdc7146586c5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "b3f4913abae949f1783cb6cfe934b97f3a93a579c8f57d3e29d87e15169234b58c5a243395ddd0944edf4519a9d3d735424bf14ff7280d7a54494989cbe7aed9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71853f84f9f1545a099bee0994bc598845aceabf562730c1fbb7b0f9c3ea8113e6ba473840feadf76aa0d35ac0ae5a038188ef6078fdb192de99396973cfebce"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "d1aef184253166dcab16b1cf25bf58131ec76e30af84ea0a75d89106e253ae4b5ec17d55039b1d1584f39c4ee1ef7eb28b73144cb8312fe15aba74e43cea0ae4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "1ebe23f6c352e088180ebc9f03c4e35b1c08a2c8b9efc64ef710c8bb0c70c082bcdc3f23c436a427a95bccc219a5be8011b46d49047483fb57a2be2ea61577a1"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "6ae17fafcc61dcf5ea548e55c7535ac196402c20468ed53eb32a529eb756a88264660dc4acaf1f27dfeb9bf4e5515c75287b4cc8ac42c765358908659ee12d03"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "9635df3cf66825a4ec30ca03f944929977bd526146d5991b03a2539e59a6d5a979f8d25697e9aa6e051ebd6f05bbfeb993e11e547491a272e77c36b695402d93"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "ca1f6e5e32da878f50b2cfa5f42d78ed93423e0f4f308e914a184747c59a82f0d2db5c768fb65a16bb0409070614be44ea14351c21904e32baf5470b81fd4925"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "14f66c3db5d3f17e064eeb80eec31ea4d531b827248eaa5d6d1c936962b77503f7b9adb16daf754909e4749f8548f4be8f86f3d01345bf9999e70d8e7c52f6d6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "cd45ccd8f3e41ae3f4833f6f5a821dee061898fba61c974099361eb84272676b146896727889f8adecdd563db9c4ce0de666221eacc7f0ef841ce4a5155961d9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "234fe0d5677b67bf5458df4290b055159860f43a3afa66982b9ed9279a5e74ba90ef6cde23fdbd9fb7134ef0ba47b270880b3561f35fdf2286b23e128f9d0da0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "0cdc7209cbb2d537ba19ba206b53534f18ec0cfba1ad67a435f7134b1161f13236db2bce707cad50687790861e09ddd31a35eec8fd4965d4b1c697a84b4e00f4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "8db988c2fe8624d9b7154a39df173f2bec70369edebcb02363f5a1ff50e299590722961d58c96bc7cd003e14b7db8e6c1c78a488bd1bf3721e880df1e14fed08"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "a67d0bb63da12db2a1d936b40dfbda4f4473a67c8937c771b8b07c651eb9302128cdce01c02f1bf52ea641dcd9520b5d79561c07a88004ab39ae4ddf28a6cfc0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "d0f179237a4dfc59d8e847f5393ce7d59c6f399bc9bf5113f70f3850e3452d14542f08ac1b2faf0ec291b0f80183553d4b44c64866902db4ee891f00703bfe4b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "f66d6383be284933b2b62432b86e6ffa636c737ff5ad2d8159dab527cd951501eedcbe9a41d197fc1a7f14404ead4b2f25b7c1bd1725bef80a5dcba6a793ea42"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "bf461c7cf0f24cc091af8806097b759a5ceb5934fd96011e003a438ea5de0dd9221241665c3b713dbb3485f13070cd7aecc23902a28b2f84bb6bcd69d96b95d6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "cac1528dbddbf0163391cbc7860cd048376de7012950fdb74beb8f0dbecdbfda5b41dc347d100b0a83b31d3b324211e7a253dfbfafbc72f083013250660139c0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "bc96183968912b8ccd6e46adf82c49777f19b1692a5a06ccc9e24d4cba31fbddca79993f6e33a1693da0a794c081d8696d96dfe84de32003f190c2cceb484e9e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "4f5ae88197d4841cb38da7b0b8c5cc0ac8a228f6d1f6851bfa8782dc4ae91124da25a2235a13f9074d29498ff227602bafeb2a475e1f83f116ae6df26a575f66"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "334695dbd86e2fe674897b23c9144444e984e16c5cb813a980fbc6b025b214aaf344019dddb8612125c26ab1b6da4b9007dcffc1ddf205cbf226d43f536728ce"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "9bb2a9d07db3f7840e56368edbdaa3760abb2a5e9a266f75ac84ddafe0ab42b582613cce581dd898761ecb869b85ec515a113a79ee1c3470ae48ba261f559c8b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "3a7dbf64988527a3d1f88fa1840bdf8292cf90ce21b5823aedeb2fb9263a2b7ffd9f89d2709e2a2d208f0c7e70d3819a92c7859cc2c2510a4f0fe8160599d3b4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "4d6df0bc1dfbb8a0761250fa7bcc3575af66ea0e91e6ed18d340eac96e4ae2c50e1f873c54f10eecc08a0902f3dcb9a9df753d6d9f6a640e7421fa9bf38f884e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "b13dc2570f7c2f5d4a323aabf1448d04550d6356bd43b143c10fdc7e88a97d79d93b8145c3d7230e9f417a147f5884af3217738e5190955ab61459703bfe5954"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "b3540cdfe33168c6b77386d3d32dd3a44c3198e9669fac89129549f6240475e657c2e790a38f985e85e20315df0769fdee57c65513c914ebee239f51e7932043"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "3aa1ea89e62fa74208c5336c99aa6bdd98358852a032e1c90a70a48b6903523d08cc03e62976e10bfae86cfe0b431befd9a33bd62ef1f262d58bd9d5940255fa"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "8e2e979f54bef8979367b7bc5b54eafbcf774dd4ec47a65352e8529d76edb6a4ea331fa8dafe82894868f4cd6b269424f06668a46596d099400a980694b03db3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "708841b24ad871cef003040a59379dac33b2131bb699ede2146d02b6be7f562057c6713d050e201075341dbbb8a7fb400c6852cb4d1de2064fcd03ecdda6450f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "788e91d5af695acfdca1b02eb422efc8ea35652dadffd3b03babe5622c6e8d0ad1dd200a63589329a28eed3e0ca723e838ceafa721c45a86ffcc34aabc462671"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "370fc35b68ec734e9f5544f7cb74cb07d706f3e1c181f25c7e1b6e5fe1f9ee1bd9b289e164792e4a31c9fe7fb098c5114919234cda0583794f8964f14d60c4f3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "463da060477f0b9831fce5e00248d841fa7b9ccae1e70fd707966aa09f55b7bd4eb89ee04b41ed6619ce465c86ce84236fafe14268a2b97c482830a2c6f8f77e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "7a085f96ad6f67092f11ac1605541f1dd39a5ded50a3375e50596e18c76e992a1ec9a648a2ffcf4fefee09a3644d6d5d0abcbb43f5173a1d086f3c38b4ed7ed3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "e3458b936fa06aab7ad5fb37c8bb0e3d1391e764382643b9978ded9e175dbe14fd3658f9b0903a0a5a74bb1aa1d56340fef37f19ca9ed92d3ba3ed28174c2cd2"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "2899fc4bd5b40996aebd0c67627ddd40bd9c3778001afc23a7d4a232a12ababf4504568594aab045eddf2a1ad71e026bbc832b5ddd265132c74325eb84523a82"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "c8cbd21b1ec2962e30a525bf7d1f45f449aa80448f3c8cedf2ffd54b2f7e1e07d8f0ceb2c5fdb3a9bd7e2df8fae0b14c65d0d84fd60f6cece8ececec7df468a1"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "86fd5cf184aa8b897b37dc0f05bdce5dba64e7b8d7d6fea79d42e7a591a141af7b28e87e15a1a98d828ed259c097005b8ff8f52fa5c33873eed199d5f2a391b3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "703a39b4d0fbb522c9b7a2c24780776d804025b659a6bfc1b875924429f05d55f2eb57bc333dfc6b0b0b18bf8b18dabdb7a91ec7696cdefb404cbf0b2afd89b7"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "0551330c8203a93db60f5c4570a03fbd7b63f243eabe2eb0465bb8e3fa6c2389e402b29237fd91f98455f74360c6056d31fc1c1f66c5035c57ff4c8b2500070f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "8b9293827007bd0d510ab84e15553f4f396dc058a9871651d63638936fa03cb628ffd31bc2d01dfeee9935ad18976e0941345217e1e161df0ddc7a0e4b527ae6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "ecdb91365c00090388b0d0e0b9bf7fc327b6d142c3671fa96e626a744852ee838220efcbcdc57a6fe2f17d8b3a3b57fc3644b30d965a0a5c118cab421755dd05"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "9f65780b2952210ba613767fb885dd77af3e96596e2d7833902318ac7508c98172abb2a42d3c33c7bdb63826379f039ee50f0df3436c122a4bc794d4e9fd3a20"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "a915d396e093f2d87f2ee6cfe20f3c26fb6c524968fee0c8d1cbbf1e53a6cdec86921b6e2f252ca3a8dc13bbc8617e97d8d6e883973364e68be70c409bf1b8ad"; } ]; } diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index e9f6f816be51..88d9a0ccb961 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -35,18 +35,13 @@ , libheimdal , libpulseaudio , systemd -, channel ? "stable" +, generated ? import ./sources.nix }: assert stdenv.isLinux; let - generated = if channel == "stable" then (import ./sources.nix) - else if channel == "beta" then (import ./beta_sources.nix) - else if channel == "developer" then (import ./dev_sources.nix) - else builtins.abort "Wrong channel! Channel must be one of `stable`, `beta` or `developer`"; - inherit (generated) version sources; arch = if stdenv.system == "i686-linux" @@ -70,12 +65,7 @@ in stdenv.mkDerivation { name = "firefox-bin-unwrapped-${version}"; - src = fetchurl { - url = if channel == "developer" - then "http://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora/firefox-${version}.${source.locale}.${source.arch}.tar.bz2" - else "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2"; - inherit (source) sha512; - }; + src = fetchurl { inherit (source) url sha512; }; phases = "unpackPhase installPhase"; diff --git a/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix deleted file mode 100644 index f43810d53f0d..000000000000 --- a/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix +++ /dev/null @@ -1,12 +0,0 @@ -# This file is generated from generate_sources_dev.rb. DO NOT EDIT. -# Execute the following command to update the file. -# -# ruby generate_sources_dev.rb 49.0a2 > dev_sources.nix - -{ - version = "49.0a2"; - sources = [ - { locale = "en-US"; arch = "linux-i686"; sha512 = "85c4289e561d2246f96a05e3b8df011337984b9f176670826a705c2cd68a1284056ba507e4b6e4887595bf37f25386d9f7b28a20bc1f125865b9fd7b8be17eaa"; } - { locale = "en-US"; arch = "linux-x86_64"; sha512 = "2bf9518dbfbb48348f74929c19d03e8daf51020bf9ba6db577a202b6e98ad7ffb9e9a0b4ca92af010cd3f864ae84940b65438f4230e6de3165f72e4e7280086d"; } - ]; -} diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb index 03acf17e426e..d049363f2cf5 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb +++ b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb @@ -10,7 +10,7 @@ version = ARGV[0] end -base_path = "http://archive.mozilla.org/pub/firefox/releases" +base_path = "http://download-installer.cdn.mozilla.net/pub/firefox/releases" Source = Struct.new(:hash, :arch, :locale, :filename) @@ -39,7 +39,7 @@ puts(<<"EOH") EOH sources.each do |source| - puts(%Q| { locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|) + puts(%Q| { url = "#{base_path}/#{version}/#{source.arch}/#{source.locale}/firefox-#{version}.tar.bz2"; locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|) end puts(<<'EOF') diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb deleted file mode 100644 index 37d5569efb01..000000000000 --- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env ruby -require "open-uri" - -version = - if ARGV.empty? - $stderr.puts("Usage: ruby generate_sources_dev.rb > dev_sources.nix") - exit(-1) - else - ARGV[0] - end - -base_url = "http://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora" - -arches = ["linux-i686", "linux-x86_64"] -locales = ["en-US"] -sources = [] - -Source = Struct.new(:hash, :arch, :locale, :filename) - -locales.each do |locale| - arches.each do |arch| - basename = "firefox-#{version}.#{locale}.#{arch}" - filename = basename + ".tar.bz2" - sha512 = open("#{base_url}/#{basename}.checksums").each_line - .find(filename).first - .split(" ").first - sources << Source.new(sha512, arch, locale, filename) - end -end - -sources = sources.sort_by do |source| - [source.locale, source.arch] -end - -puts(<<"EOH") -# This file is generated from generate_sources_dev.rb. DO NOT EDIT. -# Execute the following command to update the file. -# -# ruby generate_sources_dev.rb 49.0a2 > dev_sources.nix - -{ - version = "#{version}"; - sources = [ -EOH - -sources.each do |source| - puts(%Q| { locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|) -end - -puts(<<'EOF') - ]; -} -EOF diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix index 337e6573309d..90749b914f19 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix @@ -6,187 +6,187 @@ { version = "47.0.1"; sources = [ - { locale = "ach"; arch = "linux-i686"; sha512 = "a5391e45d1e59a7c14d8d421286033e3e760bf2b4afddfec3d1767b2ebc957b053c39f17f8185a6c9ca2542c76f6c9612d95d474c01bd5ecc62e5d4f4e43e8df"; } - { locale = "ach"; arch = "linux-x86_64"; sha512 = "48681328033b694adfc6149bd965a3dff90ef014db6f65641ddd3d79ba7901604623735555bad024dc2425f226c65e332a0875d6b18fe1c06b18a1e407b70294"; } - { locale = "af"; arch = "linux-i686"; sha512 = "7757ba99ce9991f67a45d9a19615a93c0a1bf0e35d35c5fe653f04d47c068054c8d91327641a48cd20fb9531cd1e842066c0e6f2dd8b23bff216a9fc727ec84d"; } - { locale = "af"; arch = "linux-x86_64"; sha512 = "7e3d70da29aeb5fc81f5e6dc52a4b8f831813f8c025b1a105df631cc5b675905c82dae842459ad30c5257b74bd5654e9aec5dcfcdee93eb42443c45cda81138e"; } - { locale = "an"; arch = "linux-i686"; sha512 = "1051e1e3a6c25ba6b3aa4ce5adfdc60bcb3c612f3facd5edb702385ea8c0837cc53e95b064a424e0c055a56a11f3a54a7ba37e2ef35045c8cbb834aaec0f6327"; } - { locale = "an"; arch = "linux-x86_64"; sha512 = "27fb75ce402c0d47f8542d3d6d6992587e6ea0caaba2249e763f0f9c4f1d233b37a4b87ebb7e730d16704c7d2abab690660e409e721850875fc09deb0c433252"; } - { locale = "ar"; arch = "linux-i686"; sha512 = "296e23fff265bcc08ec0f81608d50428181163d216fd896c80a1a8c31e95f243112aeedf3bbd96b1efbaa1d6d576a9bfc75e5fe8df434cbb74bb9576f7d90a83"; } - { locale = "ar"; arch = "linux-x86_64"; sha512 = "15f0e7cbf5a98ffa9d2d7befcb11938b76194dff29b1d93ddcbb8f5c655ef33659534874a72aea18f98af06e5fa4392aee5412582ef43292d70603dff2c42c60"; } - { locale = "as"; arch = "linux-i686"; sha512 = "67883c8cb7ffb6c05288b316b2aa5bc3274372dd82ab4c771fcf1e5a968e550d12c89027440704d8479a906beeef24a18ca72ad243628a5ece45918ed990c793"; } - { locale = "as"; arch = "linux-x86_64"; sha512 = "f7718b0dc9bcbfd109591f87263d7791dcd7612b0312d0bf93e68b1f2014d3732dc6740c57a8e64dfc1af7946da14dde617945e38842eb19cfe39376cb12ad44"; } - { locale = "ast"; arch = "linux-i686"; sha512 = "f29b883932752bfa947c48f7c1ff6084b1cf215ea84cf63beaea808702b0b90f50e85aa4cefa4d2c1234b0d366c8f6e3d8fdf7a0f92d432cba790adab6d24174"; } - { locale = "ast"; arch = "linux-x86_64"; sha512 = "8b656c6b08640c125b94f90e1dc8259c90af2e764cee73b02b9dc3c0246b3195906d9208bc2a6b3ca31091d8cdfca8338fa6c489b7caa5685a23133e98847a39"; } - { locale = "az"; arch = "linux-i686"; sha512 = "5ee1247e37964274bbea8021c8e4e5116fedca95712fbd91d709c5c580bd1618c6319cae73278b2f0ba82031e94bd3fb382d2b4dcfc9a5d7ad47ecd80f4fca43"; } - { locale = "az"; arch = "linux-x86_64"; sha512 = "c369046c29dd0dfcf40e69e1f5b5a63423833a376d2b143d3fbf2ee1e23dedb3baf24843ba1178bda94b86f357724898a147d4adfac1e469cbf44166d7ffd16c"; } - { locale = "be"; arch = "linux-i686"; sha512 = "f8a1ab05b8d25a7a30e755a551f0851a308ba0720180685f6946a510363988717f8274ac2c8ef826c60232a62c394b86829d289e7d74e24b7656b55238129b15"; } - { locale = "be"; arch = "linux-x86_64"; sha512 = "df05271371de5fa25ec11164eaac0b253bc892749d421a6ca730dfeceb4ef89492c42ce83a87eccbe91cb03ab001bf0a1d9a20a7296b69841cab8c6b5d2acc36"; } - { locale = "bg"; arch = "linux-i686"; sha512 = "80644b86f9296b708e74843a51f81d368e3508f0f2f74de1a998d30a15f6e3af08ffd70dcc5c79adb76c03be9ff4713fc8403b8433cbc33ca3493941c4fb2fe0"; } - { locale = "bg"; arch = "linux-x86_64"; sha512 = "0e6cdc5b3cc706031c95a550b0c800c9e8e2d7bf241010c22f0872eca4bab018a5f0d4a94abb4f8291c279476700f2101a69ac0c57ae79994fba38b88b00fddb"; } - { locale = "bn-BD"; arch = "linux-i686"; sha512 = "4c697f1dcd68634e2ab712d4f2415e57cf8be0017fff3602223d8af19a1f3a5c973489d13951baaab95924fad42212a485fdff622d2b559be36e246c8a847b67"; } - { locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1931035a9d92dd9246a00b32443e282dc405096407a4feff7856125b7ee156840114c9be0dd58a020c250fa54c4ccb22052d2be291eeec9b5f76303fdf6c4cc5"; } - { locale = "bn-IN"; arch = "linux-i686"; sha512 = "fbab6f7e4205c803a50990624d58aa80cfd3aa76fed02cbf9ea390f4ecdcc1a97bda9b51791cec49f2a7e1010109d5f81a1c9b6ac224f1f70df49407df5f7386"; } - { locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "c705ec8356796060c6782261086011bc0bf3ac9f08bc821ce2305c9aac11c522abb802a9d9ab7dcb53b0d38468bb6e667d45b187355d769acb43a8b252c4f400"; } - { locale = "br"; arch = "linux-i686"; sha512 = "c58cd77139a0ae7f3bb8f6f25c40856aca18a831c8f5d6f5d59a45ec615420bd55205093fb66a77591835b0d9493f774b1801a168b9c071086d510a1446cc914"; } - { locale = "br"; arch = "linux-x86_64"; sha512 = "b6bde26d478eac081007ef43a6d588f70dc4d54afc423b019468dc91bfcb117d3b4989c4cbb4cf77a1a11847a58ec74fbf822b6e6f0ef86fdb0065c301294850"; } - { locale = "bs"; arch = "linux-i686"; sha512 = "16ee40d079996f42be77167b73645d389045648c9d36b76e34d0398c7b5b6dee54712d109f93d054236ac7076fc3edb06ee82acae40ad22825a23d92d0e2c636"; } - { locale = "bs"; arch = "linux-x86_64"; sha512 = "ef674f409df5c32fe4584f9de65cc6558d6b3ec78d8a83f5cec829bc1ae09f30399567915e32584334704d12264c2592fecc9e4952beabc8b0d4eb49a7186854"; } - { locale = "ca"; arch = "linux-i686"; sha512 = "fe522bd836c82cb68bb21ad1c7f36bd9a7af1642abf7c035e2d0999b4cc07c58124e4d8de81344598036159102ee12f22c12e44a8a087e54d6c661c3f453b63e"; } - { locale = "ca"; arch = "linux-x86_64"; sha512 = "b618da984d35fbde3819d101c103d8d9a5a4de98f0e254c67e894656019ebb6adc56e14a57410a61430d9aa9c1e0a01339b39a5272164af372544f27329a1644"; } - { locale = "cak"; arch = "linux-i686"; sha512 = "82659aa2fbd091224aef6800b3df1d2e5141b6a295918e4fc4ea09b671184f62c670e3dedd7040b2f167581b0c8a0e8799d861256b273b01b2455d0937722273"; } - { locale = "cak"; arch = "linux-x86_64"; sha512 = "a507cff511c6337f805a27c0f73548342d2fb2cffa683874d66b054b844b17c354cc6da5c3d15618006c2279099b0cd9172b17d9d4b21a3863b5e395db686b22"; } - { locale = "cs"; arch = "linux-i686"; sha512 = "9af91acffc2beeb53280a6cbd21656a91a686c03342fad90dd91314c49535acef1a8abac8fe54bcfc250ca8b8f07e3550c890094f3bcee6baece983cec68bd8a"; } - { locale = "cs"; arch = "linux-x86_64"; sha512 = "c8bea48dc11c021fff9df5ee1a67a6b6e9193ffb2a07e17014d7448254d8a8f4d1512f862ea73bf84dc15b40edbba3fd94cd3d2d18872255bbfc7fa9a7b8ec29"; } - { locale = "cy"; arch = "linux-i686"; sha512 = "7cc062c3b9b4bbfd0b1f7247f06505ae99458514b607d4d9062836085798bab7ade6c4d1c8903b1b961243c6fb6adb4c4f94780f1194f745cf62d786e2c4f5c6"; } - { locale = "cy"; arch = "linux-x86_64"; sha512 = "abafa600b941e17f8aea0e778a937f5fb34cbc8803c93e59febc5d9fde6ad3347ba0bc7aa07ab57a61f6b9d6b11d582b987100364aa8401bca539dc6e14584e3"; } - { locale = "da"; arch = "linux-i686"; sha512 = "d4a9141779f52b78a51b9682b6b44e5ccffdecf5582358ab8a02efe133d9a52023e03c238e106a79e41a8aeaabcc58e0757c1af66837768e7bf4732f26182915"; } - { locale = "da"; arch = "linux-x86_64"; sha512 = "48f0c48aa273cec9830bf806330c7a630185262838007628acad904a45b3186450a8973938c36db636bdef9042c78ce94a4a456e1682ef561abaabab6ac20863"; } - { locale = "de"; arch = "linux-i686"; sha512 = "01675b3a8ecfa10da1d101cba36295b226b130e1cdb2c760541cd76c9b21436ae84ca7228e063402b1ca2eb59acadcac7720c9dd47db8b406675fb273af206c6"; } - { locale = "de"; arch = "linux-x86_64"; sha512 = "6a7ef802a8109f58504b2accb9ef0ee38986f6c8980e0831c30b470f2ee768169557cdbde1a58d7c72996b27596e553185ded476cecdd7114b75d82428b7846e"; } - { locale = "dsb"; arch = "linux-i686"; sha512 = "55528fca4d276b2b0430949686845e3d7d88975129c9a9846408f758b4f9c8f154425db891e5c1930197e36137d6c15ba29de90dad624bad23090015849d0ab5"; } - { locale = "dsb"; arch = "linux-x86_64"; sha512 = "f21c14a57f6f973be824340fcd417ce03765d5826114462f62adbd933661bccbfbe90b66935083619c62d48401c511830574ccc373ca2110093b06fad59734ff"; } - { locale = "el"; arch = "linux-i686"; sha512 = "ac5a808db1ba68286a7199eef33794f7aeeafa26e97a20738fb21be479462bcaeb1e8a7995720d5c7dcaadd0cebe91bb2a3e019873d0cf74f42838f7d5c1a427"; } - { locale = "el"; arch = "linux-x86_64"; sha512 = "c02e6587d99fc3ca66debe854c778a8b3dbf9b514e6ed74fa15e3035a54643b2bc324ff59f1705c6bd392c37ad1996f80dbabbb57df10aff954ed0ff3f5b01d5"; } - { locale = "en-GB"; arch = "linux-i686"; sha512 = "c458c70db0408d627a904781adc9af18011f243689f4c5a606c8f1508b4e9417a8df499673c4ba56d32ea77d0f79ab85ff88852f7c518e7fd124e5970615b2f9"; } - { locale = "en-GB"; arch = "linux-x86_64"; sha512 = "28ccaebc4f7613d7ea8c3b47504923f2d59bdf4afd6e386a67dcb6b6923a9374c1c783e4f904da0b6e0f716ec87a046fc12f3781b732389d1d680745d6955c58"; } - { locale = "en-US"; arch = "linux-i686"; sha512 = "e1ea34bd0829656c04c471b66d2013fc07cbd5cf40b47bf3a932326cca71f9a502c52d1d5e6dd902d274d307079475b0e75d7ff552fcb2fadf31b2883efba79e"; } - { locale = "en-US"; arch = "linux-x86_64"; sha512 = "a56b2ad26df424f008d96968a4e6a10406694b33f42d962f19dff1a0bcdf261bca5dd0e5c6f3af32d892c3268da5ebee8ce182090f04f8480d37d232ccd23b9f"; } - { locale = "en-ZA"; arch = "linux-i686"; sha512 = "d5efc3d4e624f34c81df068f4d6c184cb8a63ad0667695e9ce7099e069b23715eb77cf2004adee41bf355452179959e5ef7450f167f87be70339abb4cf70844a"; } - { locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "859730132549691b61e936813f0f5fd3e62f3ef6fa9899e3f68bd3178b7438b4c6b49f54f00d4898b568d6abccdd55a0f9fc6c51858e95735fefcc13de460d73"; } - { locale = "eo"; arch = "linux-i686"; sha512 = "8ef290bf1eb3504ace393b32c2da64d14435edc327c4f13a40cd925efaf7e042a03b6877689b3f2290f85625410a4e48dfb2cf676f138fdba87ffc597b25f4b6"; } - { locale = "eo"; arch = "linux-x86_64"; sha512 = "7d6167749d2a57a9c12180302a825fee14555e9050b6be3c83dd35183678bc36e10391cedcc864ca0dd96d297997a68627dc4fc1a9cd8922e789dcfa814f18eb"; } - { locale = "es-AR"; arch = "linux-i686"; sha512 = "07768e3b3ed903f4327881a132f192a65842a376eeca6d10ec0de69fefb4ddf3d7fee2a704bbc8d229c78556478814d9e53940cca9edee58270d9790d6b76998"; } - { locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cac021af09abd742273dc77291fb1528dd5d6d38cef3a5e36e615fbb9f3908655fdc96ceb93fd131c4879acf24e702a044471136e7575f3b550ebcecd982047e"; } - { locale = "es-CL"; arch = "linux-i686"; sha512 = "e92ce6bec5b1ee8cf3db0a604eb4cae6245fb6d04a48eec64b6dd55139f3606cbbcb65511e29a3164d6572929b7216afbaa7f034a2191eba100ecb7403740504"; } - { locale = "es-CL"; arch = "linux-x86_64"; sha512 = "98e57146481a53061c0b30872290ecabc2d14c73805a9461d82aaaf4cf9f301521fd55b01c8159c09a56f52a1580d83c9527986b1390f496d0fbd11227216e7f"; } - { locale = "es-ES"; arch = "linux-i686"; sha512 = "c44df66e140ea9190112f89aedff9519b6bee18f5e2b54aea19acd233e623c299aecf134cdba70d366fcaf6b7795d220052ff75409c7a04394a7aa02d9ea708e"; } - { locale = "es-ES"; arch = "linux-x86_64"; sha512 = "c2d70bc5a304df7b2484c8fb2b374f8e31a69049eb223a53dbd0e4b51e4ccce907efb1674eb637370ce7c3947ba5c09e65f433d10e0f328b80d482f3de9cae12"; } - { locale = "es-MX"; arch = "linux-i686"; sha512 = "96dcb75cffeb85b85f092e295e38ee55c272714c40609ca90cfaac5fa0cfdb3efe8e993319ee690b4a7938c42346bf39f063ab1f3db606e743c1e4720de5a93f"; } - { locale = "es-MX"; arch = "linux-x86_64"; sha512 = "60b50d6726b2e1985564bc02263eb88c9b4c1bb39e6d19812ecc6751d6ad223ba04f65a7755a946fb15dceab90628b057bda89c55fdd4972604586f52c5a4b1c"; } - { locale = "et"; arch = "linux-i686"; sha512 = "0a4bef2277f729c93db413b68f8263eb356f7b3278880574b8ebe010e2db9067b803967e1f0d6912f128a9ad5ef204466f52ae277f3addfb8fe9ac377c3b8a3a"; } - { locale = "et"; arch = "linux-x86_64"; sha512 = "ed1bd4fd67262958601f1107edc589bb28e9b7f9faf0edebdcaf0c07ec6007f527a9eab434582a65271a8f68edac8178601da54eab9398f48b31126657a21b0b"; } - { locale = "eu"; arch = "linux-i686"; sha512 = "8c5c9406345e2a1fca3544aeb742dc0d254c804d887e3614613280c050a63b69320d4488b017ee16b0a2a07bea862e8b245baf7edc9df65689d509986f3c5958"; } - { locale = "eu"; arch = "linux-x86_64"; sha512 = "d8f7004e24033f377391b577c549b66f73cf0e899ce5f580eaccd07713ec03b4362db7b222ce6345d113641d3e6a951302939bbb155c47ec0fa46a201a631427"; } - { locale = "fa"; arch = "linux-i686"; sha512 = "f4e02737e20b6ffd3bc2b3a5e5fa59fc80a8e37dc8459ad4a6b99e7621a4d3f360884915f7136dc201830efe371de37977ef3e27f34f84e2cb734c1fff8f6e36"; } - { locale = "fa"; arch = "linux-x86_64"; sha512 = "8f624b066faa39341b750dbb702dd60ee6ad75b3850c659dac2e21969ebed1f792423e9fb0a9cae7fc456943020f9a0155af5d7c596433eedaaa9990ce07b7d4"; } - { locale = "ff"; arch = "linux-i686"; sha512 = "22a2c5376b1e8d770659475085d98ac1f1020cd816ff3ec6ccfcd68f2484b1b0dc25bb84ca52f4ad27144f4da356ce5e7fd54411d12ae7c852064509470d5828"; } - { locale = "ff"; arch = "linux-x86_64"; sha512 = "bcb3dabc250045b8ad444219055fd9d14902296ef3f9c320bec1bef940f84eeb0d4a50249805188ae96ed0288a70f0216350ee79191beba49aeba890ae515b41"; } - { locale = "fi"; arch = "linux-i686"; sha512 = "0c505a0e1d3030038b61ea159eece3892bcc7d947b6d7010c0be8791525c9d91ad1170d4cb45260584c93a78a4bc831b7acd9f28e95ae62e5b96b31745dcbe50"; } - { locale = "fi"; arch = "linux-x86_64"; sha512 = "f347cde005c6b61366c633db5a8cbc5260dfa0d68230a938d847e3f80bff2f1bed09dddded7b1728f4ef9525610ecd046743f9e71eefb467943fe6b72ed198ca"; } - { locale = "fr"; arch = "linux-i686"; sha512 = "8fb8ea2eab82740657a6b822b330fa0c289c31ad900683b4ad07b1e9b0c6c4e14f50af39d6d0f787642010628800b0a99b5ab0c4cad62e4a579390509b1ddd13"; } - { locale = "fr"; arch = "linux-x86_64"; sha512 = "ae79c5b7f9f8305c3631f4f913baa341a9beaa7a2ee5df1c6c1826030c21bf22b92095ee579affb8911110bf3bcc359793c0beca18d4c32b1fcc1f3d1dbcc4b9"; } - { locale = "fy-NL"; arch = "linux-i686"; sha512 = "1c57d02fdc33ff53de48ed9aa9e89ecd5a56d35b432d5651e71bbfbd5f9dfd18aeaf14d10b881f72df871afd00a12b31ff05cf9d5c5a55cd44a92c7a0156523d"; } - { locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "f30f59d630c5d289b61dc7440f7bbb976eb16732370f827365a477090cdf9f2859f39afb7ff9d9be7e8a022f181f2aeb7a3005c00f4c14e6505a28db7ae48a9a"; } - { locale = "ga-IE"; arch = "linux-i686"; sha512 = "739d5feec4bffee67876227f6783d35675f4c0d168b7abbe5f97b6e8edce7fe4b8f04f8240087f7f208db4180f3417997b661c93ebe046decff3f4f4fecac839"; } - { locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "cb4344df6e07db839ce8c9fffd1b7b310c8108b5218cea3602972806c1a40f56bf1355ede4cb3595f54179b16e3470e25bfbddc8e39d726c7d6c1e99d128ca8b"; } - { locale = "gd"; arch = "linux-i686"; sha512 = "91004d62bb5f1f6a1d65b35fee9e594d21d9877669e042cb4c9a834b01b35797363e1433a9ce5a8d0a9f64c8b256da6a6d09fa3342b74b7c2af8ce8afb3e4e56"; } - { locale = "gd"; arch = "linux-x86_64"; sha512 = "f04034cafed25c34713ffe4109e53b107b8fe81321c0c0c035f54ff0ce67ac393b42db7598edc658d3f026e447f9ff1c4d1cfdedd31066eefb6019117248e4c0"; } - { locale = "gl"; arch = "linux-i686"; sha512 = "107bdebb92ce86f39cdc45d6bb24a9c4d104820eca6bb77950693ccbd55e7f8a2f143fc3a5bbb1bfda161e7a33c8f6d8d2686b09da1497215defbca2b4e4e109"; } - { locale = "gl"; arch = "linux-x86_64"; sha512 = "c841af5c73343475150b5404b4b54396bda845aa5b231a742aa17ecb7fdbbc5cd4123efc3ac2ede1c24f485d04bd87e8bf7cb00b7135bef236ce56afa0c27a19"; } - { locale = "gn"; arch = "linux-i686"; sha512 = "20954e218967772488bd895ebf069522c3f4c56ebfa09a7c8efb740158cb95b6be76cee8f4d7f2c1c6c505ca9071a0ddc1914784a54f669d337d5196f18b6f4a"; } - { locale = "gn"; arch = "linux-x86_64"; sha512 = "aaed68f13e326792671669883b452b65556998ed757ed5b745c6453d6bae8865a06f137709de37ace2688e2e09f1b96ecf2e5b6374b4170d29100c6f83ce22ce"; } - { locale = "gu-IN"; arch = "linux-i686"; sha512 = "205093ecc0dfcddb2b90e05b1a17f75805a4597bbfad214d67442fd0d952f765b031ba63a3c399ba9c1c46e4d05b3cf786f01c46eb8990240a16431964c93a94"; } - { locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a84ec5015f6922a22a284eaca985010586067370d818e77d401b58782f86dcf2f534f1ef021719c170f1f502525ce25c94760d3b75481c15fade3c25b969b563"; } - { locale = "he"; arch = "linux-i686"; sha512 = "5727fc4699316c4b34be1c2596c5cc20d5fc9d2062b1e106087cdb34b788fe3ebbc098acc8c690bc83c9d9be59ac3b3977fd9116d766ce908aa088660fe34771"; } - { locale = "he"; arch = "linux-x86_64"; sha512 = "c399969bc24b10ca1c1eff17d3414f214cfe3e5b73282942ead5b2ba4d2c58b74d665b13031ccf42956cd45f0fc7b206dd2f9674103c1e3a8861a33577b5caa7"; } - { locale = "hi-IN"; arch = "linux-i686"; sha512 = "f014c47a143d425aa3452be2bbed199a8b5e75d278c35fa86bb6bcac40bfb32bdee22d030386c881c818b465451b35c81f97bf29f9ccfbea606d52c822057899"; } - { locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "0e5dc0970680886dc02448d7118b6864092699fe44f3276ca17cba160aee59418f8e39338247897b118de0e1fb7634cf725ddc6a34a8b6f002b7a78d92deffb0"; } - { locale = "hr"; arch = "linux-i686"; sha512 = "a9af43f6cf6f493f728b8942d3a600f3cb3a23eb0818d284ddabb8766f7d274aa0a232f9925b65625bb56d00864946dc6b0567491cbecdd6a7cf626b6964d9b1"; } - { locale = "hr"; arch = "linux-x86_64"; sha512 = "d97951148ca0ba80a67020f323859ea3f508e40906ecfd18f7a8fbe7a2bc85ea4635945b5c6063e1d5d18456471604075e6767da9a4fda6a09dd3e992a7d3a88"; } - { locale = "hsb"; arch = "linux-i686"; sha512 = "2f7adccdc894f345e861b29a6d65909b1cde2649c69ec9223f784e659e8e3f4668f815b3683fe691de0749483167d26885a0199bee88e8524377c7eee3afbe99"; } - { locale = "hsb"; arch = "linux-x86_64"; sha512 = "70e39341ede01e18c653a0eb56b48e31c73ee3df54ebc11bcd220e2d8e19c67c3e248095c4d070b12a0eac5c24acf5a8ad83069673dcaa684229f4706103685e"; } - { locale = "hu"; arch = "linux-i686"; sha512 = "1fc01c6dd873e2194e6196b1bdb0246e95d0b0520f558b21a2052251d2a5202141c09410c4631b3f025479169d8f68411c2a24f32825261fa8d65696fc7cbe0f"; } - { locale = "hu"; arch = "linux-x86_64"; sha512 = "b4509d671d7eac055812add85ae571f52c90b4eeb172d21c22ce844c70192ba235f37a732e94a0edd6794ecd5a8caa5e8bb6ce05a26d3705902d3628420af871"; } - { locale = "hy-AM"; arch = "linux-i686"; sha512 = "a2b7cd1ec95a0b5eb064e816cfcfc6a74a92806772592947267c4b266bf7ce77d1beb17a7c25b905251cf497ca8dfabf16bca367cf6d9e9e635182f306bd71ca"; } - { locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "9997ca45051e609e289d7730caf1254adacefbf8e618a165750d5bb7ff7933d014781af76501296c89a4236fd3ac477df6e6be5a5dd45f214983c851a856ce5a"; } - { locale = "id"; arch = "linux-i686"; sha512 = "bda5a7c599885bef966daa35a3f34297e38534e32967142ff9cc720a34c7aa9730e3f24623c240637838eca03f78f9b2ee30af3ac3dc8ba48f9664c56b64c789"; } - { locale = "id"; arch = "linux-x86_64"; sha512 = "97d16c5b4382c7fc6ccee416d671e47d345834a44ab111aa486a41c756b25eb894628d0128e8454fc15f38937bc40436b12e60752ce7b7c1fe35a230abaca337"; } - { locale = "is"; arch = "linux-i686"; sha512 = "576b904fb836ea735f652c6b9c91891dee164edd3523c5f99d68cccb4bd6689c29e4c579b6cc44e699a8900101fb8d223f9e0b0860f71a2814ae0ee2c70609e5"; } - { locale = "is"; arch = "linux-x86_64"; sha512 = "592d65977c34c6133f5745a85722f822efa5956bafc6e880954a0b318fa59712c754e882768755fc08f5e08a1c99493c0b30b4219c46169ba663258e3fd3f3fc"; } - { locale = "it"; arch = "linux-i686"; sha512 = "4d749e1b5d8432df789f29a247ab48a688d4aa16fb25dcf7209783c6036bfccb9ff8ac32dcd09dab1708f71896fa034576d6048eef077d1a6c0a3dc58d3cdb26"; } - { locale = "it"; arch = "linux-x86_64"; sha512 = "087c456d691225d9aef54b2013af69cc7bf2501f83060179112e9c40c1d6762202f68e6329a936df091a1ae6aa5f20bcc96a4c8b0451b71270426bddfb45d15c"; } - { locale = "ja"; arch = "linux-i686"; sha512 = "cb4b0bbff7d322f2f04fdaa50b365d4e0a1ff1786206539cd124870ebd69a9305b88d39b9fbed41c64ddbe68098e02c51a0dc665262424f8eff882b1497ea1fd"; } - { locale = "ja"; arch = "linux-x86_64"; sha512 = "b6c9b419a3e746957f93a4bdba9043adc3911b6f76e1eea2e4e31e77e9aa9057ce720205db4af5586a90df4d6b774b90829f1d7689e77c560c50ccae755400b9"; } - { locale = "kk"; arch = "linux-i686"; sha512 = "ae7711d86ce8180997f44f9309a63a436bd8b70ed0dccda773c34ba816daae99b3b1ae913ee87f4d1f9a4e8f016aea670e89652823df16b5e8414bb58ac28225"; } - { locale = "kk"; arch = "linux-x86_64"; sha512 = "49fb6b5ab6aa12535373927519bf36099da6fab7c2e1bcd6f5ce73d91679f58e81eddd3556df65b305fc2d1cd439cf6de081980fa98ff79df16b620ed41290fd"; } - { locale = "km"; arch = "linux-i686"; sha512 = "29dd1808c1430c01dbb395d5e5a833bfbde85453278d4efd32f1afa1eac19a651c0c3a42eb4ba3402f56a8492e80746d753986c0ec0f1a6dc0e5eb6778b5c6ae"; } - { locale = "km"; arch = "linux-x86_64"; sha512 = "f53966aed30b57a601152f09a26414e11bff4ff31683989eb1e47546eaa32fce8cbb6511043f9753cae076d23d6f2172c2b224313cf5f3262f109b49119175e5"; } - { locale = "kn"; arch = "linux-i686"; sha512 = "17dc37df2b3d5a87bbadc4d5c80d4ddff03752b7a80f5c76171ce9f0bc4b8926964b6315cd4f0c6c9dd3142cec56b464503bde34ec3c69e2b8a66ddcae72b0ec"; } - { locale = "kn"; arch = "linux-x86_64"; sha512 = "2af5ac5c254bd0ed2d08656a6fee7966d73aa89973cfad67fd18d7d88fd1f18a2b882de7854af46a3ebc6acba4cceacc06942db7ae495faa2c6ef21c65e94158"; } - { locale = "ko"; arch = "linux-i686"; sha512 = "415fc260f3dcc2ede6c43194501d9522fdfb106f7c86e5d8f5929df6615c73023fffc3efd190deb68bf08bb2a0d4ab34f7605e222301c8350b980f2dbc289c8a"; } - { locale = "ko"; arch = "linux-x86_64"; sha512 = "c991c0b9a89b618ac046882b929fd7e3689e19dd96edf4535b25f9172b6baaa801a4490ae4fd35e82ca3c776afab74a0a09b993f8ae8c2a603d210f2cf248f73"; } - { locale = "lij"; arch = "linux-i686"; sha512 = "3cd367654397d14b782cea4ef8c96f1f6938f011576a8dba92dd4ca832ca3c8682f3e0e161a4288b112fca550d556080d0ece5a79e4c4f6ec99a9298feb6fa12"; } - { locale = "lij"; arch = "linux-x86_64"; sha512 = "2d7475c544df807a956feb9361f889ba0f5e43dc52a9e1dc9c469d86e97f344b4f2995e3fa149a77662969f3acbcc998f430973b2b9d28b23c82c5058b4a9dfc"; } - { locale = "lt"; arch = "linux-i686"; sha512 = "35c8a452ca845576739d5faa9dab6f3c34dcecf9ce95870f68699836f3534b4807c91fbe80007950abbbca662e6d01b406205b3e4cdf4d33e0717ea5d6f57006"; } - { locale = "lt"; arch = "linux-x86_64"; sha512 = "8791df09d841d5ddabd552d0fb0dc7e9446d23092bae1010d92bc3b056a9ad4a6dad01c5d8db531a273945eaaf4c30c922cd03d7b17e1b6be263e0bcb91b8384"; } - { locale = "lv"; arch = "linux-i686"; sha512 = "22b865a344a46096c53a72ff6b1402d00808bb3b49ecabe6f4115ea60e40e522d64afc701648772616fcb784a963bc6d5bb3f89517d7f8407f22fa82d81bad98"; } - { locale = "lv"; arch = "linux-x86_64"; sha512 = "3c66af306b1a8d0a684c12511d95353c0bdda0bea981ce4e577c928be03e12b582b19dcaccdccec551b3cb0fb716323b1079180aa7a8f1204f5e4b5a84b72831"; } - { locale = "mai"; arch = "linux-i686"; sha512 = "780fe423a3cd56a7452df32679ee07a0e328b21cadc78faa2721cec59185c4a4467aeeb75e9237cc86d38dfa2cd71530f02156c4fb9515582ca564dd53d47543"; } - { locale = "mai"; arch = "linux-x86_64"; sha512 = "d27218b59edf004dc57cfa9ffd70dbeb59b7d3c0871b00388a56b505629fd82ddd6f6e0147f5b4c67a8ad72a674e384b66ba2f9455fa9ff218c9ada4b27d1d7d"; } - { locale = "mk"; arch = "linux-i686"; sha512 = "da7ae3718f3c69ec9b62aaaea93951375d82d8d02818d6855fa9f085a64b69c155a1336585d786ae2d33d657110b787f62909dc9e4d54c62d2ea94d2fa8fee3e"; } - { locale = "mk"; arch = "linux-x86_64"; sha512 = "95136f8bf86014a63bcbf4a5cfbd778c4c7e6a84618aa0f6a6948bb597638569b3702e0569b50c5dc9b46339e723377faea8964b921ae9802043fb7983a2c4e4"; } - { locale = "ml"; arch = "linux-i686"; sha512 = "56743acb54283715fb2a910caa85dda61f7e2c1c5e012aa222dc07e3b522572500056fddf990b7ef03a175ff8901fb11b113bcad5c2adf4a6e6e032644ccca2f"; } - { locale = "ml"; arch = "linux-x86_64"; sha512 = "134f35f5f6616c2a7eec48f637277fc02e23b57bf38eccff9777bb08c70a41fe79967b69567f75f9c8bcbad4b22d2ddaf16bec98e399c4b8ca9db9b70e99ef58"; } - { locale = "mr"; arch = "linux-i686"; sha512 = "f29de7ae7dba03465baf86f93d778c9faf3055d50295977c0207c7e4daae6f7ad733ed38e1323263cebe4f737d9a1616024333a97139156470de1a9fe3c16276"; } - { locale = "mr"; arch = "linux-x86_64"; sha512 = "731b4f143fd1303ab54ea3f1b6aca6c4f78ce935caae32fed0b8cdcd46c0ade8c8977131a3be786ea929a7d284c3d45d34851a0d81242761f722f0bceb126957"; } - { locale = "ms"; arch = "linux-i686"; sha512 = "d372bac105f2012b189efedc449c7c183d0daf64cd7a40822ef9d685ce4a1550ca9699620440dd198b13f95513a577766e9f1a8e88b212492831bf7ffcac7e0a"; } - { locale = "ms"; arch = "linux-x86_64"; sha512 = "1287f36a742fa834d5f31e6bc2f6d3651e54f2bc8845a1f0f647e9a9e38ba66c58138961185897c8832107cffff06167a35dc3ee1f0ff830f997f65fb0854a63"; } - { locale = "nb-NO"; arch = "linux-i686"; sha512 = "ac3e46080e188e56a6b67ff77aeffdba7982d7c3aa4156a6f2781ef6b8fe63cac50d678e5afc91aca4ad16c4384d2b2727f74ddc4083da91a1e3590ac98ec9d2"; } - { locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "dca52381e45b5c2d89f590971d830010a9ec1a2a513fe655ee93c3fbd980adcea78787701595a95402bdb660c2f3e0a489e001deba13798337493655798c713a"; } - { locale = "nl"; arch = "linux-i686"; sha512 = "6ec01f8eb18384aadb5715a996c8410ffa94b801ee1f1b1ab43bdeb492e179e781e8b85acbeff4a25cb4fef847ce3e2335968458d9f6e47d046083264e91f6f7"; } - { locale = "nl"; arch = "linux-x86_64"; sha512 = "7d5840518312dd167d914a8f7fa5670fe17f9a6fc39ccd128e30f689005b35bd352d0602993713c3d05288f2b036829be8e08398d536e4aebf2341ae2290e633"; } - { locale = "nn-NO"; arch = "linux-i686"; sha512 = "a185f7592649a91214363cf2a0474b5895f33342c98cd4bdc48fafb0cc76310b2ba4f46575970d723c76b2ecfeba8e2b39d9671e6059a15bcb2565258096156c"; } - { locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "7f8e7277bcbfbe5f40c161f1ebbeed86159c2b6205a5ea55cd8b6253fa6742bcfede11d4de6c1aba36e2b1e98f9c9a7b8e26f9aa35e1eaadc1d011636d429be3"; } - { locale = "or"; arch = "linux-i686"; sha512 = "a543a7d3f4e24364be7e4df65a81da82d955d1268a4cbce741ad7ddd5f4e9916573e271f02af1e92b123a4da2c7f312c17f6ce714e3057a1b204484ef12133d8"; } - { locale = "or"; arch = "linux-x86_64"; sha512 = "7672596470cd8f49f9c4558b05bd637af1650da729bc518681a8cde3ec785358121fa7ef209e123fca4b59df1a63878832bc32d2ff404b5d2a818b60ba10c15e"; } - { locale = "pa-IN"; arch = "linux-i686"; sha512 = "a99b60ae1eb479e31f838fd41d5de325c418762fdcfa5e0f3bc3d5da8df108d3b64ce5bfac0af09663007becf5327164db8dea0ea7a3876586cc43030a780199"; } - { locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "f0110b74842f924808f74979061151fec711d10a6005d2da2fbb8d46fa2a25ecd5a2c804e58c10a918efe570d4d67d05578b0245f526e1aede4bbc786e9f304e"; } - { locale = "pl"; arch = "linux-i686"; sha512 = "7eaa2bad351429d76b476819a1529ed1609388968327382cc13df235a294f2e9fb14295341ff15fe3b2815ffd1c6c8978e2aa104a847fd2cb4adcf2ae3b0b974"; } - { locale = "pl"; arch = "linux-x86_64"; sha512 = "a40e2c15cff0e7f7bff8a5c0bc4cf39df948a21bd37b34ffc93dd87e1f5256526a25526e457fcfd8d081bc872dc1bec13e67da3cf671b6a16dfa17850be4743c"; } - { locale = "pt-BR"; arch = "linux-i686"; sha512 = "c9cd96e68fa2e1f73a49e71c287a25be8d45a8ebb56262e02c40ba5869fc58c7fc43a1f6958592bb377e7dd4064d64f5ebcbcb5cd3a9fe0a007c2da665f50a66"; } - { locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "1184751c1d1a0a9044f8df2d20aee7dfe332dc5f851802ebaf2c5c83fa2bcccfd913cb6e16d2baa449cff1b02aa18f828489914c0741a2ef2a46d54fefecc268"; } - { locale = "pt-PT"; arch = "linux-i686"; sha512 = "86538057ae91b1297acc11c9bf3f7d24ba1950edead89d4733f7c898cf53e3848054bf391a975f19766b69f4c56f576ca54e4b8da806db7416f3e3d91777c3c3"; } - { locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "0a480c26e5dfe2bb9b536e122ae32e18a6dac999004493839cb506c1ad615e095c554d296f1a77bfccbbb86b58bcf549db83f7de51d02b68d1eb752b421f23cc"; } - { locale = "rm"; arch = "linux-i686"; sha512 = "751ffe931cd60296490c7164f49f61f4a51bac5210328a18d02261a07eb607e181b2bab4fa0b59d2df15334152386bf816a984840d2331b7e801171be9c90594"; } - { locale = "rm"; arch = "linux-x86_64"; sha512 = "3e526c9a1a876e5d2c548c9a68803dd11c04c8214e18eb09c0b1c3fb3833f64c8a3362db8083ac5de81c59268439b53effa3bf1c64807fafc874eb8ed9baf188"; } - { locale = "ro"; arch = "linux-i686"; sha512 = "73cf6a18deafb7ba93fd60cba3ba0bb0191471f977c41bac11bf2fd6cc6f7fd7cf2ad125ac5cf168ef577d71dfb0e893e182f39be6ad186ddc642d87c40041a5"; } - { locale = "ro"; arch = "linux-x86_64"; sha512 = "b62c54b8694b4a662c1d336056d404a8d432ba0a3d4f2964b5c5acc0e39b668fd228105e1c4e307bfab1acfa5c3ce223db4229df01866cdbbc7c1ac95e70fe2c"; } - { locale = "ru"; arch = "linux-i686"; sha512 = "6ebd3b3a1f3613905313129cde7cf113bdd777fd0f600496231ba813a95b04309b25016dd69891d31189a93ccad3f87b9c69d54d6219ad39dd38d1181b1f3102"; } - { locale = "ru"; arch = "linux-x86_64"; sha512 = "539a22d13587cdcc21b6f76ff24ccfd1df98cbaaacac802aed46ba8f2bfed27cb2f3e5c146cbd2c3559aaff22297e692030b9612041a05a6bfca08f49bf0d2fb"; } - { locale = "si"; arch = "linux-i686"; sha512 = "bb0d1621f5b9af886fca0ea7cf7fd851d7c22d2d8f279a7b88e9bce98be33ad7b75d6a51ab47ea859802ed39b467815db60409285afaa0bbf4bb1ce6d590eabc"; } - { locale = "si"; arch = "linux-x86_64"; sha512 = "90337d193df7db41a1384856938bb62212952a80144dcc319a725a9b567ffd4deb7bb7af89b57891d3c17499ff466990e656edf7d0b017b8f4e0370aab445477"; } - { locale = "sk"; arch = "linux-i686"; sha512 = "23a15e6ad5ce9b03c218be4e26e603a412de4d870d5f64b599ae511bfc66bf2cf04613cc06fc1a054d06b80435e284456c0b08e33f34d8c9482f5ca23da6ae62"; } - { locale = "sk"; arch = "linux-x86_64"; sha512 = "a86cbed60f65e4ebb36c614d846fbb2515945112fd4f2482c3a63b49a62c3acb310f050dcbd57cc76a808c049eefd8f779d6aeea53362dd81798bb8d7177c86a"; } - { locale = "sl"; arch = "linux-i686"; sha512 = "8ae008f0077081ef40de3bf08c2de294231f41439a83d8a41a485f53e95ba3f4fc6ef03d6ac98e8848c3f3dad290978f1607d8c847f1622bd86b7d38cd0be730"; } - { locale = "sl"; arch = "linux-x86_64"; sha512 = "34efb560c65329c7f3f6b341cc49ac4952f24e6e9b34e7f5bd45d98618a4d03ac89c6f62580223efd2d37db24a03f76a54381d4162f5430b887122bb56eb49d9"; } - { locale = "son"; arch = "linux-i686"; sha512 = "d3e5a25fbc4a786239a7ae543fefb7b7e3ecc34192c8326af915f18b9b08436656bf68faa4953a34bdc464e32305baecce800f91ef0152bb4b4a8323ab448f33"; } - { locale = "son"; arch = "linux-x86_64"; sha512 = "ffee5d1a23e91911fd1dedb5ecf24bfc6b1733fb582e64a5e07d4df4b7afd9a6c502a70ab3af6624b4594f5ddcd81bc8962ede5b693cc035a96a561389f6bfca"; } - { locale = "sq"; arch = "linux-i686"; sha512 = "1cbaf8c32d1d3205cd85127839eed11b416903960c9e411b9adc71c42ba4add47acddd32a9217bb68f27b90d6765892edf2d356e21235c5bfd5cf69d1ee719f9"; } - { locale = "sq"; arch = "linux-x86_64"; sha512 = "16d93961a53ecc3e1ae3480be9e34f2a22dec2bdab55dbd35d1ea79ecf2ee48f195380bd52efc7d39529601610793b75daadeeb54dd76c9a3702c786af25acdd"; } - { locale = "sr"; arch = "linux-i686"; sha512 = "0b2c5234f1787cd972fad398dc270766fbc3015dc1bba29755e5316f207af9f5787d4aa41e96cffd2c9d31c57a5d1896e63fcd04e6235a4a6798469e738fa10d"; } - { locale = "sr"; arch = "linux-x86_64"; sha512 = "e7c7e7ff7fd81ca86f45997faed7244e4d807c3e5ad7ed66d6feb38c3e9173eaf136bd34af690ce28534f0c531c7f1d11595ec6502dfa42778cc19dee4334c49"; } - { locale = "sv-SE"; arch = "linux-i686"; sha512 = "dffb94b0ddb4b9d2effba3894b408c9f191f2079dc4b47e214347a235c9bf1adf77e520465691d14a274c3f3344c7f8b7d41965051d506728347e0af1117ad27"; } - { locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b601906d28f071c6beb3dbd6b37fa68f50809c9c47c9db69d631127ccc7b784e7d3b278aea6de060b34d83b6c78137da32b77f8e17ed199c3213b89dd9391264"; } - { locale = "ta"; arch = "linux-i686"; sha512 = "1a496470ef8e0899bfce66b41490f54d4d32776eaf60aca8725c4732512f1d3befb2e1fc3b942ebea95fe2359509c43d41649e5f90498264b8e02a3352244260"; } - { locale = "ta"; arch = "linux-x86_64"; sha512 = "00e6dbc43ad3c77693903fe534722094826637698df691b266eb801b27cd5e63502c21ca3e34ff939a7645a1f75d36fce6154626019eb96bc73cc39ab845c952"; } - { locale = "te"; arch = "linux-i686"; sha512 = "70ed539571cadf241f819b68ff24829db32f56287aadab31656fdf66c0ed94ccc6cc11b6cef6e2e963203cda47af2c6032db6e5689c37aaaf495b1e4fa970207"; } - { locale = "te"; arch = "linux-x86_64"; sha512 = "d491acd4635ab9b22f76531740c7ee7a85832678aef9ed646e75f56755c02538440adeea71e9ca5a7a5e11f3f2f6941c3c4c1e47380547179f63baaf6c20ad07"; } - { locale = "th"; arch = "linux-i686"; sha512 = "0414f74c6266fc204f2741b6860f7919c957364bd56ccc2cec5ef4b9c4be812c554ab584e6ce53387e6b7a18ad02991a44d9507a16da59a4aabfd44e7fb5b754"; } - { locale = "th"; arch = "linux-x86_64"; sha512 = "2952cceaecdd4013882150e8158607639e4ab2cffdef563d4fd1a015c41f1eff6c5ac22c0b9301a05ab6f9fef9659d54916275d5a50d97ad43bf69f10da7b3c8"; } - { locale = "tr"; arch = "linux-i686"; sha512 = "c5c6273bae2b9a46108a433af3a85b5cbbba4cd3154ee124ccc49f46c4a76264836a76d1b2da4b1064e9a913cc9fe461911c53e44f40343c5f780be04da932e5"; } - { locale = "tr"; arch = "linux-x86_64"; sha512 = "f0b5bef1ea4b948d699a79d902055d5b31afbe5c4f1814d98cadef1ca820ce39212ec009f68d875860a48942e9d797bda88eec4f6ed591dd8b3b260e04170974"; } - { locale = "uk"; arch = "linux-i686"; sha512 = "3a069ba914716ce122c4a89612988708d811b9350d333aab203dde212527c0e0cc86ec4781e6aa23f40b77f2266f76eca366cf355651870f43e180b97aa25c43"; } - { locale = "uk"; arch = "linux-x86_64"; sha512 = "db7931aa3f1d150e4b5b8c87b9d069df4a515fb2aa5e250b8f8a1bae0d8fd9a210ae949df056c47e3c88e8faf28f2571311ce2d6f179e3365720b42f1335b546"; } - { locale = "uz"; arch = "linux-i686"; sha512 = "110a82749e187f39d77f63b16ad515218e5512e5974916e4145e625a40d797e23fdbb5d110a23f061448cfc3d3c597858636c9304e941a34c68368f749c3c900"; } - { locale = "uz"; arch = "linux-x86_64"; sha512 = "1dbf94cef034449e8d1342822384bf1761dc61748e2d876aec1ac628dd161f92b62da832fe397b2fe4f8a1b82f9adf1c3690f26e07ee3e48c6299f95969533cf"; } - { locale = "vi"; arch = "linux-i686"; sha512 = "af97e1dcfc9bfbdce95a5cd35025b2540ad928d3238863471116e071a51b354b7818577bc3e7427c513e7b335bc1510605ba3ad1a37221389de7c7fedf6e2103"; } - { locale = "vi"; arch = "linux-x86_64"; sha512 = "cc938935395e66ef721fdbb8c8b781ef648b5419393ed1687a116a4d9ae12dd18f2edbc8287235504aa6782bbd6a41f9f5dd89c9c712ed4980fb9fa44f46ef38"; } - { locale = "xh"; arch = "linux-i686"; sha512 = "a76dbac054cdb7f5c194766dc54f215de4cb4cca4aacd7c883e0e3632b9dfc18cc25d7a54788e213bc65c894dd26ca9b863199b55b649133f93da9fed9a58fe4"; } - { locale = "xh"; arch = "linux-x86_64"; sha512 = "cfd8bbb81637c19464ec34788254740e999c13bc8a64b4289b0e1c64f76d711a5a5a8380995271f309444032739066f06334da2f81b6ca2b2be33ff55d3ff402"; } - { locale = "zh-CN"; arch = "linux-i686"; sha512 = "d11637b0c28aa1c45b315322ff12392e133aebe21f435564da278b9e301f0c8515ccb721df2bd55c175c48c3e24934837abbba4b84c9fa659b7a58db1da68f04"; } - { locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "27a06d87f23eaeec170d1ea7f3df636198bfd4787001e178948fe9b8a3f1aafff3be59b9d01ed5b5851902b550601f061e923a4cda3a972f0ac68928cab28577"; } - { locale = "zh-TW"; arch = "linux-i686"; sha512 = "7c6ef5592b273749ccbf7b37c09984b11722beb7f49d4ed25555b84f0521e0dbac5197c7642ac508a21a1a40c5578dcfb49310858819875cc9407c85426d599a"; } - { locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9ccce84a292144f3758190ff2858c077d1e7ec6d49ff5e1efb404b8dfb3bcfebf96eab15d0ec32325e4d96d94f4c6bcc67f4e43dd22af418b822d82a2afaf6f1"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "a5391e45d1e59a7c14d8d421286033e3e760bf2b4afddfec3d1767b2ebc957b053c39f17f8185a6c9ca2542c76f6c9612d95d474c01bd5ecc62e5d4f4e43e8df"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "48681328033b694adfc6149bd965a3dff90ef014db6f65641ddd3d79ba7901604623735555bad024dc2425f226c65e332a0875d6b18fe1c06b18a1e407b70294"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "7757ba99ce9991f67a45d9a19615a93c0a1bf0e35d35c5fe653f04d47c068054c8d91327641a48cd20fb9531cd1e842066c0e6f2dd8b23bff216a9fc727ec84d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "7e3d70da29aeb5fc81f5e6dc52a4b8f831813f8c025b1a105df631cc5b675905c82dae842459ad30c5257b74bd5654e9aec5dcfcdee93eb42443c45cda81138e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1051e1e3a6c25ba6b3aa4ce5adfdc60bcb3c612f3facd5edb702385ea8c0837cc53e95b064a424e0c055a56a11f3a54a7ba37e2ef35045c8cbb834aaec0f6327"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "27fb75ce402c0d47f8542d3d6d6992587e6ea0caaba2249e763f0f9c4f1d233b37a4b87ebb7e730d16704c7d2abab690660e409e721850875fc09deb0c433252"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "296e23fff265bcc08ec0f81608d50428181163d216fd896c80a1a8c31e95f243112aeedf3bbd96b1efbaa1d6d576a9bfc75e5fe8df434cbb74bb9576f7d90a83"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "15f0e7cbf5a98ffa9d2d7befcb11938b76194dff29b1d93ddcbb8f5c655ef33659534874a72aea18f98af06e5fa4392aee5412582ef43292d70603dff2c42c60"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "67883c8cb7ffb6c05288b316b2aa5bc3274372dd82ab4c771fcf1e5a968e550d12c89027440704d8479a906beeef24a18ca72ad243628a5ece45918ed990c793"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "f7718b0dc9bcbfd109591f87263d7791dcd7612b0312d0bf93e68b1f2014d3732dc6740c57a8e64dfc1af7946da14dde617945e38842eb19cfe39376cb12ad44"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "f29b883932752bfa947c48f7c1ff6084b1cf215ea84cf63beaea808702b0b90f50e85aa4cefa4d2c1234b0d366c8f6e3d8fdf7a0f92d432cba790adab6d24174"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "8b656c6b08640c125b94f90e1dc8259c90af2e764cee73b02b9dc3c0246b3195906d9208bc2a6b3ca31091d8cdfca8338fa6c489b7caa5685a23133e98847a39"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "5ee1247e37964274bbea8021c8e4e5116fedca95712fbd91d709c5c580bd1618c6319cae73278b2f0ba82031e94bd3fb382d2b4dcfc9a5d7ad47ecd80f4fca43"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "c369046c29dd0dfcf40e69e1f5b5a63423833a376d2b143d3fbf2ee1e23dedb3baf24843ba1178bda94b86f357724898a147d4adfac1e469cbf44166d7ffd16c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "f8a1ab05b8d25a7a30e755a551f0851a308ba0720180685f6946a510363988717f8274ac2c8ef826c60232a62c394b86829d289e7d74e24b7656b55238129b15"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "df05271371de5fa25ec11164eaac0b253bc892749d421a6ca730dfeceb4ef89492c42ce83a87eccbe91cb03ab001bf0a1d9a20a7296b69841cab8c6b5d2acc36"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "80644b86f9296b708e74843a51f81d368e3508f0f2f74de1a998d30a15f6e3af08ffd70dcc5c79adb76c03be9ff4713fc8403b8433cbc33ca3493941c4fb2fe0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "0e6cdc5b3cc706031c95a550b0c800c9e8e2d7bf241010c22f0872eca4bab018a5f0d4a94abb4f8291c279476700f2101a69ac0c57ae79994fba38b88b00fddb"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "4c697f1dcd68634e2ab712d4f2415e57cf8be0017fff3602223d8af19a1f3a5c973489d13951baaab95924fad42212a485fdff622d2b559be36e246c8a847b67"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1931035a9d92dd9246a00b32443e282dc405096407a4feff7856125b7ee156840114c9be0dd58a020c250fa54c4ccb22052d2be291eeec9b5f76303fdf6c4cc5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "fbab6f7e4205c803a50990624d58aa80cfd3aa76fed02cbf9ea390f4ecdcc1a97bda9b51791cec49f2a7e1010109d5f81a1c9b6ac224f1f70df49407df5f7386"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "c705ec8356796060c6782261086011bc0bf3ac9f08bc821ce2305c9aac11c522abb802a9d9ab7dcb53b0d38468bb6e667d45b187355d769acb43a8b252c4f400"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "c58cd77139a0ae7f3bb8f6f25c40856aca18a831c8f5d6f5d59a45ec615420bd55205093fb66a77591835b0d9493f774b1801a168b9c071086d510a1446cc914"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "b6bde26d478eac081007ef43a6d588f70dc4d54afc423b019468dc91bfcb117d3b4989c4cbb4cf77a1a11847a58ec74fbf822b6e6f0ef86fdb0065c301294850"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "16ee40d079996f42be77167b73645d389045648c9d36b76e34d0398c7b5b6dee54712d109f93d054236ac7076fc3edb06ee82acae40ad22825a23d92d0e2c636"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "ef674f409df5c32fe4584f9de65cc6558d6b3ec78d8a83f5cec829bc1ae09f30399567915e32584334704d12264c2592fecc9e4952beabc8b0d4eb49a7186854"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "fe522bd836c82cb68bb21ad1c7f36bd9a7af1642abf7c035e2d0999b4cc07c58124e4d8de81344598036159102ee12f22c12e44a8a087e54d6c661c3f453b63e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "b618da984d35fbde3819d101c103d8d9a5a4de98f0e254c67e894656019ebb6adc56e14a57410a61430d9aa9c1e0a01339b39a5272164af372544f27329a1644"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "82659aa2fbd091224aef6800b3df1d2e5141b6a295918e4fc4ea09b671184f62c670e3dedd7040b2f167581b0c8a0e8799d861256b273b01b2455d0937722273"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "a507cff511c6337f805a27c0f73548342d2fb2cffa683874d66b054b844b17c354cc6da5c3d15618006c2279099b0cd9172b17d9d4b21a3863b5e395db686b22"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "9af91acffc2beeb53280a6cbd21656a91a686c03342fad90dd91314c49535acef1a8abac8fe54bcfc250ca8b8f07e3550c890094f3bcee6baece983cec68bd8a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "c8bea48dc11c021fff9df5ee1a67a6b6e9193ffb2a07e17014d7448254d8a8f4d1512f862ea73bf84dc15b40edbba3fd94cd3d2d18872255bbfc7fa9a7b8ec29"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "7cc062c3b9b4bbfd0b1f7247f06505ae99458514b607d4d9062836085798bab7ade6c4d1c8903b1b961243c6fb6adb4c4f94780f1194f745cf62d786e2c4f5c6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "abafa600b941e17f8aea0e778a937f5fb34cbc8803c93e59febc5d9fde6ad3347ba0bc7aa07ab57a61f6b9d6b11d582b987100364aa8401bca539dc6e14584e3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "d4a9141779f52b78a51b9682b6b44e5ccffdecf5582358ab8a02efe133d9a52023e03c238e106a79e41a8aeaabcc58e0757c1af66837768e7bf4732f26182915"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "48f0c48aa273cec9830bf806330c7a630185262838007628acad904a45b3186450a8973938c36db636bdef9042c78ce94a4a456e1682ef561abaabab6ac20863"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "01675b3a8ecfa10da1d101cba36295b226b130e1cdb2c760541cd76c9b21436ae84ca7228e063402b1ca2eb59acadcac7720c9dd47db8b406675fb273af206c6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "6a7ef802a8109f58504b2accb9ef0ee38986f6c8980e0831c30b470f2ee768169557cdbde1a58d7c72996b27596e553185ded476cecdd7114b75d82428b7846e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "55528fca4d276b2b0430949686845e3d7d88975129c9a9846408f758b4f9c8f154425db891e5c1930197e36137d6c15ba29de90dad624bad23090015849d0ab5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "f21c14a57f6f973be824340fcd417ce03765d5826114462f62adbd933661bccbfbe90b66935083619c62d48401c511830574ccc373ca2110093b06fad59734ff"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "ac5a808db1ba68286a7199eef33794f7aeeafa26e97a20738fb21be479462bcaeb1e8a7995720d5c7dcaadd0cebe91bb2a3e019873d0cf74f42838f7d5c1a427"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "c02e6587d99fc3ca66debe854c778a8b3dbf9b514e6ed74fa15e3035a54643b2bc324ff59f1705c6bd392c37ad1996f80dbabbb57df10aff954ed0ff3f5b01d5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "c458c70db0408d627a904781adc9af18011f243689f4c5a606c8f1508b4e9417a8df499673c4ba56d32ea77d0f79ab85ff88852f7c518e7fd124e5970615b2f9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "28ccaebc4f7613d7ea8c3b47504923f2d59bdf4afd6e386a67dcb6b6923a9374c1c783e4f904da0b6e0f716ec87a046fc12f3781b732389d1d680745d6955c58"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "e1ea34bd0829656c04c471b66d2013fc07cbd5cf40b47bf3a932326cca71f9a502c52d1d5e6dd902d274d307079475b0e75d7ff552fcb2fadf31b2883efba79e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "a56b2ad26df424f008d96968a4e6a10406694b33f42d962f19dff1a0bcdf261bca5dd0e5c6f3af32d892c3268da5ebee8ce182090f04f8480d37d232ccd23b9f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "d5efc3d4e624f34c81df068f4d6c184cb8a63ad0667695e9ce7099e069b23715eb77cf2004adee41bf355452179959e5ef7450f167f87be70339abb4cf70844a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "859730132549691b61e936813f0f5fd3e62f3ef6fa9899e3f68bd3178b7438b4c6b49f54f00d4898b568d6abccdd55a0f9fc6c51858e95735fefcc13de460d73"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "8ef290bf1eb3504ace393b32c2da64d14435edc327c4f13a40cd925efaf7e042a03b6877689b3f2290f85625410a4e48dfb2cf676f138fdba87ffc597b25f4b6"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "7d6167749d2a57a9c12180302a825fee14555e9050b6be3c83dd35183678bc36e10391cedcc864ca0dd96d297997a68627dc4fc1a9cd8922e789dcfa814f18eb"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "07768e3b3ed903f4327881a132f192a65842a376eeca6d10ec0de69fefb4ddf3d7fee2a704bbc8d229c78556478814d9e53940cca9edee58270d9790d6b76998"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cac021af09abd742273dc77291fb1528dd5d6d38cef3a5e36e615fbb9f3908655fdc96ceb93fd131c4879acf24e702a044471136e7575f3b550ebcecd982047e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "e92ce6bec5b1ee8cf3db0a604eb4cae6245fb6d04a48eec64b6dd55139f3606cbbcb65511e29a3164d6572929b7216afbaa7f034a2191eba100ecb7403740504"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "98e57146481a53061c0b30872290ecabc2d14c73805a9461d82aaaf4cf9f301521fd55b01c8159c09a56f52a1580d83c9527986b1390f496d0fbd11227216e7f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "c44df66e140ea9190112f89aedff9519b6bee18f5e2b54aea19acd233e623c299aecf134cdba70d366fcaf6b7795d220052ff75409c7a04394a7aa02d9ea708e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "c2d70bc5a304df7b2484c8fb2b374f8e31a69049eb223a53dbd0e4b51e4ccce907efb1674eb637370ce7c3947ba5c09e65f433d10e0f328b80d482f3de9cae12"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "96dcb75cffeb85b85f092e295e38ee55c272714c40609ca90cfaac5fa0cfdb3efe8e993319ee690b4a7938c42346bf39f063ab1f3db606e743c1e4720de5a93f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "60b50d6726b2e1985564bc02263eb88c9b4c1bb39e6d19812ecc6751d6ad223ba04f65a7755a946fb15dceab90628b057bda89c55fdd4972604586f52c5a4b1c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "0a4bef2277f729c93db413b68f8263eb356f7b3278880574b8ebe010e2db9067b803967e1f0d6912f128a9ad5ef204466f52ae277f3addfb8fe9ac377c3b8a3a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "ed1bd4fd67262958601f1107edc589bb28e9b7f9faf0edebdcaf0c07ec6007f527a9eab434582a65271a8f68edac8178601da54eab9398f48b31126657a21b0b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "8c5c9406345e2a1fca3544aeb742dc0d254c804d887e3614613280c050a63b69320d4488b017ee16b0a2a07bea862e8b245baf7edc9df65689d509986f3c5958"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "d8f7004e24033f377391b577c549b66f73cf0e899ce5f580eaccd07713ec03b4362db7b222ce6345d113641d3e6a951302939bbb155c47ec0fa46a201a631427"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "f4e02737e20b6ffd3bc2b3a5e5fa59fc80a8e37dc8459ad4a6b99e7621a4d3f360884915f7136dc201830efe371de37977ef3e27f34f84e2cb734c1fff8f6e36"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "8f624b066faa39341b750dbb702dd60ee6ad75b3850c659dac2e21969ebed1f792423e9fb0a9cae7fc456943020f9a0155af5d7c596433eedaaa9990ce07b7d4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "22a2c5376b1e8d770659475085d98ac1f1020cd816ff3ec6ccfcd68f2484b1b0dc25bb84ca52f4ad27144f4da356ce5e7fd54411d12ae7c852064509470d5828"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "bcb3dabc250045b8ad444219055fd9d14902296ef3f9c320bec1bef940f84eeb0d4a50249805188ae96ed0288a70f0216350ee79191beba49aeba890ae515b41"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "0c505a0e1d3030038b61ea159eece3892bcc7d947b6d7010c0be8791525c9d91ad1170d4cb45260584c93a78a4bc831b7acd9f28e95ae62e5b96b31745dcbe50"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "f347cde005c6b61366c633db5a8cbc5260dfa0d68230a938d847e3f80bff2f1bed09dddded7b1728f4ef9525610ecd046743f9e71eefb467943fe6b72ed198ca"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "8fb8ea2eab82740657a6b822b330fa0c289c31ad900683b4ad07b1e9b0c6c4e14f50af39d6d0f787642010628800b0a99b5ab0c4cad62e4a579390509b1ddd13"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "ae79c5b7f9f8305c3631f4f913baa341a9beaa7a2ee5df1c6c1826030c21bf22b92095ee579affb8911110bf3bcc359793c0beca18d4c32b1fcc1f3d1dbcc4b9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "1c57d02fdc33ff53de48ed9aa9e89ecd5a56d35b432d5651e71bbfbd5f9dfd18aeaf14d10b881f72df871afd00a12b31ff05cf9d5c5a55cd44a92c7a0156523d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "f30f59d630c5d289b61dc7440f7bbb976eb16732370f827365a477090cdf9f2859f39afb7ff9d9be7e8a022f181f2aeb7a3005c00f4c14e6505a28db7ae48a9a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "739d5feec4bffee67876227f6783d35675f4c0d168b7abbe5f97b6e8edce7fe4b8f04f8240087f7f208db4180f3417997b661c93ebe046decff3f4f4fecac839"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "cb4344df6e07db839ce8c9fffd1b7b310c8108b5218cea3602972806c1a40f56bf1355ede4cb3595f54179b16e3470e25bfbddc8e39d726c7d6c1e99d128ca8b"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "91004d62bb5f1f6a1d65b35fee9e594d21d9877669e042cb4c9a834b01b35797363e1433a9ce5a8d0a9f64c8b256da6a6d09fa3342b74b7c2af8ce8afb3e4e56"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "f04034cafed25c34713ffe4109e53b107b8fe81321c0c0c035f54ff0ce67ac393b42db7598edc658d3f026e447f9ff1c4d1cfdedd31066eefb6019117248e4c0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "107bdebb92ce86f39cdc45d6bb24a9c4d104820eca6bb77950693ccbd55e7f8a2f143fc3a5bbb1bfda161e7a33c8f6d8d2686b09da1497215defbca2b4e4e109"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "c841af5c73343475150b5404b4b54396bda845aa5b231a742aa17ecb7fdbbc5cd4123efc3ac2ede1c24f485d04bd87e8bf7cb00b7135bef236ce56afa0c27a19"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "20954e218967772488bd895ebf069522c3f4c56ebfa09a7c8efb740158cb95b6be76cee8f4d7f2c1c6c505ca9071a0ddc1914784a54f669d337d5196f18b6f4a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "aaed68f13e326792671669883b452b65556998ed757ed5b745c6453d6bae8865a06f137709de37ace2688e2e09f1b96ecf2e5b6374b4170d29100c6f83ce22ce"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "205093ecc0dfcddb2b90e05b1a17f75805a4597bbfad214d67442fd0d952f765b031ba63a3c399ba9c1c46e4d05b3cf786f01c46eb8990240a16431964c93a94"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a84ec5015f6922a22a284eaca985010586067370d818e77d401b58782f86dcf2f534f1ef021719c170f1f502525ce25c94760d3b75481c15fade3c25b969b563"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5727fc4699316c4b34be1c2596c5cc20d5fc9d2062b1e106087cdb34b788fe3ebbc098acc8c690bc83c9d9be59ac3b3977fd9116d766ce908aa088660fe34771"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "c399969bc24b10ca1c1eff17d3414f214cfe3e5b73282942ead5b2ba4d2c58b74d665b13031ccf42956cd45f0fc7b206dd2f9674103c1e3a8861a33577b5caa7"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "f014c47a143d425aa3452be2bbed199a8b5e75d278c35fa86bb6bcac40bfb32bdee22d030386c881c818b465451b35c81f97bf29f9ccfbea606d52c822057899"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "0e5dc0970680886dc02448d7118b6864092699fe44f3276ca17cba160aee59418f8e39338247897b118de0e1fb7634cf725ddc6a34a8b6f002b7a78d92deffb0"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "a9af43f6cf6f493f728b8942d3a600f3cb3a23eb0818d284ddabb8766f7d274aa0a232f9925b65625bb56d00864946dc6b0567491cbecdd6a7cf626b6964d9b1"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "d97951148ca0ba80a67020f323859ea3f508e40906ecfd18f7a8fbe7a2bc85ea4635945b5c6063e1d5d18456471604075e6767da9a4fda6a09dd3e992a7d3a88"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "2f7adccdc894f345e861b29a6d65909b1cde2649c69ec9223f784e659e8e3f4668f815b3683fe691de0749483167d26885a0199bee88e8524377c7eee3afbe99"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "70e39341ede01e18c653a0eb56b48e31c73ee3df54ebc11bcd220e2d8e19c67c3e248095c4d070b12a0eac5c24acf5a8ad83069673dcaa684229f4706103685e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "1fc01c6dd873e2194e6196b1bdb0246e95d0b0520f558b21a2052251d2a5202141c09410c4631b3f025479169d8f68411c2a24f32825261fa8d65696fc7cbe0f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "b4509d671d7eac055812add85ae571f52c90b4eeb172d21c22ce844c70192ba235f37a732e94a0edd6794ecd5a8caa5e8bb6ce05a26d3705902d3628420af871"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "a2b7cd1ec95a0b5eb064e816cfcfc6a74a92806772592947267c4b266bf7ce77d1beb17a7c25b905251cf497ca8dfabf16bca367cf6d9e9e635182f306bd71ca"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "9997ca45051e609e289d7730caf1254adacefbf8e618a165750d5bb7ff7933d014781af76501296c89a4236fd3ac477df6e6be5a5dd45f214983c851a856ce5a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "bda5a7c599885bef966daa35a3f34297e38534e32967142ff9cc720a34c7aa9730e3f24623c240637838eca03f78f9b2ee30af3ac3dc8ba48f9664c56b64c789"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "97d16c5b4382c7fc6ccee416d671e47d345834a44ab111aa486a41c756b25eb894628d0128e8454fc15f38937bc40436b12e60752ce7b7c1fe35a230abaca337"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "576b904fb836ea735f652c6b9c91891dee164edd3523c5f99d68cccb4bd6689c29e4c579b6cc44e699a8900101fb8d223f9e0b0860f71a2814ae0ee2c70609e5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "592d65977c34c6133f5745a85722f822efa5956bafc6e880954a0b318fa59712c754e882768755fc08f5e08a1c99493c0b30b4219c46169ba663258e3fd3f3fc"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "4d749e1b5d8432df789f29a247ab48a688d4aa16fb25dcf7209783c6036bfccb9ff8ac32dcd09dab1708f71896fa034576d6048eef077d1a6c0a3dc58d3cdb26"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "087c456d691225d9aef54b2013af69cc7bf2501f83060179112e9c40c1d6762202f68e6329a936df091a1ae6aa5f20bcc96a4c8b0451b71270426bddfb45d15c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "cb4b0bbff7d322f2f04fdaa50b365d4e0a1ff1786206539cd124870ebd69a9305b88d39b9fbed41c64ddbe68098e02c51a0dc665262424f8eff882b1497ea1fd"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "b6c9b419a3e746957f93a4bdba9043adc3911b6f76e1eea2e4e31e77e9aa9057ce720205db4af5586a90df4d6b774b90829f1d7689e77c560c50ccae755400b9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "ae7711d86ce8180997f44f9309a63a436bd8b70ed0dccda773c34ba816daae99b3b1ae913ee87f4d1f9a4e8f016aea670e89652823df16b5e8414bb58ac28225"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "49fb6b5ab6aa12535373927519bf36099da6fab7c2e1bcd6f5ce73d91679f58e81eddd3556df65b305fc2d1cd439cf6de081980fa98ff79df16b620ed41290fd"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "29dd1808c1430c01dbb395d5e5a833bfbde85453278d4efd32f1afa1eac19a651c0c3a42eb4ba3402f56a8492e80746d753986c0ec0f1a6dc0e5eb6778b5c6ae"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "f53966aed30b57a601152f09a26414e11bff4ff31683989eb1e47546eaa32fce8cbb6511043f9753cae076d23d6f2172c2b224313cf5f3262f109b49119175e5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "17dc37df2b3d5a87bbadc4d5c80d4ddff03752b7a80f5c76171ce9f0bc4b8926964b6315cd4f0c6c9dd3142cec56b464503bde34ec3c69e2b8a66ddcae72b0ec"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "2af5ac5c254bd0ed2d08656a6fee7966d73aa89973cfad67fd18d7d88fd1f18a2b882de7854af46a3ebc6acba4cceacc06942db7ae495faa2c6ef21c65e94158"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "415fc260f3dcc2ede6c43194501d9522fdfb106f7c86e5d8f5929df6615c73023fffc3efd190deb68bf08bb2a0d4ab34f7605e222301c8350b980f2dbc289c8a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "c991c0b9a89b618ac046882b929fd7e3689e19dd96edf4535b25f9172b6baaa801a4490ae4fd35e82ca3c776afab74a0a09b993f8ae8c2a603d210f2cf248f73"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "3cd367654397d14b782cea4ef8c96f1f6938f011576a8dba92dd4ca832ca3c8682f3e0e161a4288b112fca550d556080d0ece5a79e4c4f6ec99a9298feb6fa12"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "2d7475c544df807a956feb9361f889ba0f5e43dc52a9e1dc9c469d86e97f344b4f2995e3fa149a77662969f3acbcc998f430973b2b9d28b23c82c5058b4a9dfc"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "35c8a452ca845576739d5faa9dab6f3c34dcecf9ce95870f68699836f3534b4807c91fbe80007950abbbca662e6d01b406205b3e4cdf4d33e0717ea5d6f57006"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "8791df09d841d5ddabd552d0fb0dc7e9446d23092bae1010d92bc3b056a9ad4a6dad01c5d8db531a273945eaaf4c30c922cd03d7b17e1b6be263e0bcb91b8384"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "22b865a344a46096c53a72ff6b1402d00808bb3b49ecabe6f4115ea60e40e522d64afc701648772616fcb784a963bc6d5bb3f89517d7f8407f22fa82d81bad98"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "3c66af306b1a8d0a684c12511d95353c0bdda0bea981ce4e577c928be03e12b582b19dcaccdccec551b3cb0fb716323b1079180aa7a8f1204f5e4b5a84b72831"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "780fe423a3cd56a7452df32679ee07a0e328b21cadc78faa2721cec59185c4a4467aeeb75e9237cc86d38dfa2cd71530f02156c4fb9515582ca564dd53d47543"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "d27218b59edf004dc57cfa9ffd70dbeb59b7d3c0871b00388a56b505629fd82ddd6f6e0147f5b4c67a8ad72a674e384b66ba2f9455fa9ff218c9ada4b27d1d7d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "da7ae3718f3c69ec9b62aaaea93951375d82d8d02818d6855fa9f085a64b69c155a1336585d786ae2d33d657110b787f62909dc9e4d54c62d2ea94d2fa8fee3e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "95136f8bf86014a63bcbf4a5cfbd778c4c7e6a84618aa0f6a6948bb597638569b3702e0569b50c5dc9b46339e723377faea8964b921ae9802043fb7983a2c4e4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "56743acb54283715fb2a910caa85dda61f7e2c1c5e012aa222dc07e3b522572500056fddf990b7ef03a175ff8901fb11b113bcad5c2adf4a6e6e032644ccca2f"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "134f35f5f6616c2a7eec48f637277fc02e23b57bf38eccff9777bb08c70a41fe79967b69567f75f9c8bcbad4b22d2ddaf16bec98e399c4b8ca9db9b70e99ef58"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "f29de7ae7dba03465baf86f93d778c9faf3055d50295977c0207c7e4daae6f7ad733ed38e1323263cebe4f737d9a1616024333a97139156470de1a9fe3c16276"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "731b4f143fd1303ab54ea3f1b6aca6c4f78ce935caae32fed0b8cdcd46c0ade8c8977131a3be786ea929a7d284c3d45d34851a0d81242761f722f0bceb126957"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "d372bac105f2012b189efedc449c7c183d0daf64cd7a40822ef9d685ce4a1550ca9699620440dd198b13f95513a577766e9f1a8e88b212492831bf7ffcac7e0a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "1287f36a742fa834d5f31e6bc2f6d3651e54f2bc8845a1f0f647e9a9e38ba66c58138961185897c8832107cffff06167a35dc3ee1f0ff830f997f65fb0854a63"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "ac3e46080e188e56a6b67ff77aeffdba7982d7c3aa4156a6f2781ef6b8fe63cac50d678e5afc91aca4ad16c4384d2b2727f74ddc4083da91a1e3590ac98ec9d2"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "dca52381e45b5c2d89f590971d830010a9ec1a2a513fe655ee93c3fbd980adcea78787701595a95402bdb660c2f3e0a489e001deba13798337493655798c713a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "6ec01f8eb18384aadb5715a996c8410ffa94b801ee1f1b1ab43bdeb492e179e781e8b85acbeff4a25cb4fef847ce3e2335968458d9f6e47d046083264e91f6f7"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "7d5840518312dd167d914a8f7fa5670fe17f9a6fc39ccd128e30f689005b35bd352d0602993713c3d05288f2b036829be8e08398d536e4aebf2341ae2290e633"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "a185f7592649a91214363cf2a0474b5895f33342c98cd4bdc48fafb0cc76310b2ba4f46575970d723c76b2ecfeba8e2b39d9671e6059a15bcb2565258096156c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "7f8e7277bcbfbe5f40c161f1ebbeed86159c2b6205a5ea55cd8b6253fa6742bcfede11d4de6c1aba36e2b1e98f9c9a7b8e26f9aa35e1eaadc1d011636d429be3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "a543a7d3f4e24364be7e4df65a81da82d955d1268a4cbce741ad7ddd5f4e9916573e271f02af1e92b123a4da2c7f312c17f6ce714e3057a1b204484ef12133d8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "7672596470cd8f49f9c4558b05bd637af1650da729bc518681a8cde3ec785358121fa7ef209e123fca4b59df1a63878832bc32d2ff404b5d2a818b60ba10c15e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "a99b60ae1eb479e31f838fd41d5de325c418762fdcfa5e0f3bc3d5da8df108d3b64ce5bfac0af09663007becf5327164db8dea0ea7a3876586cc43030a780199"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "f0110b74842f924808f74979061151fec711d10a6005d2da2fbb8d46fa2a25ecd5a2c804e58c10a918efe570d4d67d05578b0245f526e1aede4bbc786e9f304e"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "7eaa2bad351429d76b476819a1529ed1609388968327382cc13df235a294f2e9fb14295341ff15fe3b2815ffd1c6c8978e2aa104a847fd2cb4adcf2ae3b0b974"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "a40e2c15cff0e7f7bff8a5c0bc4cf39df948a21bd37b34ffc93dd87e1f5256526a25526e457fcfd8d081bc872dc1bec13e67da3cf671b6a16dfa17850be4743c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "c9cd96e68fa2e1f73a49e71c287a25be8d45a8ebb56262e02c40ba5869fc58c7fc43a1f6958592bb377e7dd4064d64f5ebcbcb5cd3a9fe0a007c2da665f50a66"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "1184751c1d1a0a9044f8df2d20aee7dfe332dc5f851802ebaf2c5c83fa2bcccfd913cb6e16d2baa449cff1b02aa18f828489914c0741a2ef2a46d54fefecc268"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "86538057ae91b1297acc11c9bf3f7d24ba1950edead89d4733f7c898cf53e3848054bf391a975f19766b69f4c56f576ca54e4b8da806db7416f3e3d91777c3c3"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "0a480c26e5dfe2bb9b536e122ae32e18a6dac999004493839cb506c1ad615e095c554d296f1a77bfccbbb86b58bcf549db83f7de51d02b68d1eb752b421f23cc"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "751ffe931cd60296490c7164f49f61f4a51bac5210328a18d02261a07eb607e181b2bab4fa0b59d2df15334152386bf816a984840d2331b7e801171be9c90594"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "3e526c9a1a876e5d2c548c9a68803dd11c04c8214e18eb09c0b1c3fb3833f64c8a3362db8083ac5de81c59268439b53effa3bf1c64807fafc874eb8ed9baf188"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "73cf6a18deafb7ba93fd60cba3ba0bb0191471f977c41bac11bf2fd6cc6f7fd7cf2ad125ac5cf168ef577d71dfb0e893e182f39be6ad186ddc642d87c40041a5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "b62c54b8694b4a662c1d336056d404a8d432ba0a3d4f2964b5c5acc0e39b668fd228105e1c4e307bfab1acfa5c3ce223db4229df01866cdbbc7c1ac95e70fe2c"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "6ebd3b3a1f3613905313129cde7cf113bdd777fd0f600496231ba813a95b04309b25016dd69891d31189a93ccad3f87b9c69d54d6219ad39dd38d1181b1f3102"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "539a22d13587cdcc21b6f76ff24ccfd1df98cbaaacac802aed46ba8f2bfed27cb2f3e5c146cbd2c3559aaff22297e692030b9612041a05a6bfca08f49bf0d2fb"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "bb0d1621f5b9af886fca0ea7cf7fd851d7c22d2d8f279a7b88e9bce98be33ad7b75d6a51ab47ea859802ed39b467815db60409285afaa0bbf4bb1ce6d590eabc"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "90337d193df7db41a1384856938bb62212952a80144dcc319a725a9b567ffd4deb7bb7af89b57891d3c17499ff466990e656edf7d0b017b8f4e0370aab445477"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "23a15e6ad5ce9b03c218be4e26e603a412de4d870d5f64b599ae511bfc66bf2cf04613cc06fc1a054d06b80435e284456c0b08e33f34d8c9482f5ca23da6ae62"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "a86cbed60f65e4ebb36c614d846fbb2515945112fd4f2482c3a63b49a62c3acb310f050dcbd57cc76a808c049eefd8f779d6aeea53362dd81798bb8d7177c86a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "8ae008f0077081ef40de3bf08c2de294231f41439a83d8a41a485f53e95ba3f4fc6ef03d6ac98e8848c3f3dad290978f1607d8c847f1622bd86b7d38cd0be730"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "34efb560c65329c7f3f6b341cc49ac4952f24e6e9b34e7f5bd45d98618a4d03ac89c6f62580223efd2d37db24a03f76a54381d4162f5430b887122bb56eb49d9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "d3e5a25fbc4a786239a7ae543fefb7b7e3ecc34192c8326af915f18b9b08436656bf68faa4953a34bdc464e32305baecce800f91ef0152bb4b4a8323ab448f33"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "ffee5d1a23e91911fd1dedb5ecf24bfc6b1733fb582e64a5e07d4df4b7afd9a6c502a70ab3af6624b4594f5ddcd81bc8962ede5b693cc035a96a561389f6bfca"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "1cbaf8c32d1d3205cd85127839eed11b416903960c9e411b9adc71c42ba4add47acddd32a9217bb68f27b90d6765892edf2d356e21235c5bfd5cf69d1ee719f9"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "16d93961a53ecc3e1ae3480be9e34f2a22dec2bdab55dbd35d1ea79ecf2ee48f195380bd52efc7d39529601610793b75daadeeb54dd76c9a3702c786af25acdd"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "0b2c5234f1787cd972fad398dc270766fbc3015dc1bba29755e5316f207af9f5787d4aa41e96cffd2c9d31c57a5d1896e63fcd04e6235a4a6798469e738fa10d"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "e7c7e7ff7fd81ca86f45997faed7244e4d807c3e5ad7ed66d6feb38c3e9173eaf136bd34af690ce28534f0c531c7f1d11595ec6502dfa42778cc19dee4334c49"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "dffb94b0ddb4b9d2effba3894b408c9f191f2079dc4b47e214347a235c9bf1adf77e520465691d14a274c3f3344c7f8b7d41965051d506728347e0af1117ad27"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b601906d28f071c6beb3dbd6b37fa68f50809c9c47c9db69d631127ccc7b784e7d3b278aea6de060b34d83b6c78137da32b77f8e17ed199c3213b89dd9391264"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "1a496470ef8e0899bfce66b41490f54d4d32776eaf60aca8725c4732512f1d3befb2e1fc3b942ebea95fe2359509c43d41649e5f90498264b8e02a3352244260"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "00e6dbc43ad3c77693903fe534722094826637698df691b266eb801b27cd5e63502c21ca3e34ff939a7645a1f75d36fce6154626019eb96bc73cc39ab845c952"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "70ed539571cadf241f819b68ff24829db32f56287aadab31656fdf66c0ed94ccc6cc11b6cef6e2e963203cda47af2c6032db6e5689c37aaaf495b1e4fa970207"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "d491acd4635ab9b22f76531740c7ee7a85832678aef9ed646e75f56755c02538440adeea71e9ca5a7a5e11f3f2f6941c3c4c1e47380547179f63baaf6c20ad07"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "0414f74c6266fc204f2741b6860f7919c957364bd56ccc2cec5ef4b9c4be812c554ab584e6ce53387e6b7a18ad02991a44d9507a16da59a4aabfd44e7fb5b754"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "2952cceaecdd4013882150e8158607639e4ab2cffdef563d4fd1a015c41f1eff6c5ac22c0b9301a05ab6f9fef9659d54916275d5a50d97ad43bf69f10da7b3c8"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "c5c6273bae2b9a46108a433af3a85b5cbbba4cd3154ee124ccc49f46c4a76264836a76d1b2da4b1064e9a913cc9fe461911c53e44f40343c5f780be04da932e5"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "f0b5bef1ea4b948d699a79d902055d5b31afbe5c4f1814d98cadef1ca820ce39212ec009f68d875860a48942e9d797bda88eec4f6ed591dd8b3b260e04170974"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "3a069ba914716ce122c4a89612988708d811b9350d333aab203dde212527c0e0cc86ec4781e6aa23f40b77f2266f76eca366cf355651870f43e180b97aa25c43"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "db7931aa3f1d150e4b5b8c87b9d069df4a515fb2aa5e250b8f8a1bae0d8fd9a210ae949df056c47e3c88e8faf28f2571311ce2d6f179e3365720b42f1335b546"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "110a82749e187f39d77f63b16ad515218e5512e5974916e4145e625a40d797e23fdbb5d110a23f061448cfc3d3c597858636c9304e941a34c68368f749c3c900"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "1dbf94cef034449e8d1342822384bf1761dc61748e2d876aec1ac628dd161f92b62da832fe397b2fe4f8a1b82f9adf1c3690f26e07ee3e48c6299f95969533cf"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "af97e1dcfc9bfbdce95a5cd35025b2540ad928d3238863471116e071a51b354b7818577bc3e7427c513e7b335bc1510605ba3ad1a37221389de7c7fedf6e2103"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "cc938935395e66ef721fdbb8c8b781ef648b5419393ed1687a116a4d9ae12dd18f2edbc8287235504aa6782bbd6a41f9f5dd89c9c712ed4980fb9fa44f46ef38"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "a76dbac054cdb7f5c194766dc54f215de4cb4cca4aacd7c883e0e3632b9dfc18cc25d7a54788e213bc65c894dd26ca9b863199b55b649133f93da9fed9a58fe4"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "cfd8bbb81637c19464ec34788254740e999c13bc8a64b4289b0e1c64f76d711a5a5a8380995271f309444032739066f06334da2f81b6ca2b2be33ff55d3ff402"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "d11637b0c28aa1c45b315322ff12392e133aebe21f435564da278b9e301f0c8515ccb721df2bd55c175c48c3e24934837abbba4b84c9fa659b7a58db1da68f04"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "27a06d87f23eaeec170d1ea7f3df636198bfd4787001e178948fe9b8a3f1aafff3be59b9d01ed5b5851902b550601f061e923a4cda3a972f0ac68928cab28577"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "7c6ef5592b273749ccbf7b37c09984b11722beb7f49d4ed25555b84f0521e0dbac5197c7642ac508a21a1a40c5578dcfb49310858819875cc9407c85426d599a"; } + { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9ccce84a292144f3758190ff2858c077d1e7ec6d49ff5e1efb404b8dfb3bcfebf96eab15d0ec32325e4d96d94f4c6bcc67f4e43dd22af418b822d82a2afaf6f1"; } ]; } diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix index 17fdb2061dd1..24edbc856436 100644 --- a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix +++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix @@ -31,7 +31,7 @@ in stdenv.mkDerivation rec { name = "teamspeak-client-${version}"; - version = "3.0.19.1"; + version = "3.0.19.3"; src = fetchurl { urls = [ @@ -39,8 +39,8 @@ stdenv.mkDerivation rec { "http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run" ]; sha256 = if stdenv.is64bit - then "173mcvrckia0mming1v9nzi0bllr4m430y9swl9kyfsvp44f5n5h" - else "1iansjlbalwil0nlrlxfl70zzbx009c4rccf4va0kq097rqhgznx"; + then "05620qqi8plxsrzj92g306a0l8wg1pd2l66vpmj71vs0f5lms6p4" + else "07b2120pa8nyvnvh48vp5vqq7xlxg6vrrx67azz9kfcdzbbarcv9"; }; # grab the plugin sdk for the desktop icon @@ -101,7 +101,11 @@ stdenv.mkDerivation rec { meta = { description = "The TeamSpeak voice communication tool"; homepage = http://teamspeak.com/; - license = "http://www.teamspeak.com/?page=downloads&type=ts3_linux_client_latest"; + license = { + fullName = "Teamspeak client license"; + url = http://sales.teamspeakusa.com/licensing.php; + free = false; + }; maintainers = [ stdenv.lib.maintainers.lhvwb ]; platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/applications/networking/mailreaders/mutt/default.nix b/pkgs/applications/networking/mailreaders/mutt/default.nix index 31ead22e1fd6..0be5e0bd57eb 100644 --- a/pkgs/applications/networking/mailreaders/mutt/default.nix +++ b/pkgs/applications/networking/mailreaders/mutt/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, ncurses, which, perl, autoreconfHook +{ stdenv, fetchurl, fetchpatch, ncurses, which, perl, autoreconfHook , gdbm ? null , openssl ? null , cyrus_sasl ? null @@ -61,8 +61,16 @@ stdenv.mkDerivation rec { ++ optional saslSupport "--with-sasl"; patches = - optional withTrash ./trash.patch ++ - optional withSidebar ./sidebar.patch; + optional withTrash (fetchpatch { + name = "trash.patch"; + url = "https://aur.archlinux.org/cgit/aur.git/plain/trash.patch?h=mutt-sidebar"; + sha256 = "1hrib9jk28mqd02nzv0sx01jfdabzvnwcc5qjc3810zfglzc1nql"; + }) ++ + optional withSidebar (fetchpatch { + name = "sidebar.patch"; + url = "https://aur.archlinux.org/cgit/aur.git/plain/sidebar.patch?h=mutt-sidebar"; + sha256 = "1l63wj7kw41jrh00mcxdw4p4vrbc9wld42s99liw8kz2aclymq5m"; + }); meta = { description = "A small but very powerful text-based mail client"; diff --git a/pkgs/applications/networking/mailreaders/mutt/sidebar.patch b/pkgs/applications/networking/mailreaders/mutt/sidebar.patch deleted file mode 100644 index 218de7a0c46f..000000000000 --- a/pkgs/applications/networking/mailreaders/mutt/sidebar.patch +++ /dev/null @@ -1,4450 +0,0 @@ -diff -urN mutt-1.6.1/buffy.c mutt-1.6.1-sidebar/buffy.c ---- mutt-1.6.1/buffy.c 2016-06-12 18:43:00.397447512 +0100 -+++ mutt-1.6.1-sidebar/buffy.c 2016-06-12 18:43:03.951502935 +0100 -@@ -27,6 +27,10 @@ - - #include "mutt_curses.h" - -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif -+ - #ifdef USE_IMAP - #include "imap.h" - #endif -@@ -196,9 +200,17 @@ - static BUFFY *buffy_new (const char *path) - { - BUFFY* buffy; -+#ifdef USE_SIDEBAR -+ char rp[PATH_MAX] = ""; -+ char *r = NULL; -+#endif - - buffy = (BUFFY *) safe_calloc (1, sizeof (BUFFY)); - strfcpy (buffy->path, path, sizeof (buffy->path)); -+#ifdef USE_SIDEBAR -+ r = realpath (path, rp); -+ strfcpy (buffy->realpath, r ? rp : path, sizeof (buffy->realpath)); -+#endif - buffy->next = NULL; - buffy->magic = 0; - -@@ -215,7 +227,10 @@ - BUFFY **tmp,*tmp1; - char buf[_POSIX_PATH_MAX]; - struct stat sb; -- char f1[PATH_MAX], f2[PATH_MAX]; -+ char f1[PATH_MAX]; -+#ifndef USE_SIDEBAR -+ char f2[PATH_MAX]; -+#endif - char *p, *q; - - while (MoreArgs (s)) -@@ -228,6 +243,9 @@ - for (tmp = &Incoming; *tmp;) - { - tmp1=(*tmp)->next; -+#ifdef USE_SIDEBAR -+ mutt_sb_notify_mailbox (*tmp, 0); -+#endif - buffy_free (tmp); - *tmp=tmp1; - } -@@ -243,8 +261,13 @@ - p = realpath (buf, f1); - for (tmp = &Incoming; *tmp; tmp = &((*tmp)->next)) - { -+#ifdef USE_SIDEBAR -+ q = (*tmp)->realpath; -+ if (mutt_strcmp (p ? p : buf, q) == 0) -+#else - q = realpath ((*tmp)->path, f2); - if (mutt_strcmp (p ? p : buf, q ? q : (*tmp)->path) == 0) -+#endif - { - dprint(3,(debugfile,"mailbox '%s' already registered as '%s'\n", buf, (*tmp)->path)); - break; -@@ -256,14 +279,21 @@ - if(*tmp) - { - tmp1=(*tmp)->next; -+#ifdef USE_SIDEBAR -+ mutt_sb_notify_mailbox (*tmp, 0); -+#endif - buffy_free (tmp); - *tmp=tmp1; - } - continue; - } - -- if (!*tmp) -+ if (!*tmp) { - *tmp = buffy_new (buf); -+#ifdef USE_SIDEBAR -+ mutt_sb_notify_mailbox (*tmp, 1); -+#endif -+ } - - (*tmp)->new = 0; - (*tmp)->notified = 1; -@@ -306,6 +336,13 @@ - return 0; - } - -+#ifdef USE_SIDEBAR -+ if (option (OPTSIDEBAR) && mailbox->msg_unread > 0) { -+ mailbox->new = 1; -+ return 1; -+ } -+#endif -+ - if ((dirp = opendir (path)) == NULL) - { - mailbox->magic = 0; -@@ -357,6 +394,93 @@ - - return 0; - } -+ -+#ifdef USE_SIDEBAR -+/** -+ * buffy_maildir_update_dir - Update counts for one directory -+ * @mailbox: BUFFY representing a maildir mailbox -+ * @dir: Which directory to search -+ * -+ * Look through one directory of a maildir mailbox. The directory could -+ * be either "new" or "cur". -+ * -+ * Count how many new, or flagged, messages there are. -+ */ -+static void -+buffy_maildir_update_dir (BUFFY *mailbox, const char *dir) -+{ -+ char path[_POSIX_PATH_MAX] = ""; -+ DIR *dirp = NULL; -+ struct dirent *de = NULL; -+ char *p = NULL; -+ int read; -+ -+ snprintf (path, sizeof (path), "%s/%s", mailbox->path, dir); -+ -+ dirp = opendir (path); -+ if (!dirp) -+ { -+ mailbox->magic = 0; -+ return; -+ } -+ -+ while ((de = readdir (dirp)) != NULL) -+ { -+ if (*de->d_name == '.') -+ continue; -+ -+ /* Matches maildir_parse_flags logic */ -+ read = 0; -+ mailbox->msg_count++; -+ p = strstr (de->d_name, ":2,"); -+ if (p) -+ { -+ p += 3; -+ if (strchr (p, 'S')) -+ read = 1; -+ if (strchr (p, 'F')) -+ mailbox->msg_flagged++; -+ } -+ if (!read) { -+ mailbox->msg_unread++; -+ } -+ } -+ -+ closedir (dirp); -+} -+ -+/** -+ * buffy_maildir_update - Update messages counts for a maildir mailbox -+ * @mailbox: BUFFY representing a maildir mailbox -+ * -+ * Open a mailbox directories and update our record of how many new, or -+ * flagged, messages there are. -+ */ -+void -+buffy_maildir_update (BUFFY *mailbox) -+{ -+ if (!option (OPTSIDEBAR)) -+ return; -+ -+ mailbox->msg_count = 0; -+ mailbox->msg_unread = 0; -+ mailbox->msg_flagged = 0; -+ -+ buffy_maildir_update_dir (mailbox, "new"); -+ if (mailbox->msg_count) { -+ mailbox->new = 1; -+ } -+ buffy_maildir_update_dir (mailbox, "cur"); -+ -+ mailbox->sb_last_checked = time (NULL); -+ -+ /* make sure the updates are actually put on screen */ -+ if (SidebarWidth) -+ mutt_sb_draw(); -+} -+ -+#endif -+ - /* returns 1 if mailbox has new mail */ - static int buffy_mbox_hasnew (BUFFY* mailbox, struct stat *sb) - { -@@ -368,7 +491,11 @@ - else - statcheck = sb->st_mtime > sb->st_atime - || (mailbox->newly_created && sb->st_ctime == sb->st_mtime && sb->st_ctime == sb->st_atime); -+#ifdef USE_SIDEBAR -+ if ((!option (OPTSIDEBAR) && statcheck) || (option (OPTSIDEBAR) && mailbox->msg_unread > 0)) -+#else - if (statcheck) -+#endif - { - if (!option(OPTMAILCHECKRECENT) || sb->st_mtime > mailbox->last_visited) - { -@@ -388,6 +515,42 @@ - return rc; - } - -+#ifdef USE_SIDEBAR -+/** -+ * buffy_mbox_update - Update messages counts for an mbox mailbox -+ * @mailbox: BUFFY representing an mbox mailbox -+ * @sb: stat(2) infomation about the mailbox file -+ * -+ * Open a mbox file and update our record of how many new, or flagged, -+ * messages there are. If the mailbox hasn't changed since the last call, -+ * the function does nothing. -+ */ -+void -+buffy_mbox_update (BUFFY *mailbox, struct stat *sb) -+{ -+ CONTEXT *ctx = NULL; -+ -+ if (!option (OPTSIDEBAR)) -+ return; -+ if ((mailbox->sb_last_checked > sb->st_mtime) && (mailbox->msg_count != 0)) -+ return; /* no check necessary */ -+ -+ ctx = mx_open_mailbox (mailbox->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL); -+ if (ctx) -+ { -+ mailbox->msg_count = ctx->msgcount; -+ mailbox->msg_unread = ctx->unread; -+ mailbox->msg_flagged = ctx->flagged; -+ mailbox->sb_last_checked = time (NULL); -+ mx_close_mailbox (ctx, 0); -+ } -+ -+ /* make sure the updates are actually put on screen */ -+ if (SidebarWidth) -+ mutt_sb_draw(); -+} -+#endif -+ - int mutt_buffy_check (int force) - { - BUFFY *tmp; -@@ -461,16 +623,25 @@ - { - case M_MBOX: - case M_MMDF: -+#ifdef USE_SIDEBAR -+ buffy_mbox_update (tmp, &sb); -+#endif - if (buffy_mbox_hasnew (tmp, &sb) > 0) - BuffyCount++; - break; - - case M_MAILDIR: -+#ifdef USE_SIDEBAR -+ buffy_maildir_update (tmp); -+#endif - if (buffy_maildir_hasnew (tmp) > 0) - BuffyCount++; - break; - - case M_MH: -+#ifdef USE_SIDEBAR -+ mh_buffy_update (tmp); -+#endif - mh_buffy(tmp); - if (tmp->new) - BuffyCount++; -diff -urN mutt-1.6.1/buffy.h mutt-1.6.1-sidebar/buffy.h ---- mutt-1.6.1/buffy.h 2016-06-12 18:43:00.397447512 +0100 -+++ mutt-1.6.1-sidebar/buffy.h 2016-06-12 18:43:03.951502935 +0100 -@@ -16,6 +16,9 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -+#ifndef _BUFFY_H -+#define _BUFFY_H -+ - /*parameter to mutt_parse_mailboxes*/ - #define M_MAILBOXES 1 - #define M_UNMAILBOXES 2 -@@ -23,13 +26,28 @@ - typedef struct buffy_t - { - char path[_POSIX_PATH_MAX]; -+#ifdef USE_SIDEBAR -+ char realpath[_POSIX_PATH_MAX]; -+#endif - off_t size; - struct buffy_t *next; -+#ifdef USE_SIDEBAR -+ struct buffy_t *prev; -+#endif - short new; /* mailbox has new mail */ -+#ifdef USE_SIDEBAR -+ int msg_count; /* total number of messages */ -+ int msg_unread; /* number of unread messages */ -+ int msg_flagged; /* number of flagged messages */ -+ short is_hidden; /* is hidden from the sidebar */ -+#endif - short notified; /* user has been notified */ - short magic; /* mailbox type */ - short newly_created; /* mbox or mmdf just popped into existence */ - time_t last_visited; /* time of last exit from this mailbox */ -+#ifdef USE_SIDEBAR -+ time_t sb_last_checked; /* time of last buffy check from sidebar */ -+#endif - } - BUFFY; - -@@ -49,3 +67,5 @@ - void mutt_buffy_setnotified (const char *path); - - void mh_buffy (BUFFY *); -+ -+#endif /* _BUFFY_H */ -diff -urN mutt-1.6.1/color.c mutt-1.6.1-sidebar/color.c ---- mutt-1.6.1/color.c 2016-06-12 18:43:00.397447512 +0100 -+++ mutt-1.6.1-sidebar/color.c 2016-06-12 18:43:03.951502935 +0100 -@@ -94,6 +94,14 @@ - { "underline", MT_COLOR_UNDERLINE }, - { "index", MT_COLOR_INDEX }, - { "prompt", MT_COLOR_PROMPT }, -+#ifdef USE_SIDEBAR -+ { "sidebar_divider", MT_COLOR_DIVIDER }, -+ { "sidebar_flagged", MT_COLOR_FLAGGED }, -+ { "sidebar_highlight",MT_COLOR_HIGHLIGHT }, -+ { "sidebar_indicator",MT_COLOR_SB_INDICATOR }, -+ { "sidebar_new", MT_COLOR_NEW }, -+ { "sidebar_spoolfile",MT_COLOR_SB_SPOOLFILE }, -+#endif - { NULL, 0 } - }; - -@@ -146,6 +154,9 @@ - ColorDefs[MT_COLOR_INDICATOR] = A_REVERSE; - ColorDefs[MT_COLOR_SEARCH] = A_REVERSE; - ColorDefs[MT_COLOR_MARKERS] = A_REVERSE; -+#ifdef USE_SIDEBAR -+ ColorDefs[MT_COLOR_HIGHLIGHT] = A_UNDERLINE; -+#endif - /* special meaning: toggle the relevant attribute */ - ColorDefs[MT_COLOR_BOLD] = 0; - ColorDefs[MT_COLOR_UNDERLINE] = 0; -diff -urN mutt-1.6.1/compose.c mutt-1.6.1-sidebar/compose.c ---- mutt-1.6.1/compose.c 2016-06-12 18:43:00.398447528 +0100 -+++ mutt-1.6.1-sidebar/compose.c 2016-06-12 18:43:03.952502951 +0100 -@@ -32,6 +32,9 @@ - #include "mailbox.h" - #include "sort.h" - #include "charset.h" -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif - - #ifdef MIXMASTER - #include "remailer.h" -@@ -72,7 +75,7 @@ - - #define HDR_XOFFSET 10 - #define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */ --#define W (COLS - HDR_XOFFSET) -+#define W (COLS - HDR_XOFFSET - SidebarWidth) - - static const char * const Prompts[] = - { -@@ -110,7 +113,7 @@ - - static void redraw_crypt_lines (HEADER *msg) - { -- mvaddstr (HDR_CRYPT, 0, "Security: "); -+ mvprintw (HDR_CRYPT, SidebarWidth, TITLE_FMT, "Security: "); - - if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0) - { -@@ -145,16 +148,16 @@ - addstr (_(" (OppEnc mode)")); - - clrtoeol (); -- move (HDR_CRYPTINFO, 0); -+ move (HDR_CRYPTINFO, SidebarWidth); - clrtoeol (); - - if ((WithCrypto & APPLICATION_PGP) - && (msg->security & APPLICATION_PGP) && (msg->security & SIGN)) -- printw ("%s%s", _(" sign as: "), PgpSignAs ? PgpSignAs : _("")); -+ printw (TITLE_FMT "%s", _("sign as: "), PgpSignAs ? PgpSignAs : _("")); - - if ((WithCrypto & APPLICATION_SMIME) - && (msg->security & APPLICATION_SMIME) && (msg->security & SIGN)) { -- printw ("%s%s", _(" sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("")); -+ printw (TITLE_FMT "%s", _("sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("")); - } - - if ((WithCrypto & APPLICATION_SMIME) -@@ -162,7 +165,7 @@ - && (msg->security & ENCRYPT) - && SmimeCryptAlg - && *SmimeCryptAlg) { -- mvprintw (HDR_CRYPTINFO, 40, "%s%s", _("Encrypt with: "), -+ mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "), - NONULL(SmimeCryptAlg)); - } - } -@@ -175,7 +178,8 @@ - int c; - char *t; - -- mvaddstr (HDR_MIX, 0, " Mix: "); -+ /* L10N: "Mix" refers to the MixMaster chain for anonymous email */ -+ mvprintw (HDR_MIX, SidebarWidth, TITLE_FMT, _("Mix: ")); - - if (!chain) - { -@@ -190,7 +194,7 @@ - if (t && t[0] == '0' && t[1] == '\0') - t = ""; - -- if (c + mutt_strlen (t) + 2 >= COLS) -+ if (c + mutt_strlen (t) + 2 >= COLS - SidebarWidth) - break; - - addstr (NONULL(t)); -@@ -242,20 +246,23 @@ - - buf[0] = 0; - rfc822_write_address (buf, sizeof (buf), addr, 1); -- mvprintw (line, 0, TITLE_FMT, Prompts[line - 1]); -+ mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]); - mutt_paddstr (W, buf); - } - - static void draw_envelope (HEADER *msg, char *fcc) - { -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif - draw_envelope_addr (HDR_FROM, msg->env->from); - draw_envelope_addr (HDR_TO, msg->env->to); - draw_envelope_addr (HDR_CC, msg->env->cc); - draw_envelope_addr (HDR_BCC, msg->env->bcc); -- mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]); -+ mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]); - mutt_paddstr (W, NONULL (msg->env->subject)); - draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to); -- mvprintw (HDR_FCC, 0, TITLE_FMT, Prompts[HDR_FCC - 1]); -+ mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]); - mutt_paddstr (W, fcc); - - if (WithCrypto) -@@ -266,7 +273,7 @@ - #endif - - SETCOLOR (MT_COLOR_STATUS); -- mvaddstr (HDR_ATTACH - 1, 0, _("-- Attachments")); -+ mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments")); - clrtoeol (); - - NORMAL_COLOR; -@@ -302,7 +309,7 @@ - /* redraw the expanded list so the user can see the result */ - buf[0] = 0; - rfc822_write_address (buf, sizeof (buf), *addr, 1); -- move (line, HDR_XOFFSET); -+ move (line, HDR_XOFFSET + SidebarWidth); - mutt_paddstr (W, buf); - - return 0; -@@ -515,7 +522,7 @@ - menu->tag = mutt_tag_attach; - menu->data = idx; - menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_COMPOSE, ComposeHelp); -- -+ - while (loop) - { - switch (op = mutt_menuLoop (menu)) -@@ -564,7 +571,7 @@ - if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0) - { - mutt_str_replace (&msg->env->subject, buf); -- move (HDR_SUBJECT, HDR_XOFFSET); -+ move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth); - if (msg->env->subject) - mutt_paddstr (W, msg->env->subject); - else -@@ -582,7 +589,7 @@ - { - strfcpy (fcc, buf, fcclen); - mutt_pretty_mailbox (fcc, fcclen); -- move (HDR_FCC, HDR_XOFFSET); -+ move (HDR_FCC, HDR_XOFFSET + SidebarWidth); - mutt_paddstr (W, fcc); - fccSet = 1; - } -diff -urN mutt-1.6.1/configure.ac mutt-1.6.1-sidebar/configure.ac ---- mutt-1.6.1/configure.ac 2016-06-12 18:43:00.398447528 +0100 -+++ mutt-1.6.1-sidebar/configure.ac 2016-06-12 18:43:03.952502951 +0100 -@@ -175,6 +175,14 @@ - SMIMEAUX_TARGET="smime_keys" - fi - -+AC_ARG_ENABLE(sidebar, AC_HELP_STRING([--enable-sidebar], [Enable Sidebar support]), -+[ if test x$enableval = xyes ; then -+ AC_DEFINE(USE_SIDEBAR, 1, [Define if you want support for the sidebar.]) -+ OPS="$OPS \$(srcdir)/OPS.SIDEBAR" -+ MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS sidebar.o" -+ fi -+]) -+ - AC_ARG_WITH(mixmaster, AS_HELP_STRING([--with-mixmaster@<:@=PATH@:>@],[Include Mixmaster support]), - [if test "$withval" != no - then -diff -urN mutt-1.6.1/copy.c mutt-1.6.1-sidebar/copy.c ---- mutt-1.6.1/copy.c 2016-06-12 18:43:00.398447528 +0100 -+++ mutt-1.6.1-sidebar/copy.c 2016-06-12 18:43:03.952502951 +0100 -@@ -288,7 +288,8 @@ - if (flags & (CH_DECODE|CH_PREFIX)) - { - if (mutt_write_one_header (out, 0, headers[x], -- flags & CH_PREFIX ? prefix : 0, mutt_term_width (Wrap), flags) == -1) -+ flags & CH_PREFIX ? prefix : 0, -+ mutt_term_width (Wrap), flags) == -1) - { - error = TRUE; - break; -diff -urN mutt-1.6.1/curs_main.c mutt-1.6.1-sidebar/curs_main.c ---- mutt-1.6.1/curs_main.c 2016-06-12 18:43:00.399447544 +0100 -+++ mutt-1.6.1-sidebar/curs_main.c 2016-06-12 18:43:03.953502966 +0100 -@@ -26,8 +26,13 @@ - #include "mailbox.h" - #include "mapping.h" - #include "sort.h" -+#include "buffy.h" - #include "mx.h" - -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif -+ - #ifdef USE_POP - #include "pop.h" - #endif -@@ -595,21 +600,39 @@ - menu->redraw |= REDRAW_STATUS; - if (do_buffy_notify) - { -- if (mutt_buffy_notify () && option (OPTBEEPNEW)) -- beep (); -+ if (mutt_buffy_notify()) -+ { -+ menu->redraw |= REDRAW_STATUS; -+ if (option (OPTBEEPNEW)) -+ beep(); -+ } - } - else - do_buffy_notify = 1; - } - -+#ifdef USE_SIDEBAR -+ if (option (OPTSIDEBAR)) -+ menu->redraw |= REDRAW_SIDEBAR; -+#endif -+ - if (op != -1) - mutt_curs_set (0); - - if (menu->redraw & REDRAW_FULL) - { - menu_redraw_full (menu); -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif - mutt_show_error (); - } -+#ifdef USE_SIDEBAR -+ else if (menu->redraw & REDRAW_SIDEBAR) { -+ mutt_sb_draw(); -+ menu->redraw &= ~REDRAW_SIDEBAR; -+ } -+#endif - - if (menu->menu == MENU_MAIN) - { -@@ -630,9 +653,20 @@ - - if (menu->redraw & REDRAW_STATUS) - { -+#ifdef USE_SIDEBAR -+ /* Temporarily lie about the sidebar width */ -+ short sw = SidebarWidth; -+ SidebarWidth = 0; -+#endif - menu_status_line (buf, sizeof (buf), menu, NONULL (Status)); -+#ifdef USE_SIDEBAR -+ SidebarWidth = sw; /* Restore the sidebar width */ -+#endif - move (option (OPTSTATUSONTOP) ? 0 : LINES-2, 0); - SETCOLOR (MT_COLOR_STATUS); -+#ifdef USE_SIDEBAR -+ mutt_sb_set_buffystats (Context); -+#endif - mutt_paddstr (COLS, buf); - NORMAL_COLOR; - menu->redraw &= ~REDRAW_STATUS; -@@ -652,7 +686,7 @@ - menu->oldcurrent = -1; - - if (option (OPTARROWCURSOR)) -- move (menu->current - menu->top + menu->offset, 2); -+ move (menu->current - menu->top + menu->offset, SidebarWidth + 2); - else if (option (OPTBRAILLEFRIENDLY)) - move (menu->current - menu->top + menu->offset, 0); - else -@@ -1091,6 +1125,9 @@ - break; - - CHECK_MSGCOUNT; -+#ifdef USE_SIDEBAR -+ CHECK_VISIBLE; -+#endif - CHECK_READONLY; - { - int oldvcount = Context->vcount; -@@ -1150,6 +1187,9 @@ - menu->redraw = REDRAW_FULL; - break; - -+#ifdef USE_SIDEBAR -+ case OP_SIDEBAR_OPEN: -+#endif - case OP_MAIN_CHANGE_FOLDER: - case OP_MAIN_NEXT_UNREAD_MAILBOX: - -@@ -1181,6 +1221,14 @@ - { - mutt_buffy (buf, sizeof (buf)); - -+#ifdef USE_SIDEBAR -+ if (op == OP_SIDEBAR_OPEN) { -+ const char *path = mutt_sb_get_highlight(); -+ if (!path) -+ break; -+ strncpy (buf, path, sizeof (buf)); -+ } else -+#endif - if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1) - { - if (menu->menu == MENU_PAGER) -@@ -1199,6 +1247,9 @@ - } - - mutt_expand_path (buf, sizeof (buf)); -+#ifdef USE_SIDEBAR -+ mutt_sb_set_open_buffy (buf); -+#endif - if (mx_get_magic (buf) <= 0) - { - mutt_error (_("%s is not a mailbox."), buf); -@@ -2310,6 +2361,21 @@ - mutt_what_key(); - break; - -+#ifdef USE_SIDEBAR -+ case OP_SIDEBAR_NEXT: -+ case OP_SIDEBAR_NEXT_NEW: -+ case OP_SIDEBAR_PAGE_DOWN: -+ case OP_SIDEBAR_PAGE_UP: -+ case OP_SIDEBAR_PREV: -+ case OP_SIDEBAR_PREV_NEW: -+ mutt_sb_change_mailbox (op); -+ break; -+ -+ case OP_SIDEBAR_TOGGLE_VISIBLE: -+ toggle_option (OPTSIDEBAR); -+ menu->redraw = REDRAW_FULL; -+ break; -+#endif - default: - if (menu->menu == MENU_MAIN) - km_error_key (MENU_MAIN); -diff -urN mutt-1.6.1/doc/manual.xml.head mutt-1.6.1-sidebar/doc/manual.xml.head ---- mutt-1.6.1/doc/manual.xml.head 2016-06-12 18:43:00.402447590 +0100 -+++ mutt-1.6.1-sidebar/doc/manual.xml.head 2016-06-12 18:43:03.955502998 +0100 -@@ -405,6 +405,623 @@ - - - -+ -+ Sidebar -+ -+ The Sidebar shows a list of all your mailboxes. The list can be -+ turned on and off, it can be themed and the list style can be -+ configured. -+ -+ -+ This part of the manual is suitable for beginners. -+ If you already know Mutt you could skip ahead to the main -+ Sidebar guide. -+ If you just want to get started, you could use the sample -+ Sidebar muttrc. -+ -+ -+ This version of Sidebar is based on Terry Chan's -+ 2015-11-11 release. -+ It contains many -+ new features, -+ lots of -+ bugfixes -+ and a generous helping of -+ new documentation which you are already reading. -+ -+ -+ To check if Mutt supports Sidebar, look for the string -+ +USE_SIDEBAR in the mutt version. -+ -+ -+mutt -v -+ -+ -+ Let's turn on the Sidebar: -+ -+ set sidebar_visible -+ -+ You will see something like this. -+ A list of mailboxes on the left. -+ A list of emails, from the selected mailbox, on the right. -+ -+ -+Fruit [1] 3/8| 1 + Jan 24 Rhys Lee (192) Yew -+Animals [1] 2/6| 2 + Feb 11 Grace Hall (167) Ilama -+Cars 4| 3 Feb 23 Aimee Scott (450) Nectarine -+Seas 1/7| 4 ! Feb 28 Summer Jackson (264) Lemon -+ | 5 Mar 07 Callum Harrison (464) Raspberry -+ | 6 N + Mar 24 Samuel Harris (353) Tangerine -+ | 7 N + Sep 05 Sofia Graham (335) Cherry -+ | 8 N Sep 16 Ewan Brown (105) Ugli -+ | -+ | -+ -+ -+ This user has four mailboxes: Fruit, -+ Cars, Animals and -+ Seas. -+ -+ -+ The current, open, mailbox is Fruit. We can -+ also see information about the other mailboxes. For example: -+ The Animals mailbox contains, 1 flagged email, 2 -+ new emails out of a total of 6 emails. -+ -+ -+ Navigation -+ -+ The Sidebar adds some new functions -+ to Mutt. -+ -+ -+ The user pressed the c key to -+ <change-folder> to the -+ Animals mailbox. The Sidebar automatically -+ updated the indicator to match. -+ -+ -+Fruit [1] 3/8| 1 Jan 03 Tia Gibson (362) Caiman -+Animals [1] 2/6| 2 + Jan 22 Rhys Lee ( 48) Dolphin -+Cars 4| 3 ! Aug 16 Ewan Brown (333) Hummingbird -+Seas 1/7| 4 Sep 25 Grace Hall ( 27) Capybara -+ | 5 N + Nov 12 Evelyn Rogers (453) Tapir -+ | 6 N + Nov 16 Callum Harrison (498) Hedgehog -+ | -+ | -+ | -+ | -+ -+ -+ Let's map some functions: -+ -+ -+bind index,pager \CP sidebar-prev # Ctrl-Shift-P - Previous Mailbox -+bind index,pager \CN sidebar-next # Ctrl-Shift-N - Next Mailbox -+bind index,pager \CO sidebar-open # Ctrl-Shift-O - Open Highlighted Mailbox -+ -+ -+ Press Ctrl-Shift-N (Next mailbox) twice will -+ move the Sidebar highlight to -+ down to the Seas mailbox. -+ -+ -+Fruit [1] 3/8| 1 Jan 03 Tia Gibson (362) Caiman -+Animals [1] 2/6| 2 + Jan 22 Rhys Lee ( 48) Dolphin -+Cars 4| 3 ! Aug 16 Ewan Brown (333) Hummingbird -+Seas 1/7| 4 Sep 25 Grace Hall ( 27) Capybara -+ | 5 N + Nov 12 Evelyn Rogers (453) Tapir -+ | 6 N + Nov 16 Callum Harrison (498) Hedgehog -+ | -+ | -+ | -+ | -+ -+ -+ Functions <sidebar-next> and -+ <sidebar-prev> move the Sidebar -+ highlight. -+ They do not change the open -+ mailbox. -+ -+ -+ Press Ctrl-Shift-O -+ (<sidebar-open>) -+ to open the highlighted mailbox. -+ -+ -+Fruit [1] 3/8| 1 ! Mar 07 Finley Jones (139) Molucca Sea -+Animals [1] 2/6| 2 + Mar 24 Summer Jackson ( 25) Arafura Sea -+Cars 4| 3 + Feb 28 Imogen Baker (193) Pechora Sea -+Seas 1/7| 4 N + Feb 23 Isla Hussain (348) Balearic Sea -+ | -+ | -+ | -+ | -+ | -+ | -+ -+ -+ -+ Features -+ -+ The Sidebar shows a list of mailboxes in a panel. -+ -+ -+ Everything about the Sidebar can be configured. -+ -+ -+ <link linkend="intro-sidebar-basics">State of the Sidebar</link> -+ Visibility -+ Width -+ -+ -+ <link linkend="intro-sidebar-limit">Which mailboxes are displayed</link> -+ Display all -+ Limit to mailboxes with new mail -+ Whitelist mailboxes to display always -+ -+ -+ <link linkend="sidebar-sort">The order in which mailboxes are displayed</link> -+ -+ Unsorted (order of mailboxes commands) -+ Sorted alphabetically -+ Sorted by number of new mails -+ -+ -+ <link linkend="intro-sidebar-colors">Color</link> -+ Sidebar indicators and divider -+ Mailboxes depending on their type -+ Mailboxes depending on their contents -+ -+ -+ <link linkend="sidebar-functions">Key bindings</link> -+ Hide/Unhide the Sidebar -+ Select previous/next mailbox -+ Select previous/next mailbox with new mail -+ Page up/down through a list of mailboxes -+ -+ -+ Misc -+ Formatting string for mailbox -+ Wraparound searching -+ Flexible mailbox abbreviations -+ Support for Unicode mailbox names (utf-8) -+ -+ -+ -+ Display -+ -+ Everything about the Sidebar can be configured. -+ -+ -+ For a quick reference: -+ Sidebar variables to set -+ Sidebar colors to apply -+ Sidebar sort methods -+ -+ -+ Sidebar Basics -+ -+ The most important variable is $sidebar_visible. -+ You can set this in your muttrc, or bind a key to the -+ function <sidebar-toggle-visible>. -+ -+ -+set sidebar_visible # Make the Sidebar visible by default -+bind index,pager B sidebar-toggle-visible # Use 'B' to switch the Sidebar on and off -+ -+ -+ Next, decide how wide you want the Sidebar to be. 25 -+ characters might be enough for the mailbox name and some numbers. -+ Remember, you can hide/show the Sidebar at the press of button. -+ -+ -+ Finally, you might want to change the divider character. -+ By default, Sidebar draws an ASCII line between it and the Index panel -+ If your terminal supports it, you can use a Unicode line-drawing character. -+ -+ -+set sidebar_width = 25 # Plenty of space -+set sidebar_divider_char = '│' # Pretty line-drawing character -+ -+ -+ -+ Sidebar Format String -+ -+ $sidebar_format allows you to customize the Sidebar display. -+ For an introduction, read format strings -+ including the section about conditionals. -+ -+ -+ The default value is %B%?F? [%F]?%* %?N?%N/?%S -+ -+ -+ Which breaks down as: -+ %B - Mailbox name -+ %?F? [%F]? - If flagged emails [%F], otherwise nothing -+ %* - Pad with spaces -+ %?N?%N/? - If new emails %N/, otherwise nothing -+ %S - Total number of emails -+ -+ -+ sidebar_format -+ -+ -+ -+ Format -+ Notes -+ Description -+ -+ -+ -+ -+ %B -+ -+ Name of the mailbox -+ -+ -+ %S -+ * -+ Size of mailbox (total number of messages) -+ -+ -+ %N -+ * -+ Number of New messages in the mailbox -+ -+ -+ %F -+ * -+ Number of Flagged messages in the mailbox -+ -+ -+ %! -+ -+ -+ !: one flagged message; -+ !!: two flagged messages; -+ n!: n flagged messages (for n > 2). -+ Otherwise prints nothing. -+ -+ -+ -+ %d -+ * ‡ -+ Number of deleted messages -+ -+ -+ %L -+ * ‡ -+ Number of messages after limiting -+ -+ -+ %t -+ * ‡ -+ Number of tagged messages -+ -+ -+ %>X -+ -+ Right justify the rest of the string and pad with X -+ -+ -+ %|X -+ -+ Pad to the end of the line with -+ X -+ -+ -+ %*X -+ -+ Soft-fill with character Xas pad -+ -+ -+ -+
-+ -+ * = Can be optionally printed if nonzero -+ -+ -+ ‡ = Only applicable to the current folder -+ -+ -+ Here are some examples. -+ They show the number of (F)lagged, (N)ew and (S)ize. -+ -+ -+ sidebar_format -+ -+ -+ -+ Format -+ Example -+ -+ -+ -+ -+ %B%?F? [%F]?%* %?N?%N/?%S -+ mailbox [F] N/S -+ -+ -+ %B%* %F:%N:%S -+ mailbox F:N:S -+ -+ -+ %B %?N?(%N)?%* %S -+ mailbox (N) S -+ -+ -+ %B%* ?F?%F/?%N -+ mailbox F/S -+ -+ -+ -+
-+
-+ -+ Abbreviating Mailbox Names -+ -+ $sidebar_delim_chars tells Sidebar -+ how to split up mailbox paths. For local directories -+ use /; for IMAP folders use . -+ -+ -+ Example 1 -+ -+ This example works well if your mailboxes have unique names -+ after the last separator. -+ -+ -+ Add some mailboxes of diffent depths. -+ -+ -+set folder="~/mail" -+mailboxes =fruit/apple =fruit/banana =fruit/cherry -+mailboxes =water/sea/sicily =water/sea/archipelago =water/sea/sibuyan -+mailboxes =water/ocean/atlantic =water/ocean/pacific =water/ocean/arctic -+ -+ -+ Shorten the names: -+ -+ -+set sidebar_short_path # Shorten mailbox names -+set sidebar_delim_chars="/" # Delete everything up to the last / character -+ -+ -+ The screenshot below shows what the Sidebar would look like -+ before and after shortening. -+ -+ -+|fruit/apple |apple -+|fruit/banana |banana -+|fruit/cherry |cherry -+|water/sea/sicily |sicily -+|water/sea/archipelago |archipelago -+|water/sea/sibuyan |sibuyan -+|water/ocean/atlantic |atlantic -+|water/ocean/pacific |pacific -+|water/ocean/arctic |arctic -+ -+ -+ -+ Example 2 -+ -+ This example works well if you have lots of mailboxes which are arranged -+ in a tree. -+ -+ -+ Add some mailboxes of diffent depths. -+ -+ -+set folder="~/mail" -+mailboxes =fruit -+mailboxes =fruit/apple =fruit/banana =fruit/cherry -+mailboxes =water -+mailboxes =water/sea -+mailboxes =water/sea/sicily =water/sea/archipelago =water/sea/sibuyan -+mailboxes =water/ocean -+mailboxes =water/ocean/atlantic =water/ocean/pacific =water/ocean/arctic -+ -+ -+ Shorten the names: -+ -+ -+set sidebar_short_path # Shorten mailbox names -+set sidebar_delim_chars="/" # Delete everything up to the last / character -+set sidebar_folder_indent # Indent folders whose names we've shortened -+set sidebar_indent_string=" " # Indent with two spaces -+ -+ -+ The screenshot below shows what the Sidebar would look like -+ before and after shortening. -+ -+ -+|fruit |fruit -+|fruit/apple | apple -+|fruit/banana | banana -+|fruit/cherry | cherry -+|water |water -+|water/sea | sea -+|water/sea/sicily | sicily -+|water/sea/archipelago | archipelago -+|water/sea/sibuyan | sibuyan -+|water/ocean | ocean -+|water/ocean/atlantic | atlantic -+|water/ocean/pacific | pacific -+|water/ocean/arctic | arctic -+ -+ -+ Sometimes, it will be necessary to add mailboxes, that you -+ don't use, to fill in part of the tree. This will trade -+ vertical space for horizonal space (but it looks good). -+ -+ -+ -+ -+ Limiting the Number of Mailboxes -+ -+ If you have a lot of mailboxes, sometimes it can be useful to hide -+ the ones you aren't using. $sidebar_new_mail_only -+ tells Sidebar to only show mailboxes that contain new, or flagged, email. -+ -+ -+ If you want some mailboxes to be always visible, then use the -+ sidebar_whitelist command. It takes a list of -+ mailboxes as parameters. -+ -+ -+set sidebar_new_mail_only # Only mailboxes with new/flagged email -+sidebar_whitelist fruit fruit/apple # Always display these two mailboxes -+ -+ -+
-+ -+ Colors -+ -+ Here is a sample color scheme: -+ -+ -+color sidebar_indicator default color17 # Dark blue background -+color sidebar_highlight white color238 # Grey background -+color sidebar_spoolfile yellow default # Yellow -+color sidebar_new green default # Green -+color sidebar_flagged red default # Red -+color sidebar_divider color8 default # Dark grey -+ -+ -+ There is a priority order when coloring Sidebar mailboxes. -+ e.g. If a mailbox has new mail it will have the -+ sidebar_new color, even if it also contains -+ flagged mails. -+ -+ -+ Sidebar Color Priority -+ -+ -+ -+ Priority -+ Color -+ Description -+ -+ -+ -+ -+ Highest -+ sidebar_indicator -+ Mailbox is open -+ -+ -+ -+ sidebar_highlight -+ Mailbox is highlighed -+ -+ -+ -+ sidebar_spoolfile -+ Mailbox is the spoolfile (receives incoming mail) -+ -+ -+ -+ sidebar_new -+ Mailbox contains new mail -+ -+ -+ -+ sidebar_flagged -+ Mailbox contains flagged mail -+ -+ -+ Lowest -+ (None) -+ Mailbox does not match above -+ -+ -+ -+
-+
-+ -+ Bug-fixes -+ -+ If you haven't used Sidebar before, you can ignore this section. -+ -+ -+ These bugs have been fixed since the previous Sidebar release: 2015-11-11. -+ -+ -+ Fix bug when starting in compose mode -+ Fix bug with empty sidebar_divider_char string -+ Fix bug with header wrapping -+ Correctly handle utf8 character sequences -+ Fix a bug in mh_buffy_update -+ Fix refresh -- time overflowed short -+ Protect against empty format strings -+ Limit Sidebar width to COLS -+ Handle unmailboxes * safely -+ Refresh Sidebar after timeout -+ -+ -+ -+ Config Changes -+ -+ If you haven't used Sidebar before, you can ignore this section. -+ -+ -+ Some of the Sidebar config has been changed to make its meaning clearer. -+ These changes have been made since the previous Sidebar release: 2015-11-11. -+ -+ -+ Config Changes -+ -+ -+ -+ Old Name -+ New Name -+ -+ -+ -+ -+ $sidebar_delim -+ $sidebar_divider_char -+ -+ -+ $sidebar_folderindent -+ $sidebar_folder_indent -+ -+ -+ $sidebar_indentstr -+ $sidebar_indent_string -+ -+ -+ $sidebar_newmail_only -+ $sidebar_new_mail_only -+ -+ -+ $sidebar_refresh -+ $sidebar_refresh_time -+ -+ -+ $sidebar_shortpath -+ $sidebar_short_path -+ -+ -+ $sidebar_sort -+ $sidebar_sort_method -+ -+ -+ <sidebar-scroll-down> -+ <sidebar-page-down> -+ -+ -+ <sidebar-scroll-up> -+ <sidebar-page-up> -+ -+ -+ -+
-+
-+
-+ - - Help - -@@ -6773,6 +7390,17 @@ - - - -+Mutt will set the COLUMNS environment variable to -+the width of the pager. Some programs make use of this environment -+variable automatically. Others provide a command line argument that -+can use this to set the output width: -+ -+ -+ -+text/html; lynx -dump -width ${COLUMNS:-80} %s; copiousoutput -+ -+ -+ - Note that when using the built-in pager, only - entries with this flag will be considered a handler for a MIME type - — all other entries will be ignored. -@@ -7467,6 +8095,16 @@ - - - -+ -+Mutt Patches -+ -+Mutt may also be patched to support smaller features. -+These patches should add a free-form string to the end Mutt's version string. -+Running mutt -v might show: -+patch-1.6.1.sidebar.20160502 -+ -+ -+ - - URL Syntax - -@@ -8081,6 +8719,469 @@ - - - -+ -+ Sidebar Patch -+ Overview of mailboxes -+ -+ -+ Patch -+ -+ -+ To check if Mutt supports Sidebar, look for -+ +USE_SIDEBAR in the mutt version. -+ See: . -+ -+ -+ -+ Dependencies: -+ mutt-1.6.1 -+ -+ -+ This patch is part of the NeoMutt Project. -+ -+ -+ -+ Introduction -+ -+ -+ The Sidebar shows a list of all your mailboxes. The list can be -+ turned on and off, it can be themed and the list style can be -+ configured. -+ -+ -+ -+ This part of the manual is a reference guide. -+ If you want a simple introduction with examples see the -+ Sidebar Howto. -+ If you just want to get started, you could use the sample -+ Sidebar muttrc. -+ -+ -+ -+ This version of Sidebar is based on Terry Chan's -+ 2015-11-11 release. -+ It contains many -+ new features, -+ lots of -+ bugfixes. -+ -+ -+ -+ -+ Variables -+ -+ -+ Sidebar Variables -+ -+ -+ -+ Name -+ Type -+ Default -+ -+ -+ -+ -+ sidebar_delim_chars -+ string -+ /. -+ -+ -+ sidebar_divider_char -+ string -+ | -+ -+ -+ sidebar_folder_indent -+ boolean -+ no -+ -+ -+ sidebar_format -+ string -+ %B%?F? [%F]?%* %?N?%N/?%S -+ -+ -+ sidebar_indent_string -+ string -+    (two spaces) -+ -+ -+ sidebar_new_mail_only -+ boolean -+ no -+ -+ -+ sidebar_next_new_wrap -+ boolean -+ no -+ -+ -+ sidebar_refresh_time -+ number -+ 60 -+ -+ -+ sidebar_short_path -+ boolean -+ no -+ -+ -+ sidebar_sort_method -+ enum -+ SORT_ORDER -+ -+ -+ sidebar_visible -+ boolean -+ no -+ -+ -+ sidebar_whitelist -+ list -+ (empty) -+ -+ -+ sidebar_width -+ number -+ 20 -+ -+ -+ -+
-+
-+ -+ -+ Functions -+ -+ -+ Sidebar adds the following functions to Mutt. -+ By default, none of them are bound to keys. -+ -+ -+ -+ Sidebar Functions -+ -+ -+ -+ Menus -+ Function -+ Description -+ -+ -+ -+ -+ index,pager -+ <sidebar-next> -+ Move the highlight to next mailbox -+ -+ -+ index,pager -+ <sidebar-next-new> -+ Move the highlight to next mailbox with new mail -+ -+ -+ index,pager -+ <sidebar-open> -+ Open highlighted mailbox -+ -+ -+ index,pager -+ <sidebar-page-down> -+ Scroll the Sidebar down 1 page -+ -+ -+ index,pager -+ <sidebar-page-up> -+ Scroll the Sidebar up 1 page -+ -+ -+ index,pager -+ <sidebar-prev> -+ Move the highlight to previous mailbox -+ -+ -+ index,pager -+ <sidebar-prev-new> -+ Move the highlight to previous mailbox with new mail -+ -+ -+ index,pager -+ <sidebar-toggle-visible> -+ Make the Sidebar (in)visible -+ -+ -+ -+
-+
-+ -+ -+ Commands -+ -+ sidebar_whitelist -+ -+ mailbox -+ -+ -+ mailbox -+ -+ -+ -+ -+ -+ Colors -+ -+ -+ Sidebar Colors -+ -+ -+ -+ Name -+ Default Color -+ Description -+ -+ -+ -+ -+ sidebar_divider -+ default -+ The dividing line between the Sidebar and the Index/Pager panels -+ -+ -+ sidebar_flagged -+ default -+ Mailboxes containing flagged mail -+ -+ -+ sidebar_highlight -+ underline -+ Cursor to select a mailbox -+ -+ -+ sidebar_indicator -+ mutt indicator -+ The mailbox open in the Index panel -+ -+ -+ sidebar_new -+ default -+ Mailboxes containing new mail -+ -+ -+ sidebar_spoolfile -+ default -+ Mailbox that receives incoming mail -+ -+ -+ -+
-+ -+ If the sidebar_indicator color isn't set, then the default Mutt -+ indicator color will be used (the color used in the index panel). -+
-+ -+ -+ Sort -+ -+ -+ Sidebar Sort -+ -+ -+ -+ Sort -+ Description -+ -+ -+ -+ -+ alpha -+ Alphabetically by path -+ -+ -+ count -+ Total number of messages -+ -+ -+ flagged -+ Number of flagged messages -+ -+ -+ name -+ Alphabetically by path -+ -+ -+ new -+ Number of new messages -+ -+ -+ path -+ Alphabetically by path -+ -+ -+ unsorted -+ Do not resort the paths -+ -+ -+ -+
-+
-+ -+ -+ Muttrc -+ -+# This is a complete list of sidebar-related configuration. -+ -+# -------------------------------------------------------------------------- -+# VARIABLES - shown with their default values -+# -------------------------------------------------------------------------- -+ -+# Should the Sidebar be shown? -+set sidebar_visible = no -+ -+# How wide should the Sidebar be in screen columns? -+# Note: Some characters, e.g. Chinese, take up two columns each. -+set sidebar_width = 20 -+ -+# Should the mailbox paths be abbreviated? -+set sidebar_short_path = no -+ -+# When abbreviating mailbox path names, use any of these characters as path -+# separators. Only the part after the last separators will be shown. -+# For file folders '/' is good. For IMAP folders, often '.' is useful. -+set sidebar_delim_chars = '/.' -+ -+# If the mailbox path is abbreviated, should it be indented? -+set sidebar_folder_indent = no -+ -+# Indent mailbox paths with this string. -+set sidebar_indent_string = ' ' -+ -+# Make the Sidebar only display mailboxes that contain new, or flagged, -+# mail. -+set sidebar_new_mail_only = no -+ -+# Any mailboxes that are whitelisted will always be visible, even if the -+# sidebar_new_mail_only option is enabled. -+sidebar_whitelist '/home/user/mailbox1' -+sidebar_whitelist '/home/user/mailbox2' -+ -+# When searching for mailboxes containing new mail, should the search wrap -+# around when it reaches the end of the list? -+set sidebar_next_new_wrap = no -+ -+# The character to use as the divider between the Sidebar and the other Mutt -+# panels. -+# Note: Only the first character of this string is used. -+set sidebar_divider_char = '|' -+ -+# Display the Sidebar mailboxes using this format string. -+set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S' -+ -+# Sidebar will not refresh its list of mailboxes any more frequently than -+# this number of seconds. This will help reduce disk/network traffic. -+set sidebar_refresh_time = 60 -+ -+# Sort the mailboxes in the Sidebar using this method: -+# count - total number of messages -+# flagged - number of flagged messages -+# new - number of new messages -+# path - mailbox path -+# unsorted - do not sort the mailboxes -+set sidebar_sort_method = 'unsorted' -+ -+# -------------------------------------------------------------------------- -+# FUNCTIONS - shown with an example mapping -+# -------------------------------------------------------------------------- -+ -+# Move the highlight to the previous mailbox -+bind index,pager \Cp sidebar-prev -+ -+# Move the highlight to the next mailbox -+bind index,pager \Cn sidebar-next -+ -+# Open the highlighted mailbox -+bind index,pager \Co sidebar-open -+ -+# Move the highlight to the previous page -+# This is useful if you have a LOT of mailboxes. -+bind index,pager <F3> sidebar-page-up -+ -+# Move the highlight to the next page -+# This is useful if you have a LOT of mailboxes. -+bind index,pager <F4> sidebar-page-down -+ -+# Move the highlight to the previous mailbox containing new, or flagged, -+# mail. -+bind index,pager <F5> sidebar-prev-new -+ -+# Move the highlight to the next mailbox containing new, or flagged, mail. -+bind index,pager <F6> sidebar-next-new -+ -+# Toggle the visibility of the Sidebar. -+bind index,pager B sidebar-toggle-visible -+ -+# -------------------------------------------------------------------------- -+# COLORS - some unpleasant examples are given -+# -------------------------------------------------------------------------- -+# Note: All color operations are of the form: -+# color OBJECT FOREGROUND BACKGROUND -+ -+# Color of the current, open, mailbox -+# Note: This is a general Mutt option which colors all selected items. -+color indicator cyan black -+ -+# Color of the highlighted, but not open, mailbox. -+color sidebar_highlight black color8 -+ -+# Color of the divider separating the Sidebar from Mutt panels -+color sidebar_divider color8 black -+ -+# Color to give mailboxes containing flagged mail -+color sidebar_flagged red black -+ -+# Color to give mailboxes containing new mail -+color sidebar_new green black -+ -+# -------------------------------------------------------------------------- -+ -+# vim: syntax=muttrc -+ -+ -+ -+ -+ See Also -+ -+ -+ Regular Expressions -+ Patterns -+ Color command -+ notmuch patch -+ -+ -+ -+ -+ Known Bugs -+ Unsorted isn't -+ -+ -+ -+ Credits -+ -+ Justin Hibbits jrh29@po.cwru.edu -+ Thomer M. Gil mutt@thomer.com -+ David Sterba dsterba@suse.cz -+ Evgeni Golov evgeni@debian.org -+ Fabian Groffen grobian@gentoo.org -+ Jason DeTiberus jdetiber@redhat.com -+ Stefan Assmann sassmann@kpanic.de -+ Steve Kemp steve@steve.org.uk -+ Terry Chan tchan@lunar-linux.org -+ Tyler Earnest tylere@rne.st -+ Richard Russon rich@flatcap.org -+ -+ -+
-+ - - - -@@ -9237,6 +10338,17 @@ - - - -+sidebar_whitelist -+ -+item -+ -+ -+command -+ -+ -+ -+ -+ - source - - filename -diff -urN mutt-1.6.1/doc/mutt.css mutt-1.6.1-sidebar/doc/mutt.css ---- mutt-1.6.1/doc/mutt.css 2016-06-12 18:43:00.402447590 +0100 -+++ mutt-1.6.1-sidebar/doc/mutt.css 2016-06-12 18:43:03.811500752 +0100 -@@ -9,17 +9,24 @@ - div.table-contents table th, div.informaltable table th { - font-family:sans-serif; - background:#d0d0d0; -- font-weight:normal; -+ font-weight:bold; - vertical-align:top; - } --div.cmdsynopsis { border-left:1px solid #707070; padding-left:5px; } -+div.cmdsynopsis { border-left:1px solid #707070; padding-left: 1em; } - li div.cmdsynopsis { border-left:none; padding-left:0px; } --pre.screen, div.note { background:#f0f0f0; border:1px solid #c0c0c0; padding:5px; margin-left:2%; margin-right:2%; } -+li p { margin: 0; } -+pre.screen, div.note { border:1px solid #c0c0c0; margin-left:2%; margin-right:2%; } -+pre.screen { color: #ffffff; background:#000000; padding: 0.5em; } -+div.note { background:#ffff80; padding: 0.5em; } - div.example p.title { margin-left:2%; } - div.note h3 { font-size:small; font-style:italic; font-variant: small-caps; } - div.note h3:after { content: ":" } - div.note { margin-bottom: 5px; } --.command { font-family: monospace; font-weight: normal; } -+div.literallayout, .command { font-family: monospace; font-weight: normal; } - .command strong { font-weight: normal; } - tr { vertical-align: top; } --.comment { color:#707070; } -+.comment { color:#00c000; } -+code.literal { background: #f0f0f0; color: #000000; } -+span.indicator { background: #000060; color: #ffffff; } -+span.highlight { background: #404040; color: #ffffff; } -+span.reverse { background: #ffffff; color: #000000; } -diff -urN mutt-1.6.1/doc/muttrc.sidebar mutt-1.6.1-sidebar/doc/muttrc.sidebar ---- mutt-1.6.1/doc/muttrc.sidebar 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/doc/muttrc.sidebar 2016-06-12 18:43:03.812500768 +0100 -@@ -0,0 +1,116 @@ -+# This is a complete list of sidebar-related configuration. -+ -+# -------------------------------------------------------------------------- -+# VARIABLES - shown with their default values -+# -------------------------------------------------------------------------- -+ -+# Should the Sidebar be shown? -+set sidebar_visible = no -+ -+# How wide should the Sidebar be in screen columns? -+# Note: Some characters, e.g. Chinese, take up two columns each. -+set sidebar_width = 20 -+ -+# Should the mailbox paths be abbreviated? -+set sidebar_short_path = no -+ -+# When abbreviating mailbox path names, use any of these characters as path -+# separators. Only the part after the last separators will be shown. -+# For file folders '/' is good. For IMAP folders, often '.' is useful. -+set sidebar_delim_chars = '/.' -+ -+# If the mailbox path is abbreviated, should it be indented? -+set sidebar_folder_indent = no -+ -+# Indent mailbox paths with this string. -+set sidebar_indent_string = ' ' -+ -+# Make the Sidebar only display mailboxes that contain new, or flagged, -+# mail. -+set sidebar_new_mail_only = no -+ -+# Any mailboxes that are whitelisted will always be visible, even if the -+# sidebar_new_mail_only option is enabled. -+sidebar_whitelist '/home/user/mailbox1' -+sidebar_whitelist '/home/user/mailbox2' -+ -+# When searching for mailboxes containing new mail, should the search wrap -+# around when it reaches the end of the list? -+set sidebar_next_new_wrap = no -+ -+# The character to use as the divider between the Sidebar and the other Mutt -+# panels. -+# Note: Only the first character of this string is used. -+set sidebar_divider_char = '|' -+ -+# Display the Sidebar mailboxes using this format string. -+set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S' -+ -+# Sidebar will not refresh its list of mailboxes any more frequently than -+# this number of seconds. This will help reduce disk/network traffic. -+set sidebar_refresh_time = 60 -+ -+# Sort the mailboxes in the Sidebar using this method: -+# count - total number of messages -+# flagged - number of flagged messages -+# new - number of new messages -+# path - mailbox path -+# unsorted - do not sort the mailboxes -+set sidebar_sort_method = 'unsorted' -+ -+# -------------------------------------------------------------------------- -+# FUNCTIONS - shown with an example mapping -+# -------------------------------------------------------------------------- -+ -+# Move the highlight to the previous mailbox -+bind index,pager \Cp sidebar-prev -+ -+# Move the highlight to the next mailbox -+bind index,pager \Cn sidebar-next -+ -+# Open the highlighted mailbox -+bind index,pager \Co sidebar-open -+ -+# Move the highlight to the previous page -+# This is useful if you have a LOT of mailboxes. -+bind index,pager sidebar-page-up -+ -+# Move the highlight to the next page -+# This is useful if you have a LOT of mailboxes. -+bind index,pager sidebar-page-down -+ -+# Move the highlight to the previous mailbox containing new, or flagged, -+# mail. -+bind index,pager sidebar-prev-new -+ -+# Move the highlight to the next mailbox containing new, or flagged, mail. -+bind index,pager sidebar-next-new -+ -+# Toggle the visibility of the Sidebar. -+bind index,pager B sidebar-toggle-visible -+ -+# -------------------------------------------------------------------------- -+# COLORS - some unpleasant examples are given -+# -------------------------------------------------------------------------- -+# Note: All color operations are of the form: -+# color OBJECT FOREGROUND BACKGROUND -+ -+# Color of the current, open, mailbox -+# Note: This is a general Mutt option which colors all selected items. -+color indicator cyan black -+ -+# Color of the highlighted, but not open, mailbox. -+color sidebar_highlight black color8 -+ -+# Color of the divider separating the Sidebar from Mutt panels -+color sidebar_divider color8 black -+ -+# Color to give mailboxes containing flagged mail -+color sidebar_flagged red black -+ -+# Color to give mailboxes containing new mail -+color sidebar_new green black -+ -+# -------------------------------------------------------------------------- -+ -+# vim: syntax=muttrc -diff -urN mutt-1.6.1/doc/vimrc.sidebar mutt-1.6.1-sidebar/doc/vimrc.sidebar ---- mutt-1.6.1/doc/vimrc.sidebar 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/doc/vimrc.sidebar 2016-06-12 18:43:03.813500783 +0100 -@@ -0,0 +1,35 @@ -+" Vim syntax file for the mutt sidebar patch -+ -+syntax keyword muttrcVarBool skipwhite contained sidebar_folder_indent nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+syntax keyword muttrcVarBool skipwhite contained sidebar_new_mail_only nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+syntax keyword muttrcVarBool skipwhite contained sidebar_next_new_wrap nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+syntax keyword muttrcVarBool skipwhite contained sidebar_short_path nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+syntax keyword muttrcVarBool skipwhite contained sidebar_visible nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+ -+syntax keyword muttrcVarNum skipwhite contained sidebar_refresh_time nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+syntax keyword muttrcVarNum skipwhite contained sidebar_width nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -+ -+syntax keyword muttrcVarStr contained skipwhite sidebar_divider_char nextgroup=muttrcVarEqualsIdxFmt -+syntax keyword muttrcVarStr contained skipwhite sidebar_delim_chars nextgroup=muttrcVarEqualsIdxFmt -+syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcVarEqualsIdxFmt -+syntax keyword muttrcVarStr contained skipwhite sidebar_indent_string nextgroup=muttrcVarEqualsIdxFmt -+syntax keyword muttrcVarStr contained skipwhite sidebar_sort_method nextgroup=muttrcVarEqualsIdxFmt -+ -+syntax keyword muttrcCommand sidebar_whitelist -+ -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+syntax match muttrcFunction contained "\" -+ -+syntax keyword muttrcColorField contained sidebar_divider -+syntax keyword muttrcColorField contained sidebar_flagged -+syntax keyword muttrcColorField contained sidebar_highlight -+syntax keyword muttrcColorField contained sidebar_indicator -+syntax keyword muttrcColorField contained sidebar_new -+ -+" vim: syntax=vim -diff -urN mutt-1.6.1/filter.c mutt-1.6.1-sidebar/filter.c ---- mutt-1.6.1/filter.c 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-sidebar/filter.c 2016-06-12 18:43:03.835501127 +0100 -@@ -21,6 +21,7 @@ - #endif - - #include "mutt.h" -+#include "mutt_curses.h" - - #include - #include -@@ -34,6 +35,7 @@ - int fdin, int fdout, int fderr) - { - int pin[2], pout[2], perr[2], thepid; -+ char columns[11]; - - if (in) - { -@@ -117,6 +119,9 @@ - close (fderr); - } - -+ snprintf (columns, sizeof (columns), "%d", COLS - SidebarWidth); -+ setenv ("COLUMNS", columns, 1); -+ - execl (EXECSHELL, "sh", "-c", cmd, NULL); - _exit (127); - } -diff -urN mutt-1.6.1/flags.c mutt-1.6.1-sidebar/flags.c ---- mutt-1.6.1/flags.c 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-sidebar/flags.c 2016-06-12 18:43:03.956503013 +0100 -@@ -25,6 +25,10 @@ - #include "sort.h" - #include "mx.h" - -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif -+ - void _mutt_set_flag (CONTEXT *ctx, HEADER *h, int flag, int bf, int upd_ctx) - { - int changed = h->changed; -@@ -263,6 +267,9 @@ - */ - if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged)) - h->searched = 0; -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif - } - - void mutt_tag_set_flag (int flag, int bf) -diff -urN mutt-1.6.1/functions.h mutt-1.6.1-sidebar/functions.h ---- mutt-1.6.1/functions.h 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-sidebar/functions.h 2016-06-12 18:43:03.956503013 +0100 -@@ -168,6 +168,16 @@ - { "decrypt-copy", OP_DECRYPT_COPY, NULL }, - { "decrypt-save", OP_DECRYPT_SAVE, NULL }, - -+#ifdef USE_SIDEBAR -+ { "sidebar-next", OP_SIDEBAR_NEXT, NULL }, -+ { "sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL }, -+ { "sidebar-open", OP_SIDEBAR_OPEN, NULL }, -+ { "sidebar-page-down", OP_SIDEBAR_PAGE_DOWN, NULL }, -+ { "sidebar-page-up", OP_SIDEBAR_PAGE_UP, NULL }, -+ { "sidebar-prev", OP_SIDEBAR_PREV, NULL }, -+ { "sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL }, -+ { "sidebar-toggle-visible", OP_SIDEBAR_TOGGLE_VISIBLE, NULL }, -+#endif - - { NULL, 0, NULL } - }; -@@ -272,6 +282,17 @@ - - { "what-key", OP_WHAT_KEY, NULL }, - -+#ifdef USE_SIDEBAR -+ { "sidebar-next", OP_SIDEBAR_NEXT, NULL }, -+ { "sidebar-next-new", OP_SIDEBAR_NEXT_NEW, NULL }, -+ { "sidebar-open", OP_SIDEBAR_OPEN, NULL }, -+ { "sidebar-page-down", OP_SIDEBAR_PAGE_DOWN, NULL }, -+ { "sidebar-page-up", OP_SIDEBAR_PAGE_UP, NULL }, -+ { "sidebar-prev", OP_SIDEBAR_PREV, NULL }, -+ { "sidebar-prev-new", OP_SIDEBAR_PREV_NEW, NULL }, -+ { "sidebar-toggle-visible", OP_SIDEBAR_TOGGLE_VISIBLE, NULL }, -+#endif -+ - { NULL, 0, NULL } - }; - -diff -urN mutt-1.6.1/globals.h mutt-1.6.1-sidebar/globals.h ---- mutt-1.6.1/globals.h 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-sidebar/globals.h 2016-06-12 18:43:03.956503013 +0100 -@@ -118,6 +118,12 @@ - WHERE char *SendCharset; - WHERE char *Sendmail; - WHERE char *Shell; -+#ifdef USE_SIDEBAR -+WHERE char *SidebarDelimChars; -+WHERE char *SidebarDividerChar; -+WHERE char *SidebarFormat; -+WHERE char *SidebarIndentString; -+#endif - WHERE char *Signature; - WHERE char *SimpleSearch; - #if USE_SMTP -@@ -214,6 +220,14 @@ - WHERE short ScoreThresholdRead; - WHERE short ScoreThresholdFlag; - -+/* This isn't excluded from the build because it's too entwined in the code. -+ * For now. */ -+WHERE short SidebarWidth; -+#ifdef USE_SIDEBAR -+WHERE short SidebarRefreshTime; -+WHERE LIST *SidebarWhitelist INITVAL(0); -+#endif -+ - #ifdef USE_IMAP - WHERE short ImapKeepalive; - WHERE short ImapPipelineDepth; -diff -urN mutt-1.6.1/imap/command.c mutt-1.6.1-sidebar/imap/command.c ---- mutt-1.6.1/imap/command.c 2016-06-12 18:43:00.405447637 +0100 -+++ mutt-1.6.1-sidebar/imap/command.c 2016-06-12 18:43:03.839501189 +0100 -@@ -1016,6 +1016,14 @@ - opened */ - status->uidnext = oldun; - -+#ifdef USE_SIDEBAR -+ /* Make the sidebar show the correct numbers */ -+ if (status->messages) { -+ inc->msg_count = status->messages; -+ inc->msg_unread = status->unseen; -+ } -+#endif -+ - FREE (&value); - return; - } -diff -urN mutt-1.6.1/imap/imap.c mutt-1.6.1-sidebar/imap/imap.c ---- mutt-1.6.1/imap/imap.c 2016-06-12 18:43:00.405447637 +0100 -+++ mutt-1.6.1-sidebar/imap/imap.c 2016-06-12 18:43:03.958503044 +0100 -@@ -1535,7 +1535,11 @@ - - imap_munge_mbox_name (idata, munged, sizeof (munged), name); - snprintf (command, sizeof (command), -+#ifdef USE_SIDEBAR -+ "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged); -+#else - "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged); -+#endif - - if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0) - { -diff -urN mutt-1.6.1/init.c mutt-1.6.1-sidebar/init.c ---- mutt-1.6.1/init.c 2016-06-12 18:43:00.406447652 +0100 -+++ mutt-1.6.1-sidebar/init.c 2016-06-12 18:43:03.959503060 +0100 -@@ -2173,6 +2173,9 @@ - case DT_SORT_AUX: - map = SortAuxMethods; - break; -+ case DT_SORT_SIDEBAR: -+ map = SortSidebarMethods; -+ break; - default: - map = SortMethods; - break; -diff -urN mutt-1.6.1/init.h mutt-1.6.1-sidebar/init.h ---- mutt-1.6.1/init.h 2016-06-12 18:43:00.408447684 +0100 -+++ mutt-1.6.1-sidebar/init.h 2016-06-12 18:43:03.960503075 +0100 -@@ -42,11 +42,12 @@ - #define DTYPE(x) ((x) & DT_MASK) - - /* subtypes */ --#define DT_SUBTYPE_MASK 0xf0 -+#define DT_SUBTYPE_MASK 0xff0 - #define DT_SORT_ALIAS 0x10 - #define DT_SORT_BROWSER 0x20 - #define DT_SORT_KEYS 0x40 - #define DT_SORT_AUX 0x80 -+#define DT_SORT_SIDEBAR 0x100 - - /* flags to parse_set() */ - #define M_SET_INV (1<<0) /* default is to invert all vars */ -@@ -2665,6 +2666,147 @@ - ** Command to use when spawning a subshell. By default, the user's login - ** shell from \fC/etc/passwd\fP is used. - */ -+#ifdef USE_SIDEBAR -+ { "sidebar_divider_char", DT_STR, R_BOTH, UL &SidebarDividerChar, UL "|" }, -+ /* -+ ** .pp -+ ** This specifies the characters to be drawn between the sidebar (when -+ ** visible) and the other Mutt panels. ASCII and Unicode line-drawing -+ ** characters are supported. -+ */ -+ { "sidebar_delim_chars", DT_STR, R_NONE, UL &SidebarDelimChars, UL "/." }, -+ /* -+ ** .pp -+ ** This contains the list of characters which you would like to treat -+ ** as folder separators for displaying paths in the sidebar. -+ ** .pp -+ ** Local mail is often arranged in directories: `dir1/dir2/mailbox'. -+ ** .ts -+ ** set sidebar_delim_chars='/' -+ ** .te -+ ** .pp -+ ** IMAP mailboxes are often named: `folder1.folder2.mailbox'. -+ ** .ts -+ ** set sidebar_delim_chars='.' -+ ** .te -+ ** .pp -+ ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_indent_string. -+ */ -+ { "sidebar_folder_indent", DT_BOOL, R_BOTH, OPTSIDEBARFOLDERINDENT, 0 }, -+ /* -+ ** .pp -+ ** Set this to indent mailboxes in the sidebar. -+ ** .pp -+ ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_indent_string, $$sidebar_delim_chars. -+ */ -+ { "sidebar_format", DT_STR, R_NONE, UL &SidebarFormat, UL "%B%?F? [%F]?%* %?N?%N/?%S" }, -+ /* -+ ** .pp -+ ** This variable allows you to customize the sidebar display. This string is -+ ** similar to $$index_format, but has its own set of \fCprintf(3)\fP-like -+ ** sequences: -+ ** .dl -+ ** .dt %B .dd Name of the mailbox -+ ** .dt %S .dd * Size of mailbox (total number of messages) -+ ** .dt %N .dd * Number of New messages in the mailbox -+ ** .dt %F .dd * Number of Flagged messages in the mailbox -+ ** .dt %! .dd ``!'' : one flagged message; -+ ** ``!!'' : two flagged messages; -+ ** ``n!'' : n flagged messages (for n > 2). -+ ** Otherwise prints nothing. -+ ** .dt %d .dd * @ Number of deleted messages -+ ** .dt %L .dd * @ Number of messages after limiting -+ ** .dt %t .dd * @ Number of tagged messages -+ ** .dt %>X .dd right justify the rest of the string and pad with ``X'' -+ ** .dt %|X .dd pad to the end of the line with ``X'' -+ ** .dt %*X .dd soft-fill with character ``X'' as pad -+ ** .de -+ ** .pp -+ ** * = Can be optionally printed if nonzero -+ ** @ = Only applicable to the current folder -+ */ -+ { "sidebar_indent_string", DT_STR, R_BOTH, UL &SidebarIndentString, UL " " }, -+ /* -+ ** .pp -+ ** This specifies the string that is used to indent mailboxes in the sidebar. -+ ** It defaults to two spaces. -+ ** .pp -+ ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_delim_chars. -+ */ -+ { "sidebar_new_mail_only", DT_BOOL, R_BOTH, OPTSIDEBARNEWMAILONLY, 0 }, -+ /* -+ ** .pp -+ ** When set, the sidebar will only display mailboxes containing new, or -+ ** flagged, mail. -+ ** .pp -+ ** \fBSee also:\fP $sidebar_whitelist. -+ */ -+ { "sidebar_next_new_wrap", DT_BOOL, R_BOTH, UL OPTSIDEBARNEXTNEWWRAP, 0 }, -+ /* -+ ** .pp -+ ** When set, the \fC\fP command will not stop and the end of -+ ** the list of mailboxes, but wrap around to the beginning. The -+ ** \fC\fP command is similarly affected, wrapping around to -+ ** the end of the list. -+ */ -+ { "sidebar_refresh_time", DT_NUM, R_BOTH, UL &SidebarRefreshTime, 60 }, -+ /* -+ ** .pp -+ ** Set sidebar_refresh_time to the minimum number of seconds between refreshes. -+ ** This will reduce network traffic. -+ ** .pp -+ ** \fBNote:\fP Set to 0 to disable refreshing. -+ */ -+ { "sidebar_short_path", DT_BOOL, R_BOTH, OPTSIDEBARSHORTPATH, 0 }, -+ /* -+ ** .pp -+ ** By default the sidebar will show the mailbox's path, relative to the -+ ** $$folder variable. Setting \fCsidebar_shortpath=yes\fP will shorten the -+ ** names relative to the previous name. Here's an example: -+ ** .dl -+ ** .dt \fBshortpath=no\fP .dd \fBshortpath=yes\fP .dd \fBshortpath=yes, folderindent=yes, indentstr=".."\fP -+ ** .dt \fCfruit\fP .dd \fCfruit\fP .dd \fCfruit\fP -+ ** .dt \fCfruit.apple\fP .dd \fCapple\fP .dd \fC..apple\fP -+ ** .dt \fCfruit.banana\fP .dd \fCbanana\fP .dd \fC..banana\fP -+ ** .dt \fCfruit.cherry\fP .dd \fCcherry\fP .dd \fC..cherry\fP -+ ** .de -+ ** .pp -+ ** \fBSee also:\fP $$sidebar_delim_chars, $$sidebar_folder_indent, $$sidebar_indent_string. -+ */ -+ { "sidebar_sort_method", DT_SORT|DT_SORT_SIDEBAR, R_NONE, UL &SidebarSortMethod, SORT_ORDER }, -+ /* -+ ** .pp -+ ** Specifies how to sort entries in the file browser. By default, the -+ ** entries are sorted alphabetically. Valid values: -+ ** .il -+ ** .dd alpha (alphabetically) -+ ** .dd count (all message count) -+ ** .dd date -+ ** .dd desc (description) -+ ** .dd new (new message count) -+ ** .dd size -+ ** .dd unsorted -+ ** .ie -+ ** .pp -+ ** You may optionally use the ``reverse-'' prefix to specify reverse sorting -+ ** order (example: ``\fCset sort_browser=reverse-date\fP''). -+ */ -+ { "sidebar_visible", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 }, -+ /* -+ ** .pp -+ ** This specifies whether or not to show sidebar. The sidebar shows a list of -+ ** all your mailboxes. -+ ** .pp -+ ** \fBSee also:\fP $$sidebar_format, $$sidebar_width -+ */ -+ { "sidebar_width", DT_NUM, R_BOTH, UL &SidebarWidth, 0 }, -+ /* -+ ** .pp -+ ** This controls the width of the sidebar. It is measured in screen columns. -+ ** For example: sidebar_width=20 could display 20 ASCII characters, or 10 -+ ** Chinese characters. -+ */ -+#endif - { "sig_dashes", DT_BOOL, R_NONE, OPTSIGDASHES, 1 }, - /* - ** .pp -@@ -3652,6 +3794,19 @@ - { NULL, 0 } - }; - -+const struct mapping_t SortSidebarMethods[] = { -+ { "alpha", SORT_PATH }, -+ { "count", SORT_COUNT }, -+ { "desc", SORT_DESC }, -+ { "flagged", SORT_FLAGGED }, -+ { "mailbox-order", SORT_ORDER }, -+ { "name", SORT_PATH }, -+ { "new", SORT_COUNT_NEW }, -+ { "path", SORT_PATH }, -+ { "unsorted", SORT_ORDER }, -+ { NULL, 0 } -+}; -+ - - /* functions used to parse commands in a rc file */ - -@@ -3741,6 +3896,9 @@ - { "send-hook", mutt_parse_hook, M_SENDHOOK }, - { "send2-hook", mutt_parse_hook, M_SEND2HOOK }, - { "set", parse_set, 0 }, -+#ifdef USE_SIDEBAR -+ { "sidebar_whitelist",parse_list, UL &SidebarWhitelist }, -+#endif - { "source", parse_source, 0 }, - { "spam", parse_spam_list, M_SPAM }, - { "nospam", parse_spam_list, M_NOSPAM }, -diff -urN mutt-1.6.1/keymap.c mutt-1.6.1-sidebar/keymap.c ---- mutt-1.6.1/keymap.c 2016-06-12 18:43:00.408447684 +0100 -+++ mutt-1.6.1-sidebar/keymap.c 2016-06-12 18:43:03.960503075 +0100 -@@ -453,6 +453,9 @@ - } - #endif - -+ /* update sidebar stats */ -+ mutt_buffy_check(0); -+ - timeout (i * 1000); - tmp = mutt_getch(); - timeout (-1); -diff -urN mutt-1.6.1/mailbox.h mutt-1.6.1-sidebar/mailbox.h ---- mutt-1.6.1/mailbox.h 2016-06-12 18:43:00.408447684 +0100 -+++ mutt-1.6.1-sidebar/mailbox.h 2016-06-12 18:43:03.960503075 +0100 -@@ -27,6 +27,9 @@ - #define M_NEWFOLDER (1<<4) /* create a new folder - same as M_APPEND, but uses - * safe_fopen() for mbox-style folders. - */ -+#ifdef USE_SIDEBAR -+#define M_PEEK (1<<5) /* revert atime back after taking a look (if applicable) */ -+#endif - - /* mx_open_new_message() */ - #define M_ADD_FROM (1<<0) /* add a From_ line */ -diff -urN mutt-1.6.1/main.c mutt-1.6.1-sidebar/main.c ---- mutt-1.6.1/main.c 2016-06-12 18:43:00.409447699 +0100 -+++ mutt-1.6.1-sidebar/main.c 2016-06-12 18:43:03.961503091 +0100 -@@ -31,6 +31,9 @@ - #include "url.h" - #include "mutt_crypt.h" - #include "mutt_idna.h" -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif - - #ifdef USE_SASL - #include "mutt_sasl.h" -@@ -485,6 +488,12 @@ - "-USE_HCACHE " - #endif - -+#ifdef USE_SIDEBAR -+ "+USE_SIDEBAR " -+#else -+ "-USE_SIDEBAR " -+#endif -+ - ); - - #ifdef ISPELL -@@ -557,7 +566,11 @@ - - int main (int argc, char **argv) - { -+#ifdef USE_SIDEBAR -+ char folder[PATH_MAX] = ""; -+#else - char folder[_POSIX_PATH_MAX] = ""; -+#endif - char *subject = NULL; - char *includeFile = NULL; - char *draftFile = NULL; -@@ -828,6 +841,9 @@ - clear (); - mutt_error = mutt_curses_error; - mutt_message = mutt_curses_message; -+#ifdef USE_SIDEBAR -+ mutt_sb_init(); -+#endif - } - - /* Create the Maildir directory if it doesn't exist. */ -@@ -1184,6 +1200,15 @@ - strfcpy (folder, NONULL(Spoolfile), sizeof (folder)); - mutt_expand_path (folder, sizeof (folder)); - -+#ifdef USE_SIDEBAR -+ { -+ char tmpfolder[PATH_MAX] = ""; -+ strfcpy (tmpfolder, folder, sizeof (tmpfolder)); -+ if (!realpath (tmpfolder, folder)) -+ strfcpy (folder, tmpfolder, sizeof (tmpfolder)); -+ } -+#endif -+ - mutt_str_replace (&CurrentFolder, folder); - mutt_str_replace (&LastFolder, folder); - -@@ -1206,6 +1231,9 @@ - if((Context = mx_open_mailbox (folder, ((flags & M_RO) || option (OPTREADONLY)) ? M_READONLY : 0, NULL)) - || !explicit_folder) - { -+#ifdef USE_SIDEBAR -+ mutt_sb_set_open_buffy (folder); -+#endif - mutt_index_menu (); - if (Context) - FREE (&Context); -diff -urN mutt-1.6.1/Makefile.am mutt-1.6.1-sidebar/Makefile.am ---- mutt-1.6.1/Makefile.am 2016-06-12 18:43:00.389447388 +0100 -+++ mutt-1.6.1-sidebar/Makefile.am 2016-06-12 18:43:03.944502826 +0100 -@@ -56,7 +56,7 @@ - mutt_idna.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \ - mutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \ - pgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \ -- smime.c smtp.c utf8.c wcwidth.c \ -+ sidebar.c smime.c smtp.c utf8.c wcwidth.c \ - bcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h - - EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \ -@@ -71,7 +71,7 @@ - mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \ - README.SSL smime.h group.h \ - muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \ -- ChangeLog mkchangelog.sh mutt_idna.h \ -+ ChangeLog mkchangelog.sh mutt_idna.h sidebar.h OPS.sidebar \ - snprintf.c regex.c crypt-gpgme.h hcachever.sh.in sys_socket.h \ - txt2c.c txt2c.sh version.sh check_sec.sh - -@@ -129,9 +129,9 @@ - keymap_defs.h: $(OPS) $(srcdir)/gen_defs - $(srcdir)/gen_defs $(OPS) > keymap_defs.h - --keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs -+keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs - rm -f $@ -- $(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.PGP \ -+ $(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.PGP \ - $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME \ - > keymap_alldefs.h - -diff -urN mutt-1.6.1/mbox.c mutt-1.6.1-sidebar/mbox.c ---- mutt-1.6.1/mbox.c 2016-06-12 18:43:00.409447699 +0100 -+++ mutt-1.6.1-sidebar/mbox.c 2016-06-12 18:43:03.961503091 +0100 -@@ -100,6 +100,9 @@ - mutt_perror (ctx->path); - return (-1); - } -+#ifdef USE_SIDEBAR -+ ctx->atime = sb.st_atime; -+#endif - ctx->mtime = sb.st_mtime; - ctx->size = sb.st_size; - -@@ -251,6 +254,9 @@ - - ctx->size = sb.st_size; - ctx->mtime = sb.st_mtime; -+#ifdef USE_SIDEBAR -+ ctx->atime = sb.st_atime; -+#endif - - #ifdef NFS_ATTRIBUTE_HACK - if (sb.st_mtime > sb.st_atime) -diff -urN mutt-1.6.1/menu.c mutt-1.6.1-sidebar/menu.c ---- mutt-1.6.1/menu.c 2016-06-12 18:43:00.409447699 +0100 -+++ mutt-1.6.1-sidebar/menu.c 2016-06-12 18:43:03.961503091 +0100 -@@ -24,6 +24,9 @@ - #include "mutt_curses.h" - #include "mutt_menu.h" - #include "mbyte.h" -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif - - char* SearchBuffers[MENU_MAX]; - -@@ -184,7 +187,7 @@ - { - char *scratch = safe_strdup (s); - int shift = option (OPTARROWCURSOR) ? 3 : 0; -- int cols = COLS - shift; -+ int cols = COLS - shift - SidebarWidth; - - mutt_format_string (s, n, cols, cols, FMT_LEFT, ' ', scratch, mutt_strlen (scratch), 1); - s[n - 1] = 0; -@@ -237,6 +240,9 @@ - int do_color; - int attr; - -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif - for (i = menu->top; i < menu->top + menu->pagelen; i++) - { - if (i < menu->max) -@@ -247,7 +253,7 @@ - menu_pad_string (buf, sizeof (buf)); - - ATTRSET(attr); -- move(i - menu->top + menu->offset, 0); -+ move(i - menu->top + menu->offset, SidebarWidth); - do_color = 1; - - if (i == menu->current) -@@ -270,7 +276,11 @@ - else - { - NORMAL_COLOR; -+#ifdef USE_SIDEBAR -+ CLEARLINE_WIN(i - menu->top + menu->offset); -+#else - CLEARLINE(i - menu->top + menu->offset); -+#endif - } - } - NORMAL_COLOR; -@@ -287,7 +297,7 @@ - return; - } - -- move (menu->oldcurrent + menu->offset - menu->top, 0); -+ move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth); - ATTRSET(menu->color (menu->oldcurrent)); - - if (option (OPTARROWCURSOR)) -@@ -299,13 +309,13 @@ - { - menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent); - menu_pad_string (buf, sizeof (buf)); -- move (menu->oldcurrent + menu->offset - menu->top, 3); -+ move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3); - print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1); - } - - /* now draw it in the new location */ - SETCOLOR(MT_COLOR_INDICATOR); -- mvaddstr(menu->current + menu->offset - menu->top, 0, "->"); -+ mvaddstr(menu->current + menu->offset - menu->top, SidebarWidth, "->"); - } - else - { -@@ -318,7 +328,7 @@ - menu_make_entry (buf, sizeof (buf), menu, menu->current); - menu_pad_string (buf, sizeof (buf)); - SETCOLOR(MT_COLOR_INDICATOR); -- move(menu->current - menu->top + menu->offset, 0); -+ move(menu->current - menu->top + menu->offset, SidebarWidth); - print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0); - } - menu->redraw &= REDRAW_STATUS; -@@ -330,7 +340,7 @@ - char buf[LONG_STRING]; - int attr = menu->color (menu->current); - -- move (menu->current + menu->offset - menu->top, 0); -+ move (menu->current + menu->offset - menu->top, SidebarWidth); - menu_make_entry (buf, sizeof (buf), menu, menu->current); - menu_pad_string (buf, sizeof (buf)); - -@@ -873,7 +883,7 @@ - - - if (option (OPTARROWCURSOR)) -- move (menu->current - menu->top + menu->offset, 2); -+ move (menu->current - menu->top + menu->offset, SidebarWidth + 2); - else if (option (OPTBRAILLEFRIENDLY)) - move (menu->current - menu->top + menu->offset, 0); - else -diff -urN mutt-1.6.1/mh.c mutt-1.6.1-sidebar/mh.c ---- mutt-1.6.1/mh.c 2016-06-12 18:43:00.410447715 +0100 -+++ mutt-1.6.1-sidebar/mh.c 2016-06-12 18:43:03.962503107 +0100 -@@ -295,6 +295,48 @@ - mhs_free_sequences (&mhs); - } - -+#ifdef USE_SIDEBAR -+/** -+ * mh_buffy_update - Update messages counts for an mh mailbox -+ * @mailbox: BUFFY representing a maildir mailbox -+ * -+ * Read through an mh mailbox and count messages. Save the number of new, -+ * flagged messages and a timestamp for now. -+ */ -+void -+mh_buffy_update (BUFFY *mailbox) -+{ -+ int i; -+ struct mh_sequences mhs; -+ -+ if (!mailbox) -+ return; -+ -+ if (!option (OPTSIDEBAR)) -+ return; -+ -+ memset (&mhs, 0, sizeof (mhs)); -+ -+ if (mh_read_sequences (&mhs, mailbox->path) < 0) -+ return; -+ -+ mailbox->msg_count = 0; -+ mailbox->msg_unread = 0; -+ mailbox->msg_flagged = 0; -+ -+ for (i = 0; i <= mhs.max; i++) -+ { -+ mailbox->msg_count++; -+ if (mhs_check (&mhs, i) & MH_SEQ_UNSEEN) -+ mailbox->msg_unread++; -+ if (mhs_check (&mhs, i) & MH_SEQ_FLAGGED) -+ mailbox->msg_flagged++; -+ } -+ mhs_free_sequences (&mhs); -+ mailbox->sb_last_checked = time (NULL); -+} -+#endif -+ - static int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt) - { - int fd; -diff -urN mutt-1.6.1/mutt_curses.h mutt-1.6.1-sidebar/mutt_curses.h ---- mutt-1.6.1/mutt_curses.h 2016-06-12 18:43:00.410447715 +0100 -+++ mutt-1.6.1-sidebar/mutt_curses.h 2016-06-12 18:43:03.962503107 +0100 -@@ -64,6 +64,9 @@ - #undef lines - #endif /* lines */ - -+#ifdef USE_SIDEBAR -+#define CLEARLINE_WIN(x) move (x,SidebarWidth), clrtoeol() -+#endif - #define CLEARLINE(x) move(x,0), clrtoeol() - #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x) - #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0) -@@ -124,6 +127,14 @@ - MT_COLOR_UNDERLINE, - MT_COLOR_INDEX, - MT_COLOR_PROMPT, -+#ifdef USE_SIDEBAR -+ MT_COLOR_DIVIDER, -+ MT_COLOR_FLAGGED, -+ MT_COLOR_HIGHLIGHT, -+ MT_COLOR_NEW, -+ MT_COLOR_SB_INDICATOR, -+ MT_COLOR_SB_SPOOLFILE, -+#endif - MT_COLOR_MAX - }; - -@@ -163,12 +174,16 @@ - - static inline int mutt_term_width(short wrap) - { -+ int cols = COLS; -+#ifdef USE_SIDEBAR -+ cols -= SidebarWidth; -+#endif - if (wrap < 0) -- return COLS > -wrap ? COLS + wrap : COLS; -+ return cols > -wrap ? cols + wrap : cols; - else if (wrap) -- return wrap < COLS ? wrap : COLS; -+ return wrap < cols ? wrap : cols; - else -- return COLS; -+ return cols; - } - - extern int *ColorQuote; -diff -urN mutt-1.6.1/mutt.h mutt-1.6.1-sidebar/mutt.h ---- mutt-1.6.1/mutt.h 2016-06-12 18:43:00.410447715 +0100 -+++ mutt-1.6.1-sidebar/mutt.h 2016-06-12 18:43:03.962503107 +0100 -@@ -428,6 +428,13 @@ - OPTSAVEEMPTY, - OPTSAVENAME, - OPTSCORE, -+#ifdef USE_SIDEBAR -+ OPTSIDEBAR, -+ OPTSIDEBARFOLDERINDENT, -+ OPTSIDEBARNEWMAILONLY, -+ OPTSIDEBARNEXTNEWWRAP, -+ OPTSIDEBARSHORTPATH, -+#endif - OPTSIGDASHES, - OPTSIGONTOP, - OPTSORTRE, -@@ -872,6 +879,9 @@ - { - char *path; - FILE *fp; -+#ifdef USE_SIDEBAR -+ time_t atime; -+#endif - time_t mtime; - off_t size; - off_t vsize; -@@ -906,6 +916,9 @@ - unsigned int quiet : 1; /* inhibit status messages? */ - unsigned int collapsed : 1; /* are all threads collapsed? */ - unsigned int closing : 1; /* mailbox is being closed */ -+#ifdef USE_SIDEBAR -+ unsigned int peekonly : 1; /* just taking a glance, revert atime */ -+#endif - - /* driver hooks */ - void *data; /* driver specific data */ -diff -urN mutt-1.6.1/muttlib.c mutt-1.6.1-sidebar/muttlib.c ---- mutt-1.6.1/muttlib.c 2016-06-12 18:43:00.411447731 +0100 -+++ mutt-1.6.1-sidebar/muttlib.c 2016-06-12 18:43:03.963503122 +0100 -@@ -1282,7 +1282,7 @@ - pl = pw = 1; - - /* see if there's room to add content, else ignore */ -- if ((col < COLS && wlen < destlen) || soft) -+ if ((col < (COLS - SidebarWidth) && (wlen < destlen)) || soft) - { - int pad; - -@@ -1293,7 +1293,7 @@ - - /* try to consume as many columns as we can, if we don't have - * memory for that, use as much memory as possible */ -- pad = (COLS - col - wid) / pw; -+ pad = (COLS - SidebarWidth - col - wid) / pw; - if (pad > 0 && wlen + (pad * pl) + len > destlen) - pad = ((signed)(destlen - wlen - len)) / pl; - if (pad > 0) -@@ -1312,13 +1312,13 @@ - /* \0-terminate dest for length computation in mutt_wstr_trunc() */ - *wptr = 0; - /* make sure right part is at most as wide as display */ -- len = mutt_wstr_trunc (buf, destlen, COLS-offset, &wid); -+ len = mutt_wstr_trunc (buf, destlen, COLS - offset - SidebarWidth, &wid); - /* truncate left so that right part fits completely in */ - wlen = mutt_wstr_trunc (dest, destlen - len, col + pad*pw -offset, &col); - wptr = dest + wlen; - } - if (len + wlen > destlen) -- len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL); -+ len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL); - memcpy (wptr, buf, len); - wptr += len; - wlen += len; -diff -urN mutt-1.6.1/mutt_menu.h mutt-1.6.1-sidebar/mutt_menu.h ---- mutt-1.6.1/mutt_menu.h 2016-06-12 18:43:00.410447715 +0100 -+++ mutt-1.6.1-sidebar/mutt_menu.h 2016-06-12 18:43:03.962503107 +0100 -@@ -34,6 +34,9 @@ - #define REDRAW_FULL (1<<5) - #define REDRAW_BODY (1<<6) - #define REDRAW_SIGWINCH (1<<7) -+#ifdef USE_SIDEBAR -+#define REDRAW_SIDEBAR (1<<8) -+#endif - - #define M_MODEFMT "-- Mutt: %s" - -diff -urN mutt-1.6.1/mx.c mutt-1.6.1-sidebar/mx.c ---- mutt-1.6.1/mx.c 2016-06-12 18:43:00.411447731 +0100 -+++ mutt-1.6.1-sidebar/mx.c 2016-06-12 18:43:03.963503122 +0100 -@@ -29,6 +29,9 @@ - #include "copy.h" - #include "keymap.h" - #include "url.h" -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif - - #ifdef USE_IMAP - #include "imap.h" -@@ -580,6 +583,7 @@ - * M_APPEND open mailbox for appending - * M_READONLY open mailbox in read-only mode - * M_QUIET only print error messages -+ * M_PEEK revert atime where applicable - * ctx if non-null, context struct to use - */ - CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx) -@@ -602,6 +606,10 @@ - ctx->quiet = 1; - if (flags & M_READONLY) - ctx->readonly = 1; -+#ifdef USE_SIDEBAR -+ if (flags & M_PEEK) -+ ctx->peekonly = 1; -+#endif - - if (flags & (M_APPEND|M_NEWFOLDER)) - { -@@ -705,8 +713,21 @@ - if(!ctx) - return; - -+#ifdef USE_SIDEBAR -+ /* fix up the times so buffy won't get confused */ -+ struct utimbuf ut; -+ if (ctx->peekonly && ctx->path && (ctx->mtime > ctx->atime)) { -+ ut.actime = ctx->atime; -+ ut.modtime = ctx->mtime; -+ utime (ctx->path, &ut); -+ } -+#endif -+ - /* never announce that a mailbox we've just left has new mail. #3290 - * XXX: really belongs in mx_close_mailbox, but this is a nice hook point */ -+#ifdef USE_SIDEBAR -+ if (!ctx->peekonly) -+#endif - mutt_buffy_setnotified(ctx->path); - - if (ctx->mx_close) -@@ -812,6 +833,12 @@ - if (!ctx->hdrs[i]->deleted && ctx->hdrs[i]->read - && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED))) - read_msgs++; -+#ifdef USE_SIDEBAR -+ if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->read) -+ ctx->unread--; -+ if (ctx->hdrs[i]->deleted && ctx->hdrs[i]->flagged) -+ ctx->flagged--; -+#endif - } - - if (read_msgs && quadoption (OPT_MOVE) != M_NO) -@@ -981,6 +1008,11 @@ - !mutt_is_spool(ctx->path) && !option (OPTSAVEEMPTY)) - mx_unlink_empty (ctx->path); - -+#ifdef USE_SIDEBAR -+ ctx->msgcount -= ctx->deleted; -+ mutt_sb_set_buffystats (ctx); -+#endif -+ - mx_fastclose_mailbox (ctx); - - return 0; -diff -urN mutt-1.6.1/mx.h mutt-1.6.1-sidebar/mx.h ---- mutt-1.6.1/mx.h 2016-06-12 18:43:00.411447731 +0100 -+++ mutt-1.6.1-sidebar/mx.h 2016-06-12 18:43:03.963503122 +0100 -@@ -26,6 +26,7 @@ - #define _MX_H - - #include "mailbox.h" -+#include "buffy.h" - - /* supported mailbox formats */ - enum -@@ -57,6 +58,9 @@ - int mh_read_dir (CONTEXT *, const char *); - int mh_sync_mailbox (CONTEXT *, int *); - int mh_check_mailbox (CONTEXT *, int *); -+#ifdef USE_SIDEBAR -+void mh_buffy_update (BUFFY *mailbox); -+#endif - int mh_check_empty (const char *); - - int maildir_read_dir (CONTEXT *); -diff -urN mutt-1.6.1/OPS.SIDEBAR mutt-1.6.1-sidebar/OPS.SIDEBAR ---- mutt-1.6.1/OPS.SIDEBAR 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/OPS.SIDEBAR 2016-06-12 18:43:03.944502826 +0100 -@@ -0,0 +1,8 @@ -+OP_SIDEBAR_NEXT "Move the highlight to next mailbox" -+OP_SIDEBAR_NEXT_NEW "Move the highlight to next mailbox with new mail" -+OP_SIDEBAR_OPEN "Open highlighted mailbox" -+OP_SIDEBAR_PAGE_DOWN "Scroll the Sidebar down 1 page" -+OP_SIDEBAR_PAGE_UP "Scroll the Sidebar up 1 page" -+OP_SIDEBAR_PREV "Move the highlight to previous mailbox" -+OP_SIDEBAR_PREV_NEW "Move the highlight to previous mailbox with new mail" -+OP_SIDEBAR_TOGGLE_VISIBLE "Make the Sidebar (in)visible" -diff -urN mutt-1.6.1/pager.c mutt-1.6.1-sidebar/pager.c ---- mutt-1.6.1/pager.c 2016-06-12 18:43:00.412447746 +0100 -+++ mutt-1.6.1-sidebar/pager.c 2016-06-12 18:43:03.964503138 +0100 -@@ -29,6 +29,9 @@ - #include "pager.h" - #include "attach.h" - #include "mbyte.h" -+#ifdef USE_SIDEBAR -+#include "sidebar.h" -+#endif - - #include "mutt_crypt.h" - -@@ -1491,7 +1494,7 @@ - * a newline (grr!). - */ - #ifndef USE_SLANG_CURSES -- if (col < COLS) -+ if (col < (COLS - SidebarWidth)) - #endif - addch ('\n'); - -@@ -1573,6 +1576,7 @@ - - int bodyoffset = 1; /* offset of first line of real text */ - int statusoffset = 0; /* offset for the status bar */ -+ int statuswidth = COLS; - int helpoffset = LINES - 2; /* offset for the help bar. */ - int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */ - -@@ -1747,7 +1751,7 @@ - if ((redraw & REDRAW_BODY) || topline != oldtopline) - { - do { -- move (bodyoffset, 0); -+ move (bodyoffset, SidebarWidth); - curline = oldtopline = topline; - lines = 0; - force_redraw = 0; -@@ -1760,6 +1764,9 @@ - &QuoteList, &q_level, &force_redraw, &SearchRE) > 0) - lines++; - curline++; -+#ifdef USE_SIDEBAR -+ move (lines + bodyoffset, SidebarWidth); -+#endif - } - last_offset = lineInfo[curline].offset; - } while (force_redraw); -@@ -1772,6 +1779,9 @@ - addch ('~'); - addch ('\n'); - lines++; -+#ifdef USE_SIDEBAR -+ move (lines + bodyoffset, SidebarWidth); -+#endif - } - NORMAL_COLOR; - -@@ -1789,29 +1799,49 @@ - hfi.ctx = Context; - hfi.pager_progress = pager_progress_str; - -+#ifdef USE_SIDEBAR -+ statuswidth = COLS; -+ if (option (OPTSTATUSONTOP) && (PagerIndexLines > 0)) -+ statuswidth -= SidebarWidth; -+#endif -+ - if (last_pos < sb.st_size - 1) - snprintf(pager_progress_str, sizeof(pager_progress_str), OFF_T_FMT "%%", (100 * last_offset / sb.st_size)); - else - strfcpy(pager_progress_str, (topline == 0) ? "all" : "end", sizeof(pager_progress_str)); - - /* print out the pager status bar */ -- move (statusoffset, 0); -+ move (statusoffset, SidebarWidth); - SETCOLOR (MT_COLOR_STATUS); -+#ifdef USE_SIDEBAR -+ short sw = SidebarWidth; -+ if (option (OPTSTATUSONTOP) && PagerIndexLines > 0) { -+ CLEARLINE_WIN (statusoffset); -+ } else { -+ CLEARLINE (statusoffset); -+ /* Temporarily lie about the sidebar width */ -+ SidebarWidth = 0; -+ } -+#endif - - if (IsHeader (extra) || IsMsgAttach (extra)) - { -- size_t l1 = COLS * MB_LEN_MAX; -+ size_t l1 = statuswidth * MB_LEN_MAX; - size_t l2 = sizeof (buffer); - hfi.hdr = (IsHeader (extra)) ? extra->hdr : extra->bdy->hdr; - mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT); -- mutt_paddstr (COLS, buffer); -+ mutt_paddstr (statuswidth, buffer); - } - else - { - char bn[STRING]; - snprintf (bn, sizeof (bn), "%s (%s)", banner, pager_progress_str); -- mutt_paddstr (COLS, bn); -+ mutt_paddstr (statuswidth, bn); - } -+#ifdef USE_SIDEBAR -+ if (!option (OPTSTATUSONTOP) || PagerIndexLines == 0) -+ SidebarWidth = sw; /* Restore the sidebar width */ -+#endif - NORMAL_COLOR; - if (option(OPTTSENABLED) && TSSupported) - { -@@ -1827,16 +1857,26 @@ - /* redraw the pager_index indicator, because the - * flags for this message might have changed. */ - menu_redraw_current (index); -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif - - /* print out the index status bar */ - menu_status_line (buffer, sizeof (buffer), index, NONULL(Status)); - -- move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0); -+ move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), -+ (option(OPTSTATUSONTOP) ? 0: SidebarWidth)); - SETCOLOR (MT_COLOR_STATUS); -- mutt_paddstr (COLS, buffer); -+ mutt_paddstr (COLS - (option(OPTSTATUSONTOP) ? 0 : SidebarWidth), buffer); - NORMAL_COLOR; - } - -+#ifdef USE_SIDEBAR -+ /* if we're not using the index, update every time */ -+ if (index == 0) -+ mutt_sb_draw(); -+#endif -+ - redraw = 0; - - if (option(OPTBRAILLEFRIENDLY)) { -@@ -2498,8 +2538,12 @@ - ch = 0; - } - -- if (option (OPTFORCEREDRAWPAGER)) -+ if (option (OPTFORCEREDRAWPAGER)) { - redraw = REDRAW_FULL; -+#ifdef USE_SIDEBAR -+ mutt_sb_draw(); -+#endif -+ } - unset_option (OPTFORCEREDRAWINDEX); - unset_option (OPTFORCEREDRAWPAGER); - break; -@@ -2777,6 +2821,22 @@ - mutt_what_key (); - break; - -+#ifdef USE_SIDEBAR -+ case OP_SIDEBAR_NEXT: -+ case OP_SIDEBAR_NEXT_NEW: -+ case OP_SIDEBAR_PAGE_DOWN: -+ case OP_SIDEBAR_PAGE_UP: -+ case OP_SIDEBAR_PREV: -+ case OP_SIDEBAR_PREV_NEW: -+ mutt_sb_change_mailbox (ch); -+ break; -+ -+ case OP_SIDEBAR_TOGGLE_VISIBLE: -+ toggle_option (OPTSIDEBAR); -+ redraw = REDRAW_FULL; -+ break; -+#endif -+ - default: - ch = -1; - break; -diff -urN mutt-1.6.1/PATCHES mutt-1.6.1-sidebar/PATCHES ---- mutt-1.6.1/PATCHES 2016-06-12 18:43:00.395447481 +0100 -+++ mutt-1.6.1-sidebar/PATCHES 2016-06-12 18:43:03.949502904 +0100 -@@ -0,0 +1 @@ -+patch-sidebar-neo-20160612 -diff -urN mutt-1.6.1/README.sidebar mutt-1.6.1-sidebar/README.sidebar ---- mutt-1.6.1/README.sidebar 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/README.sidebar 2016-06-12 18:43:03.792500456 +0100 -@@ -0,0 +1,145 @@ -+Sidebar Patch -+============= -+ -+ Overview of mailboxes -+ -+ NOTES: -+ -+ If you haven't used the sidebar before, you might like to read the -+ Sidebar Introduction: -+ -+ http://www.neomutt.org/sidebar-intro.html -+ -+ If you have used an older version of the Sidebar, please note that some -+ of the configuration has changed. -+ -+ http://www.neomutt.org/sidebar-intro.html#intro-sidebar-config-changes -+ -+Patch -+----- -+ -+ To check if Mutt supports "Sidebar", look for "+USE_SIDEBAR" in the mutt -+ version. -+ -+ Dependencies -+ * mutt-1.6.1 -+ -+Introduction -+------------ -+ -+ The Sidebar shows a list of all your mailboxes. The list can be turned on -+ and off, it can be themed and the list style can be configured. -+ -+ This part of the manual is a reference guide. If you want a simple -+ introduction with examples see the Sidebar Howto. If you just want to get -+ started, you could use the sample Sidebar muttrc. -+ -+ This version of Sidebar is based on Terry Chan's [2015-11-11 -+ release](http://www.lunar-linux.org/mutt-sidebar/). It contains many new -+ features, lots of bugfixes. -+ -+Variables -+--------- -+ -+ Sidebar Variables -+ -+ | Name | Type | Default | -+ |-------------------------|---------|-----------------------------| -+ | 'sidebar_delim_chars' | string | '/.' | -+ | 'sidebar_divider_char' | string | '|' | -+ | 'sidebar_folder_indent' | boolean | 'no' | -+ | 'sidebar_format' | string | '%B%?F? [%F]?%* %?N?%N/?%S' | -+ | 'sidebar_indent_string' | string | '  ' (two spaces) | -+ | 'sidebar_new_mail_only' | boolean | 'no' | -+ | 'sidebar_next_new_wrap' | boolean | 'no' | -+ | 'sidebar_refresh_time' | number | '60' | -+ | 'sidebar_short_path' | boolean | 'no' | -+ | 'sidebar_sort_method' | enum | 'SORT_ORDER' | -+ | 'sidebar_visible' | boolean | 'no' | -+ | 'sidebar_whitelist' | list | (empty) | -+ | 'sidebar_width' | number | '20' | -+ -+Functions -+--------- -+ -+ Sidebar Functions -+ -+ Sidebar adds the following functions to Mutt. By default, none of them are -+ bound to keys. -+ -+ | Menus | Function | Description | -+ |-------------|----------------------------|------------------------------------------------------| -+ | index,pager | '' | Move the highlight to next mailbox | -+ | index,pager | '' | Move the highlight to next mailbox with new mail | -+ | index,pager | '' | Open highlighted mailbox | -+ | index,pager | '' | Scroll the Sidebar down 1 page | -+ | index,pager | '' | Scroll the Sidebar up 1 page | -+ | index,pager | '' | Move the highlight to previous mailbox | -+ | index,pager | '' | Move the highlight to previous mailbox with new mail | -+ | index,pager | '' | Make the Sidebar (in)visible | -+ -+Commands -+-------- -+ -+ sidebar_whitelist mailbox [ mailbox... ] -+ -+Colors -+------ -+ -+ Sidebar Colors -+ -+ | Name | Default Color | Description | -+ |---------------------|------------------|------------------------------------------------------------------| -+ | 'sidebar_divider' | default | The dividing line between the Sidebar and the Index/Pager panels | -+ | 'sidebar_flagged' | default | Mailboxes containing flagged mail | -+ | 'sidebar_highlight' | underline | Cursor to select a mailbox | -+ | 'sidebar_indicator' | mutt 'indicator' | The mailbox open in the Index panel | -+ | 'sidebar_new' | default | Mailboxes containing new mail | -+ | 'sidebar_spoolfile' | default | Mailbox that receives incoming mail | -+ -+ If the sidebar_indicator color isn't set, then the default Mutt indicator -+ color will be used (the color used in the index panel). -+ -+Sort -+---- -+ -+ Sidebar Sort -+ -+ | Sort | Description | -+ |------------|----------------------------| -+ | 'alpha' | Alphabetically by path | -+ | 'count' | Total number of messages | -+ | 'flagged' | Number of flagged messages | -+ | 'name' | Alphabetically by path | -+ | 'new' | Number of new messages | -+ | 'path' | Alphabetically by path | -+ | 'unsorted' | Do not resort the paths | -+ -+See Also -+-------- -+ -+ * Regular Expressions -+ * Patterns -+ * Color command -+ * notmuch patch -+ -+Known Bugs -+---------- -+ -+ Unsorted isn't -+ -+Credits -+------- -+ -+ * Justin Hibbits -+ * Thomer M. Gil -+ * David Sterba -+ * Evgeni Golov -+ * Fabian Groffen -+ * Jason DeTiberus -+ * Stefan Assmann -+ * Steve Kemp -+ * Terry Chan -+ * Tyler Earnest -+ * Richard Russon -+ -diff -urN mutt-1.6.1/sidebar.c mutt-1.6.1-sidebar/sidebar.c ---- mutt-1.6.1/sidebar.c 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/sidebar.c 2016-06-14 18:46:00.000000000 +0100 -@@ -0,0 +1,1090 @@ -+/* Copyright (C) 2004 Justin Hibbits -+ * Copyright (C) 2004 Thomer M. Gil -+ * Copyright (C) 2015-2016 Richard Russon -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. -+ */ -+ -+#if HAVE_CONFIG_H -+# include "config.h" -+#endif -+ -+#include "mutt.h" -+#include "buffy.h" -+#include "keymap.h" -+#include "mutt_curses.h" -+#include "mutt_menu.h" -+#include "sort.h" -+ -+/* Previous values for some sidebar config */ -+static short OldVisible; /* sidebar_visible */ -+static short OldWidth; /* sidebar_width */ -+static short PreviousSort; /* sidebar_sort_method */ -+static time_t LastRefresh; /* Time of last refresh */ -+ -+/* Keep track of various BUFFYs */ -+static BUFFY *TopBuffy; /* First mailbox visible in sidebar */ -+static BUFFY *OpnBuffy; /* Current (open) mailbox */ -+static BUFFY *HilBuffy; /* Highlighted mailbox */ -+static BUFFY *BotBuffy; /* Last mailbox visible in sidebar */ -+static BUFFY *Outgoing; /* Last mailbox in the linked list */ -+ -+/** -+ * struct sidebar_entry - Info about folders in the sidebar -+ * -+ * Used in the mutt_FormatString callback -+ */ -+struct sidebar_entry -+{ -+ char box[STRING]; -+ BUFFY *buffy; -+}; -+ -+ -+/** -+ * find_next_new - Find the next folder that contains new mail -+ * @wrap: Wrap around to the beginning if the end is reached -+ * -+ * Search down the list of mail folders for one containing new mail. -+ * -+ * Returns: -+ * BUFFY*: Success -+ * NULL: Failure -+ */ -+static BUFFY *find_next_new (int wrap) -+{ -+ BUFFY *b = HilBuffy; -+ if (!b) -+ return NULL; -+ -+ do -+ { -+ b = b->next; -+ if (!b && wrap) -+ b = Incoming; -+ if (!b || (b == HilBuffy)) -+ break; -+ if (b->msg_unread > 0) -+ return b; -+ } while (b); -+ -+ return NULL; -+} -+ -+/** -+ * find_prev_new - Find the previous folder that contains new mail -+ * @wrap: Wrap around to the beginning if the end is reached -+ * -+ * Search up the list of mail folders for one containing new mail. -+ * -+ * Returns: -+ * BUFFY*: Success -+ * NULL: Failure -+ */ -+static BUFFY *find_prev_new (int wrap) -+{ -+ BUFFY *b = HilBuffy; -+ if (!b) -+ return NULL; -+ -+ do -+ { -+ b = b->prev; -+ if (!b && wrap) -+ b = Outgoing; -+ if (!b || (b == HilBuffy)) -+ break; -+ if (b->msg_unread > 0) -+ return b; -+ } while (b); -+ -+ return NULL; -+} -+ -+/** -+ * cb_format_str - Create the string to show in the sidebar -+ * @dest: Buffer in which to save string -+ * @destlen: Buffer length -+ * @col: Starting column, UNUSED -+ * @op: printf-like operator, e.g. 'B' -+ * @src: printf-like format string -+ * @prefix: Field formatting string, UNUSED -+ * @ifstring: If condition is met, display this string -+ * @elsestring: Otherwise, display this string -+ * @data: Pointer to our sidebar_entry -+ * @flags: Format flags, e.g. M_FORMAT_OPTIONAL -+ * -+ * cb_format_str is a callback function for mutt_FormatString. It understands -+ * five operators. '%B' : Mailbox name, '%F' : Number of flagged messages, -+ * '%N' : Number of new messages, '%S' : Size (total number of messages), -+ * '%!' : Icon denoting number of flagged messages. -+ * -+ * Returns: src (unchanged) -+ */ -+static const char *cb_format_str(char *dest, size_t destlen, size_t col, char op, -+ const char *src, const char *prefix, const char *ifstring, -+ const char *elsestring, unsigned long data, format_flag flags) -+{ -+ struct sidebar_entry *sbe = (struct sidebar_entry *) data; -+ unsigned int optional; -+ char fmt[STRING]; -+ -+ if (!sbe || !dest) -+ return src; -+ -+ dest[0] = 0; /* Just in case there's nothing to do */ -+ -+ BUFFY *b = sbe->buffy; -+ if (!b) -+ return src; -+ -+ int c = Context && (mutt_strcmp (Context->path, b->path) == 0); -+ -+ optional = flags & M_FORMAT_OPTIONAL; -+ -+ switch (op) -+ { -+ case 'B': -+ mutt_format_s (dest, destlen, prefix, sbe->box); -+ break; -+ -+ case 'd': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, c ? Context->deleted : 0); -+ } -+ else if ((c && Context->deleted == 0) || !c) -+ optional = 0; -+ break; -+ -+ case 'F': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, b->msg_flagged); -+ } -+ else if (b->msg_flagged == 0) -+ optional = 0; -+ break; -+ -+ case 'L': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, c ? Context->vcount : b->msg_count); -+ } -+ else if ((c && Context->vcount == b->msg_count) || !c) -+ optional = 0; -+ break; -+ -+ case 'N': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, b->msg_unread); -+ } -+ else if (b->msg_unread == 0) -+ optional = 0; -+ break; -+ -+ case 'S': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, b->msg_count); -+ } -+ else if (b->msg_count == 0) -+ optional = 0; -+ break; -+ -+ case 't': -+ if (!optional) -+ { -+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix); -+ snprintf (dest, destlen, fmt, c ? Context->tagged : 0); -+ } -+ else if ((c && Context->tagged == 0) || !c) -+ optional = 0; -+ break; -+ -+ case '!': -+ if (b->msg_flagged == 0) -+ mutt_format_s (dest, destlen, prefix, ""); -+ else if (b->msg_flagged == 1) -+ mutt_format_s (dest, destlen, prefix, "!"); -+ else if (b->msg_flagged == 2) -+ mutt_format_s (dest, destlen, prefix, "!!"); -+ else -+ { -+ snprintf (fmt, sizeof (fmt), "%d!", b->msg_flagged); -+ mutt_format_s (dest, destlen, prefix, fmt); -+ } -+ break; -+ } -+ -+ if (optional) -+ mutt_FormatString (dest, destlen, col, ifstring, cb_format_str, (unsigned long) sbe, flags); -+ else if (flags & M_FORMAT_OPTIONAL) -+ mutt_FormatString (dest, destlen, col, elsestring, cb_format_str, (unsigned long) sbe, flags); -+ -+ /* We return the format string, unchanged */ -+ return src; -+} -+ -+/** -+ * make_sidebar_entry - Turn mailbox data into a sidebar string -+ * @buf: Buffer in which to save string -+ * @buflen: Buffer length -+ * @width: Desired width in screen cells -+ * @box: Mailbox name -+ * @size: Size (total number of messages) -+ * @new: Number of new messages -+ * @flagged: Number of flagged messages -+ * -+ * Take all the relevant mailbox data and the desired screen width and then get -+ * mutt_FormatString to do the actual work. mutt_FormatString will callback to -+ * us using cb_format_str() for the sidebar specific formatting characters. -+ */ -+static void make_sidebar_entry (char *buf, unsigned int buflen, int width, char *box, -+ BUFFY *b) -+{ -+ struct sidebar_entry sbe; -+ -+ if (!buf || !box || !b) -+ return; -+ -+ sbe.buffy = b; -+ strfcpy (sbe.box, box, sizeof (sbe.box)); -+ -+ /* Temporarily lie about the screen width */ -+ int oc = COLS; -+ COLS = width + SidebarWidth; -+ mutt_FormatString (buf, buflen, 0, NONULL(SidebarFormat), cb_format_str, (unsigned long) &sbe, 0); -+ COLS = oc; -+ -+ /* Force string to be exactly the right width */ -+ int w = mutt_strwidth (buf); -+ int s = strlen (buf); -+ width = MIN(buflen, width); -+ if (w < width) -+ { -+ /* Pad with spaces */ -+ memset (buf + s, ' ', width - w); -+ buf[s + width - w] = 0; -+ } -+ else if (w > width) -+ { -+ /* Truncate to fit */ -+ int len = mutt_wstr_trunc (buf, buflen, width, NULL); -+ buf[len] = 0; -+ } -+} -+ -+/** -+ * cb_qsort_buffy - qsort callback to sort BUFFYs -+ * @a: First BUFFY to compare -+ * @b: Second BUFFY to compare -+ * -+ * Compare the paths of two BUFFYs taking the locale into account. -+ * -+ * Returns: -+ * -1: a precedes b -+ * 0: a and b are identical -+ * 1: b precedes a -+ */ -+static int cb_qsort_buffy (const void *a, const void *b) -+{ -+ const BUFFY *b1 = *(const BUFFY **) a; -+ const BUFFY *b2 = *(const BUFFY **) b; -+ -+ /* Special case -- move hidden BUFFYs to the end */ -+ if (b1->is_hidden != b2->is_hidden) -+ { -+ if (b1->is_hidden) -+ return 1; -+ else -+ return -1; -+ } -+ -+ int result = 0; -+ -+ switch ((SidebarSortMethod & SORT_MASK)) -+ { -+ case SORT_COUNT: -+ result = (b2->msg_count - b1->msg_count); -+ break; -+ case SORT_COUNT_NEW: -+ result = (b2->msg_unread - b1->msg_unread); -+ break; -+ case SORT_FLAGGED: -+ result = (b2->msg_flagged - b1->msg_flagged); -+ break; -+ case SORT_PATH: -+ result = mutt_strcasecmp (b1->path, b2->path); -+ break; -+ } -+ -+ if (SidebarSortMethod & SORT_REVERSE) -+ result = -result; -+ -+ return result; -+} -+ -+/** -+ * buffy_going - Prevent our pointers becoming invalid -+ * @b: BUFFY about to be deleted -+ * -+ * If we receive a delete-notification for a BUFFY, we need to change any -+ * pointers we have to reference a different BUFFY, or set them to NULL. -+ * -+ * We don't update the prev/next pointers, they'll be fixed on the next -+ * call to prepare_sidebar(). -+ * -+ * Returns: -+ * A valid alternative BUFFY, or NULL -+ */ -+static BUFFY *buffy_going (const BUFFY *b) -+{ -+ if (!b) -+ return NULL; -+ -+ if (b->prev) -+ { -+ b->prev->next = NULL; -+ } -+ -+ if (b->next) -+ { -+ b->next->prev = NULL; -+ return b->next; -+ } -+ -+ return b->prev; -+} -+ -+/** -+ * update_buffy_visibility - Should a BUFFY be displayed in the sidebar -+ * @arr: array of BUFFYs -+ * @arr_len: number of BUFFYs in array -+ * -+ * For each BUFFY in the array, check whether we should display it. -+ * This is determined by several criteria. If the BUFFY: -+ * is the currently open mailbox -+ * is the currently highlighted mailbox -+ * has unread messages -+ * has flagged messages -+ * is whitelisted -+ */ -+static void update_buffy_visibility (BUFFY **arr, int arr_len) -+{ -+ if (!arr) -+ return; -+ -+ short new_only = option (OPTSIDEBARNEWMAILONLY); -+ -+ BUFFY *b; -+ int i; -+ for (i = 0; i < arr_len; i++) -+ { -+ b = arr[i]; -+ -+ b->is_hidden = 0; -+ -+ if (!new_only) -+ continue; -+ -+ if ((b == OpnBuffy) || (b->msg_unread > 0) || -+ (b == HilBuffy) || (b->msg_flagged > 0)) -+ continue; -+ -+ if (Context && (strcmp (b->path, Context->path) == 0)) -+ /* Spool directory */ -+ continue; -+ -+ if (mutt_find_list (SidebarWhitelist, b->path)) -+ /* Explicitly asked to be visible */ -+ continue; -+ -+ b->is_hidden = 1; -+ } -+} -+ -+/** -+ * sort_buffy_array - Sort an array of BUFFY pointers -+ * @arr: array of BUFFYs -+ * @arr_len: number of BUFFYs in array -+ * -+ * Sort an array of BUFFY pointers according to the current sort config -+ * option "sidebar_sort_method". This calls qsort to do the work which calls our -+ * callback function "cb_qsort_buffy". -+ * -+ * Once sorted, the prev/next links will be reconstructed. -+ */ -+static void sort_buffy_array (BUFFY **arr, int arr_len) -+{ -+ if (!arr) -+ return; -+ -+ /* These are the only sort methods we understand */ -+ short ssm = (SidebarSortMethod & SORT_MASK); -+ if ((ssm == SORT_COUNT) || -+ (ssm == SORT_COUNT_NEW) || -+ (ssm == SORT_DESC) || -+ (ssm == SORT_FLAGGED) || -+ (ssm == SORT_PATH)) -+ qsort (arr, arr_len, sizeof (*arr), cb_qsort_buffy); -+ -+ int i; -+ for (i = 0; i < (arr_len - 1); i++) -+ arr[i]->next = arr[i + 1]; -+ arr[arr_len - 1]->next = NULL; -+ -+ for (i = 1; i < arr_len; i++) -+ arr[i]->prev = arr[i - 1]; -+ arr[0]->prev = NULL; -+} -+ -+/** -+ * prepare_sidebar - Prepare the list of BUFFYs for the sidebar display -+ * @page_size: The number of lines on a page -+ * -+ * Before painting the sidebar, we count the BUFFYs, determine which are -+ * visible, sort them and set up our page pointers. -+ * -+ * This is a lot of work to do each refresh, but there are many things that -+ * can change outside of the sidebar that we don't hear about. -+ * -+ * Returns: -+ * 0: No, don't draw the sidebar -+ * 1: Yes, draw the sidebar -+ */ -+static int prepare_sidebar (int page_size) -+{ -+ BUFFY *b = Incoming; -+ if (!b) -+ return 0; -+ -+ int count = 0; -+ for (; b; b = b->next) -+ count++; -+ -+ BUFFY **arr = safe_malloc (count * sizeof (*arr)); -+ -+ int i = 0; -+ for (b = Incoming; b; b = b->next, i++) -+ arr[i] = b; -+ -+ update_buffy_visibility (arr, count); -+ sort_buffy_array (arr, count); -+ -+ Incoming = arr[0]; -+ -+ int top_index = 0; -+ int opn_index = -1; -+ int hil_index = -1; -+ int bot_index = -1; -+ -+ for (i = 0; i < count; i++) -+ { -+ if (OpnBuffy == arr[i]) -+ opn_index = i; -+ if (HilBuffy == arr[i]) -+ hil_index = i; -+ } -+ -+ if (!HilBuffy || (SidebarSortMethod != PreviousSort)) -+ { -+ if (OpnBuffy) -+ { -+ HilBuffy = OpnBuffy; -+ hil_index = opn_index; -+ } -+ else -+ { -+ HilBuffy = arr[0]; -+ hil_index = 0; -+ } -+ } -+ if (TopBuffy) -+ top_index = (hil_index / page_size) * page_size; -+ else -+ top_index = hil_index; -+ TopBuffy = arr[top_index]; -+ -+ bot_index = top_index + page_size - 1; -+ if (bot_index > (count - 1)) -+ bot_index = count - 1; -+ BotBuffy = arr[bot_index]; -+ -+ Outgoing = arr[count - 1]; -+ -+ PreviousSort = SidebarSortMethod; -+ FREE (&arr); -+ return 1; -+} -+ -+/** -+ * visible - Should we display the sidebar? -+ * -+ * After validating the config options "sidebar_visible" and "sidebar_width", -+ * determine whether we should should display the sidebar. -+ * -+ * When not visible, set the global SidebarWidth to 0. -+ * -+ * Returns: -+ * Boolean -+ */ -+static short -+visible (void) -+{ -+ short new_visible = option (OPTSIDEBAR); -+ short new_width = SidebarWidth; -+ -+ if (OldWidth != new_width) -+ { -+ if (new_width > 0) -+ { -+ OldWidth = new_width; -+ } -+ } -+ -+ if (OldVisible != new_visible) -+ { -+ if (new_visible) -+ { -+ set_option (OPTSIDEBAR); -+ } -+ else -+ { -+ unset_option (OPTSIDEBAR); -+ } -+ OldVisible = new_visible; -+ } -+ else if (new_width == 0) -+ { -+ unset_option (OPTSIDEBAR); -+ OldVisible = 0; -+ } -+ -+ if (!option (OPTSIDEBAR)) -+ { -+ SidebarWidth = 0; -+ } -+ else if (new_width == 0) -+ { -+ SidebarWidth = OldWidth; -+ } -+ else -+ { -+ SidebarWidth = new_width; -+ } -+ -+ return new_visible; -+} -+ -+/** -+ * draw_divider - Draw a line between the sidebar and the rest of mutt -+ * @first_row: Screen line to start (0-based) -+ * @num_rows: Number of rows to fill -+ * -+ * Draw a divider using characters from the config option "sidebar_divider_char". -+ * This can be an ASCII or Unicode character. First we calculate this -+ * characters' width in screen columns, then subtract that from the config -+ * option "sidebar_width". -+ * -+ * Returns: -+ * -1: Error: bad character, etc -+ * 0: Error: 0 width character -+ * n: Success: character occupies n screen columns -+ */ -+static int draw_divider (int first_row, int num_rows) -+{ -+ /* Calculate the width of the delimiter in screen cells */ -+ int delim_len = mutt_strwidth (SidebarDividerChar); -+ -+ if (delim_len < 1) -+ return delim_len; -+ -+ if ((SidebarWidth + delim_len) > (COLS + 1)) -+ return 0; -+ -+ if (delim_len > SidebarWidth) -+ return -1; -+ -+ SETCOLOR(MT_COLOR_DIVIDER); -+ -+ int i; -+ for (i = 0; i < num_rows; i++) -+ { -+ move (first_row + i, SidebarWidth - delim_len); -+ addstr (NONULL(SidebarDividerChar)); -+ } -+ -+ return delim_len; -+} -+ -+/** -+ * fill_empty_space - Wipe the remaining Sidebar space -+ * @first_row: Screen line to start (0-based) -+ * @num_rows: Number of rows to fill -+ * @width: Width of the Sidebar (minus the divider) -+ * -+ * Write spaces over the area the sidebar isn't using. -+ */ -+static void fill_empty_space (int first_row, int num_rows, int width) -+{ -+ /* Fill the remaining rows with blank space */ -+ SETCOLOR(MT_COLOR_NORMAL); -+ -+ int r; -+ for (r = 0; r < num_rows; r++) -+ { -+ int i = 0; -+ move (first_row + r, 0); -+ for (; i < width; i++) -+ addch (' '); -+ } -+} -+ -+/** -+ * draw_sidebar - Write out a list of mailboxes, on the left -+ * @first_row: Screen line to start (0-based) -+ * @num_rows: Number of rows to fill -+ * @div_width: Width in screen characters taken by the divider -+ * -+ * Display a list of mailboxes in a panel on the left. What's displayed will -+ * depend on our index markers: TopBuffy, OpnBuffy, HilBuffy, BotBuffy. -+ * On the first run they'll be NULL, so we display the top of Mutt's list -+ * (Incoming). -+ * -+ * TopBuffy - first visible mailbox -+ * BotBuffy - last visible mailbox -+ * OpnBuffy - mailbox shown in Mutt's Index Panel -+ * HilBuffy - Unselected mailbox (the paging follows this) -+ * -+ * The entries are formatted using "sidebar_format" and may be abbreviated: -+ * "sidebar_short_path", indented: "sidebar_folder_indent", -+ * "sidebar_indent_string" and sorted: "sidebar_sort_method". Finally, they're -+ * trimmed to fit the available space. -+ */ -+static void draw_sidebar (int first_row, int num_rows, int div_width) -+{ -+ BUFFY *b = TopBuffy; -+ if (!b) -+ return; -+ -+ int w = MIN(COLS, (SidebarWidth - div_width)); -+ int row = 0; -+ for (b = TopBuffy; b && (row < num_rows); b = b->next) -+ { -+ if (b->is_hidden) -+ continue; -+ -+ if (b == OpnBuffy) -+ { -+ if ((ColorDefs[MT_COLOR_SB_INDICATOR] != 0)) -+ SETCOLOR(MT_COLOR_SB_INDICATOR); -+ else -+ SETCOLOR(MT_COLOR_INDICATOR); -+ } -+ else if (b == HilBuffy) -+ SETCOLOR(MT_COLOR_HIGHLIGHT); -+ else if ((ColorDefs[MT_COLOR_SB_SPOOLFILE] != 0) && -+ (mutt_strcmp (b->path, Spoolfile) == 0)) -+ SETCOLOR(MT_COLOR_SB_SPOOLFILE); -+ else if (b->msg_unread > 0) -+ SETCOLOR(MT_COLOR_NEW); -+ else if (b->msg_flagged > 0) -+ SETCOLOR(MT_COLOR_FLAGGED); -+ else -+ SETCOLOR(MT_COLOR_NORMAL); -+ -+ move (first_row + row, 0); -+ if (Context && Context->path && -+ (!strcmp (b->path, Context->path)|| -+ !strcmp (b->realpath, Context->path))) -+ { -+ b->msg_unread = Context->unread; -+ b->msg_count = Context->msgcount; -+ b->msg_flagged = Context->flagged; -+ } -+ -+ /* compute length of Maildir without trailing separator */ -+ size_t maildirlen = strlen (Maildir); -+ if (SidebarDelimChars && strchr (SidebarDelimChars, Maildir[maildirlen - 1])) -+ maildirlen--; -+ -+ /* check whether Maildir is a prefix of the current folder's path */ -+ short maildir_is_prefix = 0; -+ if ((strlen (b->path) > maildirlen) && (strncmp (Maildir, b->path, maildirlen) == 0)) -+ maildir_is_prefix = 1; -+ -+ /* calculate depth of current folder and generate its display name with indented spaces */ -+ int sidebar_folder_depth = 0; -+ char *sidebar_folder_name; -+ int i; -+ if (option (OPTSIDEBARSHORTPATH)) -+ { -+ /* disregard a trailing separator, so strlen() - 2 */ -+ sidebar_folder_name = b->path; -+ for (i = strlen (sidebar_folder_name) - 2; i >= 0; i--) -+ { -+ if (SidebarDelimChars && -+ strchr (SidebarDelimChars, sidebar_folder_name[i])) -+ { -+ sidebar_folder_name += (i + 1); -+ break; -+ } -+ } -+ } -+ else -+ sidebar_folder_name = b->path + maildir_is_prefix * (maildirlen + 1); -+ -+ if (maildir_is_prefix && option (OPTSIDEBARFOLDERINDENT)) -+ { -+ const char *tmp_folder_name; -+ int lastsep = 0; -+ tmp_folder_name = b->path + maildirlen + 1; -+ int tmplen = (int) strlen (tmp_folder_name) - 1; -+ for (i = 0; i < tmplen; i++) -+ { -+ if (SidebarDelimChars && strchr (SidebarDelimChars, tmp_folder_name[i])) -+ { -+ sidebar_folder_depth++; -+ lastsep = i + 1; -+ } -+ } -+ if (sidebar_folder_depth > 0) -+ { -+ if (option (OPTSIDEBARSHORTPATH)) -+ tmp_folder_name += lastsep; /* basename */ -+ sidebar_folder_name = malloc (strlen (tmp_folder_name) + sidebar_folder_depth*strlen (NONULL(SidebarIndentString)) + 1); -+ sidebar_folder_name[0]=0; -+ for (i=0; i < sidebar_folder_depth; i++) -+ strncat (sidebar_folder_name, NONULL(SidebarIndentString), strlen (NONULL(SidebarIndentString))); -+ strncat (sidebar_folder_name, tmp_folder_name, strlen (tmp_folder_name)); -+ } -+ } -+ char str[STRING]; -+ make_sidebar_entry (str, sizeof (str), w, sidebar_folder_name, b); -+ printw ("%s", str); -+ if (sidebar_folder_depth > 0) -+ FREE (&sidebar_folder_name); -+ row++; -+ } -+ -+ fill_empty_space (first_row + row, num_rows - row, w); -+} -+ -+ -+/** -+ * mutt_sb_init - Set some default values for the sidebar. -+ */ -+void -+mutt_sb_init (void) -+{ -+ OldVisible = option (OPTSIDEBAR); -+ if (SidebarWidth > 0) -+ { -+ OldWidth = SidebarWidth; -+ } -+ else -+ { -+ OldWidth = 20; -+ if (OldVisible) -+ { -+ SidebarWidth = OldWidth; -+ } -+ } -+} -+ -+/** -+ * mutt_sb_draw - Completely redraw the sidebar -+ * -+ * Completely refresh the sidebar region. First draw the divider; then, for -+ * each BUFFY, call make_sidebar_entry; finally blank out any remaining space. -+ */ -+void mutt_sb_draw (void) -+{ -+ if (!visible()) -+ return; -+ -+ /* XXX - if transitioning from invisible to visible */ -+ /* if (OldVisible == 0) */ -+ /* mutt_buffy_check (1); we probably have bad or no numbers */ -+ -+ int x = getcurx (stdscr); -+ int y = getcury (stdscr); -+ -+ int first_row = 0; -+ int num_rows = LINES - 2; -+ -+ if (option (OPTHELP) || option (OPTSTATUSONTOP)) -+ first_row++; -+ -+ if (option (OPTHELP)) -+ num_rows--; -+ -+ int div_width = draw_divider (first_row, num_rows); -+ if (div_width < 0) -+ return; -+ -+ if (!Incoming) -+ { -+ int w = MIN(COLS, (SidebarWidth - div_width)); -+ fill_empty_space (first_row, num_rows, w); -+ return; -+ } -+ -+ if (!prepare_sidebar (num_rows)) -+ return; -+ -+ draw_sidebar (first_row, num_rows, div_width); -+ move (y, x); -+} -+ -+/** -+ * mutt_sb_should_refresh - Check if the sidebar is due to be refreshed -+ * -+ * The "sidebar_refresh_time" config option allows the user to limit the frequency -+ * with which the sidebar is refreshed. -+ * -+ * Returns: -+ * 1 Yes, refresh is due -+ * 0 No, refresh happened recently -+ */ -+int mutt_sb_should_refresh (void) -+{ -+ if (!option (OPTSIDEBAR)) -+ return 0; -+ -+ if (SidebarRefreshTime == 0) -+ return 0; -+ -+ time_t diff = (time (NULL) - LastRefresh); -+ -+ return (diff >= SidebarRefreshTime); -+} -+ -+/** -+ * mutt_sb_change_mailbox - Change the selected mailbox -+ * @op: Operation code -+ * -+ * Change the selected mailbox, e.g. "Next mailbox", "Previous Mailbox -+ * with new mail". The operations are listed OPS.SIDEBAR which is built -+ * into an enum in keymap_defs.h. -+ * -+ * If the operation is successful, HilBuffy will be set to the new mailbox. -+ * This function only *selects* the mailbox, doesn't *open* it. -+ * -+ * Allowed values are: OP_SIDEBAR_NEXT, OP_SIDEBAR_NEXT_NEW, -+ * OP_SIDEBAR_PAGE_DOWN, OP_SIDEBAR_PAGE_UP, OP_SIDEBAR_PREV, -+ * OP_SIDEBAR_PREV_NEW. -+ */ -+void mutt_sb_change_mailbox (int op) -+{ -+ BUFFY *b; -+ if (!HilBuffy) /* It'll get reset on the next draw */ -+ return; -+ -+ switch (op) -+ { -+ case OP_SIDEBAR_NEXT: -+ if (!HilBuffy->next) -+ return; -+ if (HilBuffy->next->is_hidden) -+ return; -+ HilBuffy = HilBuffy->next; -+ break; -+ case OP_SIDEBAR_NEXT_NEW: -+ b = find_next_new (option (OPTSIDEBARNEXTNEWWRAP)); -+ if (!b) -+ return; -+ else -+ HilBuffy = b; -+ break; -+ case OP_SIDEBAR_PAGE_DOWN: -+ HilBuffy = BotBuffy; -+ if (HilBuffy->next) -+ HilBuffy = HilBuffy->next; -+ break; -+ case OP_SIDEBAR_PAGE_UP: -+ HilBuffy = TopBuffy; -+ if (HilBuffy != Incoming) -+ HilBuffy = HilBuffy->prev; -+ break; -+ case OP_SIDEBAR_PREV: -+ if (!HilBuffy->prev) -+ return; -+ if (HilBuffy->prev->is_hidden) /* Can't happen, we've sorted the hidden to the end */ -+ return; -+ HilBuffy = HilBuffy->prev; -+ break; -+ case OP_SIDEBAR_PREV_NEW: -+ b = find_prev_new (option (OPTSIDEBARNEXTNEWWRAP)); -+ if (!b) -+ return; -+ else -+ HilBuffy = b; -+ break; -+ default: -+ return; -+ } -+ -+ /* We can change folder even if the sidebar is hidden */ -+ if (option (OPTSIDEBAR)) -+ mutt_sb_draw(); -+} -+ -+/** -+ * mutt_sb_set_buffystats - Update the BUFFY's message counts from the CONTEXT -+ * @ctx: A mailbox CONTEXT -+ * -+ * Given a mailbox CONTEXT, find a matching mailbox BUFFY and copy the message -+ * counts into it. -+ */ -+void mutt_sb_set_buffystats (const CONTEXT *ctx) -+{ -+ /* Even if the sidebar's hidden, -+ * we should take note of the new data. */ -+ BUFFY *b = Incoming; -+ if (!ctx || !b) -+ return; -+ -+ for (; b; b = b->next) -+ { -+ if (!strcmp (b->path, ctx->path) || -+ !strcmp (b->realpath, ctx->path)) -+ { -+ b->msg_unread = ctx->unread; -+ b->msg_count = ctx->msgcount; -+ b->msg_flagged = ctx->flagged; -+ break; -+ } -+ } -+} -+ -+/** -+ * mutt_sb_get_highlight - Get the BUFFY that's highlighted in the sidebar -+ * -+ * Get the path of the mailbox that's highlighted in the sidebar. -+ * -+ * Returns: -+ * Mailbox path -+ */ -+const char *mutt_sb_get_highlight (void) -+{ -+ if (!HilBuffy) -+ return NULL; -+ -+ return HilBuffy->path; -+} -+ -+/** -+ * mutt_sb_set_open_buffy - Set the OpnBuffy based on a mailbox path -+ * @path: Mailbox path -+ * -+ * Search through the list of mailboxes. If a BUFFY has a matching path, set -+ * OpnBuffy to it. -+ */ -+BUFFY *mutt_sb_set_open_buffy (const char *path) -+{ -+ /* Even if the sidebar is hidden */ -+ -+ BUFFY *b = Incoming; -+ -+ if (!path || !b) -+ return NULL; -+ -+ OpnBuffy = NULL; -+ -+ for (; b; b = b->next) -+ { -+ if (!strcmp (b->path, path) || -+ !strcmp (b->realpath, path)) -+ { -+ OpnBuffy = b; -+ HilBuffy = b; -+ break; -+ } -+ } -+ -+ return OpnBuffy; -+} -+ -+/** -+ * mutt_sb_set_update_time - Note the time that the sidebar was updated -+ * -+ * Update the timestamp representing the last sidebar update. If the user -+ * configures "sidebar_refresh_time", this will help to reduce traffic. -+ */ -+void mutt_sb_set_update_time (void) -+{ -+ /* XXX - should this be public? */ -+ -+ LastRefresh = time (NULL); -+} -+ -+/** -+ * mutt_sb_notify_mailbox - The state of a BUFFY is about to change -+ * -+ * We receive a notification: -+ * After a new BUFFY has been created -+ * Before a BUFFY is deleted -+ * -+ * Before a deletion, check that our pointers won't be invalidated. -+ */ -+void mutt_sb_notify_mailbox (BUFFY *b, int created) -+{ -+ if (!b) -+ return; -+ -+ /* Any new/deleted mailboxes will cause a refresh. As long as -+ * they're valid, our pointers will be updated in prepare_sidebar() */ -+ -+ if (created) -+ { -+ if (!TopBuffy) -+ TopBuffy = b; -+ if (!HilBuffy) -+ HilBuffy = b; -+ if (!BotBuffy) -+ BotBuffy = b; -+ if (!Outgoing) -+ Outgoing = b; -+ if (!OpnBuffy && Context) -+ { -+ /* This might happen if the user "unmailboxes *", then -+ * "mailboxes" our current mailbox back again */ -+ if (mutt_strcmp (b->path, Context->path) == 0) -+ OpnBuffy = b; -+ } -+ } -+ else -+ { -+ BUFFY *replacement = buffy_going (b); -+ if (TopBuffy == b) -+ TopBuffy = replacement; -+ if (OpnBuffy == b) -+ OpnBuffy = NULL; -+ if (HilBuffy == b) -+ HilBuffy = replacement; -+ if (BotBuffy == b) -+ BotBuffy = replacement; -+ if (Outgoing == b) -+ Outgoing = replacement; -+ } -+} -diff -urN mutt-1.6.1/sidebar.h mutt-1.6.1-sidebar/sidebar.h ---- mutt-1.6.1/sidebar.h 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-sidebar/sidebar.h 2016-06-12 18:43:03.967503185 +0100 -@@ -0,0 +1,36 @@ -+/* Copyright (C) 2004 Justin Hibbits -+ * Copyright (C) 2004 Thomer M. Gil -+ * Copyright (C) 2015-2016 Richard Russon -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. -+ */ -+ -+#ifndef SIDEBAR_H -+#define SIDEBAR_H -+ -+#include "mutt.h" -+#include "buffy.h" -+ -+void mutt_sb_change_mailbox (int op); -+void mutt_sb_draw (void); -+const char * mutt_sb_get_highlight (void); -+void mutt_sb_init (void); -+void mutt_sb_notify_mailbox (BUFFY *b, int created); -+void mutt_sb_set_buffystats (const CONTEXT *ctx); -+BUFFY * mutt_sb_set_open_buffy (const char *path); -+void mutt_sb_set_update_time (void); -+int mutt_sb_should_refresh (void); -+ -+#endif /* SIDEBAR_H */ -diff -urN mutt-1.6.1/sort.h mutt-1.6.1-sidebar/sort.h ---- mutt-1.6.1/sort.h 2016-06-12 18:43:00.415447793 +0100 -+++ mutt-1.6.1-sidebar/sort.h 2016-06-12 18:43:03.968503200 +0100 -@@ -31,6 +31,12 @@ - #define SORT_KEYID 12 - #define SORT_TRUST 13 - #define SORT_SPAM 14 -+#define SORT_COUNT 15 -+#define SORT_COUNT_NEW 16 -+#define SORT_DESC 17 -+#define SORT_FLAGGED 18 -+#define SORT_PATH 19 -+ - /* dgc: Sort & SortAux are shorts, so I'm bumping these bitflags up from - * bits 4 & 5 to bits 8 & 9 to make room for more sort keys in the future. */ - #define SORT_MASK 0xff -@@ -50,6 +56,7 @@ - WHERE short Sort INITVAL (SORT_DATE); - WHERE short SortAux INITVAL (SORT_DATE); /* auxiliary sorting method */ - WHERE short SortAlias INITVAL (SORT_ALIAS); -+WHERE short SidebarSortMethod INITVAL (SORT_ORDER); - - /* FIXME: This one does not belong to here */ - WHERE short PgpSortKeys INITVAL (SORT_ADDRESS); diff --git a/pkgs/applications/networking/mailreaders/mutt/trash.patch b/pkgs/applications/networking/mailreaders/mutt/trash.patch deleted file mode 100644 index a7bda4c4c8b8..000000000000 --- a/pkgs/applications/networking/mailreaders/mutt/trash.patch +++ /dev/null @@ -1,797 +0,0 @@ -diff -urN mutt-1.6.1/commands.c mutt-1.6.1-trash/commands.c ---- mutt-1.6.1/commands.c 2016-06-12 18:43:00.397447512 +0100 -+++ mutt-1.6.1-trash/commands.c 2016-06-12 18:43:04.892517610 +0100 -@@ -720,6 +720,7 @@ - if (option (OPTDELETEUNTAG)) - mutt_set_flag (Context, h, M_TAG, 0); - } -+ mutt_set_flag (Context, h, M_APPENDED, 1); - - return 0; - } -diff -urN mutt-1.6.1/curs_main.c mutt-1.6.1-trash/curs_main.c ---- mutt-1.6.1/curs_main.c 2016-06-12 18:43:00.399447544 +0100 -+++ mutt-1.6.1-trash/curs_main.c 2016-06-12 18:43:04.895517656 +0100 -@@ -1919,6 +1919,7 @@ - MAYBE_REDRAW (menu->redraw); - break; - -+ case OP_PURGE_MESSAGE: - case OP_DELETE: - - CHECK_MSGCOUNT; -@@ -1930,6 +1931,7 @@ - if (tag) - { - mutt_tag_set_flag (M_DELETE, 1); -+ mutt_tag_set_flag (M_PURGED, (op != OP_PURGE_MESSAGE) ? 0 : 1); - if (option (OPTDELETEUNTAG)) - mutt_tag_set_flag (M_TAG, 0); - menu->redraw = REDRAW_INDEX; -@@ -1937,6 +1939,8 @@ - else - { - mutt_set_flag (Context, CURHDR, M_DELETE, 1); -+ mutt_set_flag (Context, CURHDR, M_PURGED, -+ (op != OP_PURGE_MESSAGE) ? 0 : 1); - if (option (OPTDELETEUNTAG)) - mutt_set_flag (Context, CURHDR, M_TAG, 0); - if (option (OPTRESOLVE)) -@@ -2242,11 +2246,13 @@ - if (tag) - { - mutt_tag_set_flag (M_DELETE, 0); -+ mutt_tag_set_flag (M_PURGED, 0); - menu->redraw = REDRAW_INDEX; - } - else - { - mutt_set_flag (Context, CURHDR, M_DELETE, 0); -+ mutt_set_flag (Context, CURHDR, M_PURGED, 0); - if (option (OPTRESOLVE) && menu->current < Context->vcount - 1) - { - menu->current++; -@@ -2268,9 +2274,11 @@ - CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message(s)")); - - rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0, -- op == OP_UNDELETE_THREAD ? 0 : 1); -+ op == OP_UNDELETE_THREAD ? 0 : 1) -+ + mutt_thread_set_flag (CURHDR, M_PURGED, 0, -+ (op == OP_UNDELETE_THREAD) ? 0 : 1); - -- if (rc != -1) -+ if (rc > -1) - { - if (option (OPTRESOLVE)) - { -diff -urN mutt-1.6.1/doc/manual.xml.head mutt-1.6.1-trash/doc/manual.xml.head ---- mutt-1.6.1/doc/manual.xml.head 2016-06-12 18:43:00.402447590 +0100 -+++ mutt-1.6.1-trash/doc/manual.xml.head 2016-06-12 18:43:04.901517750 +0100 -@@ -7467,6 +7467,16 @@ - -
- -+ -+Mutt Patches -+ -+Mutt may also be patched to support smaller features. -+These patches should add a free-form string to the end Mutt's version string. -+Running mutt -v might show: -+patch-1.6.1.sidebar.20160502 -+ -+ -+ - - URL Syntax - -@@ -8081,6 +8091,175 @@ - - - -+ -+ Trash Folder Patch -+ Automatically move "deleted" emails to a trash bin -+ -+ -+ Patch -+ -+ -+ To check if Mutt supports Trash Folder, look for -+ patch-trash in the mutt version. -+ See: . -+ -+ -+ If IMAP is enabled, this patch will use it -+ -+ -+ Dependencies: -+ mutt-1.6.1 -+ IMAP support -+ -+ -+ This patch is part of the NeoMutt Project. -+ -+ -+ -+ Introduction -+ -+ -+ In Mutt, when you delete an email it is first marked -+ deleted. The email isn't really gone until -+ <sync-mailbox> is called. -+ This happens when the user leaves the folder, or the function is called -+ manually. -+ -+ -+ -+ After <sync-mailbox> has been called the email is gone forever. -+ -+ -+ -+ The $trash variable defines a folder in -+ which to keep old emails. As before, first you mark emails for -+ deletion. When <sync-mailbox> is called the emails are moved to -+ the trash folder. -+ -+ -+ -+ The $trash path can be either a full directory, -+ or be relative to the $folder -+ variable, like the mailboxes command. -+ -+ -+ -+ Emails deleted from the trash folder are gone forever. -+ -+ -+ -+ -+ Variables -+ -+ Trash Variables -+ -+ -+ -+ Name -+ Type -+ Default -+ -+ -+ -+ -+ trash -+ string -+ (none) -+ -+ -+ -+
-+
-+ -+ -+ Functions -+ -+ Trash Functions -+ -+ -+ -+ Menus -+ Default Key -+ Function -+ Description -+ -+ -+ -+ -+ index,pager -+ (none) -+ <purge-message> -+ really delete the current entry, bypassing the trash folder -+ -+ -+ -+
-+
-+ -+ -+ -+ -+ Muttrc -+ -+# Example Mutt config file for the 'trash' feature. -+ -+# This feature defines a new 'trash' folder. -+# When mail is deleted it will be moved to this folder. -+ -+# Folder in which to put deleted emails -+set trash='+Trash' -+set trash='/home/flatcap/Mail/Trash' -+ -+# The default delete key 'd' will move an email to the 'trash' folder -+# Bind 'D' to REALLY delete an email -+bind index D purge-message -+ -+# Note: Deleting emails from the 'trash' folder will REALLY delete them. -+ -+# vim: syntax=muttrc -+ -+ -+ -+ -+ See Also -+ -+ -+ NeoMutt Project -+ folder-hook -+ -+ -+ -+ -+ Known Bugs -+ None -+ -+ -+ -+ Credits -+ -+ Cedric Duval cedricduval@free.fr -+ Benjamin Kuperman kuperman@acm.org -+ Paul Miller paul@voltar.org -+ Richard Russon rich@flatcap.org -+ -+ -+
-+ - - - -diff -urN mutt-1.6.1/doc/muttrc.trash mutt-1.6.1-trash/doc/muttrc.trash ---- mutt-1.6.1/doc/muttrc.trash 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-trash/doc/muttrc.trash 2016-06-12 18:43:04.768515676 +0100 -@@ -0,0 +1,16 @@ -+# Example Mutt config file for the 'trash' feature. -+ -+# This feature defines a new 'trash' folder. -+# When mail is deleted it will be moved to this folder. -+ -+# Folder in which to put deleted emails -+set trash='+Trash' -+set trash='/home/flatcap/Mail/Trash' -+ -+# The default delete key 'd' will move an email to the 'trash' folder -+# Bind 'D' to REALLY delete an email -+bind index D purge-message -+ -+# Note: Deleting emails from the 'trash' folder will REALLY delete them. -+ -+# vim: syntax=muttrc -diff -urN mutt-1.6.1/doc/vimrc.trash mutt-1.6.1-trash/doc/vimrc.trash ---- mutt-1.6.1/doc/vimrc.trash 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-trash/doc/vimrc.trash 2016-06-12 18:43:04.769515692 +0100 -@@ -0,0 +1,7 @@ -+" Vim syntax file for the mutt trash patch -+ -+syntax keyword muttrcVarStr contained skipwhite trash nextgroup=muttrcVarEqualsIdxFmt -+ -+syntax match muttrcFunction contained "\" -+ -+" vim: syntax=vim -diff -urN mutt-1.6.1/flags.c mutt-1.6.1-trash/flags.c ---- mutt-1.6.1/flags.c 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-trash/flags.c 2016-06-12 18:43:04.902517766 +0100 -@@ -65,7 +65,13 @@ - { - h->deleted = 0; - update = 1; -- if (upd_ctx) ctx->deleted--; -+ if (upd_ctx) { -+ ctx->deleted--; -+ if (h->appended) { -+ ctx->appended--; -+ } -+ } -+ h->appended = 0; /* when undeleting, also reset the appended flag */ - #ifdef USE_IMAP - /* see my comment above */ - if (ctx->magic == M_IMAP) -@@ -87,6 +93,27 @@ - } - break; - -+ case M_APPENDED: -+ if (bf) { -+ if (!h->appended) { -+ h->appended = 1; -+ if (upd_ctx) { -+ ctx->appended++; -+ } -+ } -+ } -+ break; -+ -+ case M_PURGED: -+ if (bf) { -+ if (!h->purged) { -+ h->purged = 1; -+ } -+ } else if (h->purged) { -+ h->purged = 0; -+ } -+ break; -+ - case M_NEW: - - if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN)) -diff -urN mutt-1.6.1/functions.h mutt-1.6.1-trash/functions.h ---- mutt-1.6.1/functions.h 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-trash/functions.h 2016-06-12 18:43:04.902517766 +0100 -@@ -121,6 +121,7 @@ - { "toggle-write", OP_TOGGLE_WRITE, "%" }, - { "next-thread", OP_MAIN_NEXT_THREAD, "\016" }, - { "next-subthread", OP_MAIN_NEXT_SUBTHREAD, "\033n" }, -+ { "purge-message", OP_PURGE_MESSAGE, NULL }, - { "query", OP_QUERY, "Q" }, - { "quit", OP_QUIT, "q" }, - { "reply", OP_REPLY, "r" }, -@@ -213,6 +214,7 @@ - { "print-message", OP_PRINT, "p" }, - { "previous-thread", OP_MAIN_PREV_THREAD, "\020" }, - { "previous-subthread",OP_MAIN_PREV_SUBTHREAD, "\033p" }, -+ { "purge-message", OP_PURGE_MESSAGE, NULL }, - { "quit", OP_QUIT, "Q" }, - { "exit", OP_EXIT, "q" }, - { "reply", OP_REPLY, "r" }, -diff -urN mutt-1.6.1/globals.h mutt-1.6.1-trash/globals.h ---- mutt-1.6.1/globals.h 2016-06-12 18:43:00.403447606 +0100 -+++ mutt-1.6.1-trash/globals.h 2016-06-12 18:43:04.903517781 +0100 -@@ -141,6 +141,7 @@ - WHERE char *Status; - WHERE char *Tempdir; - WHERE char *Tochars; -+WHERE char *TrashPath; - WHERE char *TSStatusFormat; - WHERE char *TSIconFormat; - WHERE short TSSupported; -diff -urN mutt-1.6.1/imap/imap.c mutt-1.6.1-trash/imap/imap.c ---- mutt-1.6.1/imap/imap.c 2016-06-12 18:43:00.405447637 +0100 -+++ mutt-1.6.1-trash/imap/imap.c 2016-06-12 18:43:04.905517812 +0100 -@@ -888,6 +888,12 @@ - if (hdrs[n]->deleted != HEADER_DATA(hdrs[n])->deleted) - match = invert ^ hdrs[n]->deleted; - break; -+ case M_EXPIRED: /* imap_fast_trash version of M_DELETED */ -+ if (hdrs[n]->purged) -+ break; -+ if (hdrs[n]->deleted != HEADER_DATA(hdrs[n])->deleted) -+ match = invert ^ (hdrs[n]->deleted && !hdrs[n]->appended); -+ break; - case M_FLAG: - if (hdrs[n]->flagged != HEADER_DATA(hdrs[n])->flagged) - match = invert ^ hdrs[n]->flagged; -@@ -2038,3 +2044,53 @@ - - return -1; - } -+ -+/** -+ * imap_fast_trash - XXX -+ */ -+int -+imap_fast_trash (void) -+{ -+ if ((Context->magic == M_IMAP) && mx_is_imap (TrashPath)) { -+ IMAP_MBOX mx; -+ IMAP_DATA *idata = (IMAP_DATA *) Context->data; -+ char mbox[LONG_STRING]; -+ char mmbox[LONG_STRING]; -+ int rc; -+ dprint (1, (debugfile, "[itf] trashcan seems to be on imap.\n")); -+ -+ if (imap_parse_path (TrashPath, &mx) == 0) { -+ if (mutt_account_match (&(idata->conn->account), &(mx.account))) { -+ dprint (1, (debugfile, "[itf] trashcan seems to be on the same account.\n")); -+ -+ imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox)); -+ if (!*mbox) -+ strfcpy (mbox, "INBOX", sizeof (mbox)); -+ imap_munge_mbox_name (idata, mmbox, sizeof (mmbox), mbox); -+ -+ rc = imap_exec_msgset (idata, "UID COPY", mmbox, M_EXPIRED, 0, 0); -+ if (rc == 0) { -+ dprint (1, (debugfile, "imap_copy_messages: No messages del-tagged\n")); -+ rc = -1; -+ goto old_way; -+ } else if (rc < 0) { -+ dprint (1, (debugfile, "could not queue copy\n")); -+ goto old_way; -+ } else { -+ mutt_message (_("Copying %d messages to %s..."), rc, mbox); -+ return 0; -+ } -+ } else { -+ dprint (1, (debugfile, "[itf] trashcan seems to be on a different account.\n")); -+ } -+old_way: -+ FREE(&mx.mbox); /* we probably only need to free this when the parse works */ -+ } else { -+ dprint (1, (debugfile, "[itf] failed to parse TrashPath.\n")); -+ } -+ -+ dprint (1, (debugfile, "[itf] giving up and trying old fasioned way.\n")); -+ } -+ -+ return 1; -+} -diff -urN mutt-1.6.1/imap/imap.h mutt-1.6.1-trash/imap/imap.h ---- mutt-1.6.1/imap/imap.h 2016-06-12 18:43:00.405447637 +0100 -+++ mutt-1.6.1-trash/imap/imap.h 2016-06-12 18:43:04.774515769 +0100 -@@ -72,4 +72,7 @@ - - int imap_account_match (const ACCOUNT* a1, const ACCOUNT* a2); - -+/* trash */ -+int imap_fast_trash (void); -+ - #endif -diff -urN mutt-1.6.1/imap/message.c mutt-1.6.1-trash/imap/message.c ---- mutt-1.6.1/imap/message.c 2016-06-12 18:43:00.406447652 +0100 -+++ mutt-1.6.1-trash/imap/message.c 2016-06-12 18:43:04.906517828 +0100 -@@ -886,6 +886,7 @@ - if (ctx->hdrs[n]->tagged) - { - mutt_set_flag (ctx, ctx->hdrs[n], M_DELETE, 1); -+ mutt_set_flag (ctx, ctx->hdrs[n], M_APPENDED, 1); - if (option (OPTDELETEUNTAG)) - mutt_set_flag (ctx, ctx->hdrs[n], M_TAG, 0); - } -@@ -893,6 +894,7 @@ - else - { - mutt_set_flag (ctx, h, M_DELETE, 1); -+ mutt_set_flag (ctx, h, M_APPENDED, 1); - if (option (OPTDELETEUNTAG)) - mutt_set_flag (ctx, h, M_TAG, 0); - } -diff -urN mutt-1.6.1/init.h mutt-1.6.1-trash/init.h ---- mutt-1.6.1/init.h 2016-06-12 18:43:00.408447684 +0100 -+++ mutt-1.6.1-trash/init.h 2016-06-12 18:43:04.909517875 +0100 -@@ -3419,6 +3419,16 @@ - ** provided that ``$$ts_enabled'' has been set. This string is identical in - ** formatting to the one used by ``$$status_format''. - */ -+ { "trash", DT_PATH, R_NONE, UL &TrashPath, 0 }, -+ /* -+ ** .pp -+ ** If set, this variable specifies the path of the trash folder where the -+ ** mails marked for deletion will be moved, instead of being irremediably -+ ** purged. -+ ** .pp -+ ** NOTE: When you delete a message in the trash folder, it is really -+ ** deleted, so that you have a way to clean the trash. -+ */ - #ifdef USE_SOCKET - { "tunnel", DT_STR, R_NONE, UL &Tunnel, UL 0 }, - /* -diff -urN mutt-1.6.1/mutt.h mutt-1.6.1-trash/mutt.h ---- mutt-1.6.1/mutt.h 2016-06-12 18:43:00.410447715 +0100 -+++ mutt-1.6.1-trash/mutt.h 2016-06-12 18:43:04.912517922 +0100 -@@ -182,6 +182,8 @@ - M_DELETE, - M_UNDELETE, - M_DELETED, -+ M_APPENDED, -+ M_PURGED, - M_FLAG, - M_TAG, - M_UNTAG, -@@ -719,6 +721,8 @@ - unsigned int mime : 1; /* has a MIME-Version header? */ - unsigned int flagged : 1; /* marked important? */ - unsigned int tagged : 1; -+ unsigned int appended : 1; /* has been saved */ -+ unsigned int purged : 1; /* bypassing the trash folder */ - unsigned int deleted : 1; - unsigned int changed : 1; - unsigned int attach_del : 1; /* has an attachment marked for deletion */ -@@ -891,6 +895,7 @@ - int new; /* how many new messages? */ - int unread; /* how many unread messages? */ - int deleted; /* how many deleted messages */ -+ int appended; /* how many saved messages? */ - int flagged; /* how many flagged messages */ - int msgnotreadyet; /* which msg "new" in pager, -1 if none */ - -diff -urN mutt-1.6.1/muttlib.c mutt-1.6.1-trash/muttlib.c ---- mutt-1.6.1/muttlib.c 2016-06-12 18:43:00.411447731 +0100 -+++ mutt-1.6.1-trash/muttlib.c 2016-06-12 18:43:04.913517937 +0100 -@@ -1511,7 +1511,9 @@ - - if (magic > 0 && !mx_access (s, W_OK)) - { -- if (option (OPTCONFIRMAPPEND)) -+ if (option (OPTCONFIRMAPPEND) && -+ (!TrashPath || (mutt_strcmp (s, TrashPath) != 0))) -+ /* if we're appending to the trash, there's no point in asking */ - { - snprintf (tmp, sizeof (tmp), _("Append messages to %s?"), s); - if ((rc = mutt_yesorno (tmp, M_YES)) == M_NO) -diff -urN mutt-1.6.1/mx.c mutt-1.6.1-trash/mx.c ---- mutt-1.6.1/mx.c 2016-06-12 18:43:00.411447731 +0100 -+++ mutt-1.6.1-trash/mx.c 2016-06-12 18:43:04.914517953 +0100 -@@ -776,6 +776,62 @@ - return rc; - } - -+/** -+ * trash_append - XXX -+ * -+ * move deleted mails to the trash folder -+ */ -+static int trash_append (CONTEXT *ctx) -+{ -+ CONTEXT *ctx_trash; -+ int i = 0; -+ struct stat st, stc; -+ -+ if (!TrashPath || !ctx->deleted || -+ ((ctx->magic == M_MAILDIR) && option (OPTMAILDIRTRASH))) { -+ return 0; -+ } -+ -+ for (; i < ctx->msgcount && (!ctx->hdrs[i]->deleted || ctx->hdrs[i]->appended); i++); -+ /* nothing */ -+ -+ if (i == ctx->msgcount) -+ return 0; /* nothing to be done */ -+ -+ if (mutt_save_confirm (TrashPath, &st) != 0) { -+ mutt_error _("message(s) not deleted"); -+ return -1; -+ } -+ -+ if (lstat (ctx->path, &stc) == 0 && stc.st_ino == st.st_ino -+ && stc.st_dev == st.st_dev && stc.st_rdev == st.st_rdev) { -+ return 0; /* we are in the trash folder: simple sync */ -+ } -+ -+#ifdef USE_IMAP -+ if (!imap_fast_trash()) -+ return 0; -+#endif -+ -+ if ((ctx_trash = mx_open_mailbox (TrashPath, M_APPEND, NULL)) != NULL) { -+ for (i = 0 ; i < ctx->msgcount ; i++) { -+ if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->appended -+ && !ctx->hdrs[i]->purged -+ && mutt_append_message (ctx_trash, ctx, ctx->hdrs[i], 0, 0) == -1) { -+ mx_close_mailbox (ctx_trash, NULL); -+ return -1; -+ } -+ } -+ -+ mx_close_mailbox (ctx_trash, NULL); -+ } else { -+ mutt_error _("Can't open trash folder"); -+ return -1; -+ } -+ -+ return 0; -+} -+ - /* save changes and close mailbox */ - int mx_close_mailbox (CONTEXT *ctx, int *index_hint) - { -@@ -912,6 +968,7 @@ - if (mutt_append_message (&f, ctx, ctx->hdrs[i], 0, CH_UPDATE_LEN) == 0) - { - mutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, 1); -+ mutt_set_flag (ctx, ctx->hdrs[i], M_APPENDED, 1); - } - else - { -@@ -936,6 +993,14 @@ - return 0; - } - -+ /* copy mails to the trash before expunging */ -+ if (purge && ctx->deleted && mutt_strcmp (ctx->path, TrashPath)) { -+ if (trash_append (ctx) != 0) { -+ ctx->closing = 0; -+ return -1; -+ } -+ } -+ - #ifdef USE_IMAP - /* allow IMAP to preserve the deleted flag across sessions */ - if (ctx->magic == M_IMAP) -@@ -1140,6 +1205,12 @@ - msgcount = ctx->msgcount; - deleted = ctx->deleted; - -+ if (purge && ctx->deleted && mutt_strcmp (ctx->path, TrashPath)) { -+ if (trash_append (ctx) == -1) { -+ return -1; -+ } -+ } -+ - #ifdef USE_IMAP - if (ctx->magic == M_IMAP) - rc = imap_sync_mailbox (ctx, purge, index_hint); -diff -urN mutt-1.6.1/OPS mutt-1.6.1-trash/OPS ---- mutt-1.6.1/OPS 2016-06-12 18:43:00.389447388 +0100 -+++ mutt-1.6.1-trash/OPS 2016-06-12 18:43:04.883517469 +0100 -@@ -142,6 +142,7 @@ - OP_PREV_LINE "scroll up one line" - OP_PREV_PAGE "move to the previous page" - OP_PRINT "print the current entry" -+OP_PURGE_MESSAGE "really delete the current entry, bypassing the trash folder" - OP_QUERY "query external program for addresses" - OP_QUERY_APPEND "append new query results to current results" - OP_QUIT "save changes to mailbox and quit" -diff -urN mutt-1.6.1/pager.c mutt-1.6.1-trash/pager.c ---- mutt-1.6.1/pager.c 2016-06-12 18:43:00.412447746 +0100 -+++ mutt-1.6.1-trash/pager.c 2016-06-12 18:43:04.915517968 +0100 -@@ -2351,6 +2351,7 @@ - MAYBE_REDRAW (redraw); - break; - -+ case OP_PURGE_MESSAGE: - case OP_DELETE: - CHECK_MODE(IsHeader (extra)); - CHECK_READONLY; -@@ -2358,6 +2359,8 @@ - CHECK_ACL(M_ACL_DELETE, _("Cannot delete message")); - - mutt_set_flag (Context, extra->hdr, M_DELETE, 1); -+ mutt_set_flag (Context, extra->hdr, M_PURGED, -+ ch != OP_PURGE_MESSAGE ? 0 : 1); - if (option (OPTDELETEUNTAG)) - mutt_set_flag (Context, extra->hdr, M_TAG, 0); - redraw = REDRAW_STATUS | REDRAW_INDEX; -@@ -2688,6 +2691,7 @@ - CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message")); - - mutt_set_flag (Context, extra->hdr, M_DELETE, 0); -+ mutt_set_flag (Context, extra->hdr, M_PURGED, 0); - redraw = REDRAW_STATUS | REDRAW_INDEX; - if (option (OPTRESOLVE)) - { -@@ -2704,9 +2708,11 @@ - CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message(s)")); - - r = mutt_thread_set_flag (extra->hdr, M_DELETE, 0, -+ ch == OP_UNDELETE_THREAD ? 0 : 1) -+ + mutt_thread_set_flag (extra->hdr, M_PURGED, 0, - ch == OP_UNDELETE_THREAD ? 0 : 1); - -- if (r != -1) -+ if (r > -1) - { - if (option (OPTRESOLVE)) - { -diff -urN mutt-1.6.1/PATCHES mutt-1.6.1-trash/PATCHES ---- mutt-1.6.1/PATCHES 2016-06-12 18:43:00.395447481 +0100 -+++ mutt-1.6.1-trash/PATCHES 2016-06-12 18:43:04.889517563 +0100 -@@ -0,0 +1 @@ -+patch-trash-neo-20160612 -diff -urN mutt-1.6.1/pattern.c mutt-1.6.1-trash/pattern.c ---- mutt-1.6.1/pattern.c 2016-06-12 18:43:00.413447762 +0100 -+++ mutt-1.6.1-trash/pattern.c 2016-06-12 18:43:04.916517984 +0100 -@@ -1367,8 +1367,9 @@ - { - switch (op) - { -- case M_DELETE: - case M_UNDELETE: -+ mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_PURGED, 0); -+ case M_DELETE: - mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, - (op == M_DELETE)); - break; -diff -urN mutt-1.6.1/postpone.c mutt-1.6.1-trash/postpone.c ---- mutt-1.6.1/postpone.c 2016-06-12 18:43:00.414447777 +0100 -+++ mutt-1.6.1-trash/postpone.c 2016-06-12 18:43:04.917518000 +0100 -@@ -277,6 +277,9 @@ - /* finished with this message, so delete it. */ - mutt_set_flag (PostContext, h, M_DELETE, 1); - -+ /* and consider it saved, so that it won't be moved to the trash folder */ -+ mutt_set_flag (PostContext, h, M_APPENDED, 1); -+ - /* update the count for the status display */ - PostCount = PostContext->msgcount - PostContext->deleted; - -diff -urN mutt-1.6.1/README.trash mutt-1.6.1-trash/README.trash ---- mutt-1.6.1/README.trash 1970-01-01 01:00:00.000000000 +0100 -+++ mutt-1.6.1-trash/README.trash 2016-06-12 18:43:04.748515364 +0100 -@@ -0,0 +1,74 @@ -+Trash Folder Patch -+================== -+ -+ Automatically move "deleted" emails to a trash bin -+ -+Patch -+----- -+ -+ To check if Mutt supports "Trash Folder", look for "patch-trash" in the -+ mutt version. -+ -+ If IMAP is enabled, this patch will use it -+ -+ Dependencies -+ * mutt-1.6.1 -+ * IMAP support -+ -+Introduction -+------------ -+ -+ In Mutt, when you "delete" an email it is first marked deleted. The email -+ isn't really gone until is called. This happens when the -+ user leaves the folder, or the function is called manually. -+ -+ After '' has been called the email is gone forever. -+ -+ The $trash variable defines a folder in which to keep old emails. As -+ before, first you mark emails for deletion. When is called -+ the emails are moved to the trash folder. -+ -+ The '$trash' path can be either a full directory, or be relative to the -+ $folder variable, like the 'mailboxes' command. -+ -+ > Note -+ > -+ > Emails deleted from the trash folder are gone forever. -+ -+Variables -+--------- -+ -+ Trash Variables -+ -+ | Name | Type | Default | -+ |-------|--------|---------| -+ | trash | string | (none) | -+ -+Functions -+--------- -+ -+ Trash Functions -+ -+ | Menus | Default Key | Function | Description | -+ |-------------|-------------|-------------------|-------------------------------------------------------------| -+ | index,pager | (none) | '' | really delete the current entry, bypassing the trash folder | -+ -+See Also -+-------- -+ -+ * NeoMutt project -+ * folder-hook -+ -+Known Bugs -+---------- -+ -+ None -+ -+Credits -+------- -+ -+ * Cedric Duval -+ * Benjamin Kuperman -+ * Paul Miller -+ * Richard Russon -+ diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix index 87d74aeafd87..b6d318011aa1 100644 --- a/pkgs/applications/networking/syncthing/default.nix +++ b/pkgs/applications/networking/syncthing/default.nix @@ -1,13 +1,13 @@ { stdenv, fetchgit, go }: stdenv.mkDerivation rec { - version = "0.13.9"; + version = "0.13.10"; name = "syncthing-${version}"; src = fetchgit { url = https://github.com/syncthing/syncthing; rev = "refs/tags/v${version}"; - sha256 = "1ah3a86rjfqlx4mqyvn8j3r806i65mzhs5xnfg4aakzmwpr5zpx0"; + sha256 = "07q3j6mnrza719rnvbkdsmvlkyr2pch5sj2l204m5iy5mxaghpx7"; }; buildInputs = [ go ]; diff --git a/pkgs/applications/office/kmymoney/default.nix b/pkgs/applications/office/kmymoney/default.nix index 8884c78e883d..2516cfd45971 100644 --- a/pkgs/applications/office/kmymoney/default.nix +++ b/pkgs/applications/office/kmymoney/default.nix @@ -3,11 +3,12 @@ , doxygen, aqbanking, gwenhywfar }: stdenv.mkDerivation rec { - name = "kmymoney-4.7.2"; + name = "kmymoney-${version}"; + version = "4.8.0"; src = fetchurl { - url = "mirror://sourceforge/kmymoney2/${name}.tar.xz"; - sha256 = "0g9rakjx7zmw4bf7m5516rrx0n3bl2by3nn24iiz9209yfgw5cmz"; + url = "mirror://kde/stable/kmymoney/${version}/src/${name}.tar.xz"; + sha256 = "1hlayhcmdfayma4hchv2bfyg82ry0h74hg4095d959mg19qkb9n2"; }; cmakeFlags = [ diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix index 9c1e1b789900..63af5babca27 100644 --- a/pkgs/applications/office/libreoffice/default.nix +++ b/pkgs/applications/office/libreoffice/default.nix @@ -124,6 +124,8 @@ in stdenv.mkDerivation rec { sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk # one more fragile test? sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx + # rendering-dependent test + sed -e '/CPPUNIT_ASSERT_EQUAL(11148L, pOleObj->GetLogicRect().getWidth());/d ' -i sc/qa/unit/subsequent_filters-test.cxx ''; makeFlags = "SHELL=${bash}/bin/bash"; diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix index b8ad900fb14a..eadf41356308 100644 --- a/pkgs/applications/office/libreoffice/still.nix +++ b/pkgs/applications/office/libreoffice/still.nix @@ -124,6 +124,8 @@ in stdenv.mkDerivation rec { sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk # one more fragile test? sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx + # rendering-dependent test + sed -e '/CPPUNIT_ASSERT_EQUAL(11148L, pOleObj->GetLogicRect().getWidth());/d ' -i sc/qa/unit/subsequent_filters-test.cxx ''; makeFlags = "SHELL=${bash}/bin/bash"; diff --git a/pkgs/applications/office/mendeley/default.nix b/pkgs/applications/office/mendeley/default.nix index 529c41ec8992..5ad6df96325e 100644 --- a/pkgs/applications/office/mendeley/default.nix +++ b/pkgs/applications/office/mendeley/default.nix @@ -19,7 +19,7 @@ let url = "http://desktop-download.mendeley.com/download/apt/pool/main/m/mendeleydesktop/mendeleydesktop_${version}.deb"; sha256 = if stdenv.system == arch32 then "0lsmaw8zzyfvndsz1awz3vl5cdvsik9wc3ck8983y20awh7r9f4m" - else "12p6rgxiqajnfgd8nmknyb8icdkln727sshba8x1xlxakxg5c4q4"; + else "0q11v6dv7z5q4s9hlr1hmsd73nmkp8l0sj0b3hjxfblx4mqk6wl7"; deps = [ gcc.cc diff --git a/pkgs/applications/office/planner/default.nix b/pkgs/applications/office/planner/default.nix new file mode 100644 index 000000000000..9222ed5757ce --- /dev/null +++ b/pkgs/applications/office/planner/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl +, pkgconfig +, intltool +, gnome +, libxslt +, python +}: + +let + version = "${major}.${minor}.${patch}"; + major = "0"; + minor = "14"; + patch = "6"; + +in stdenv.mkDerivation { + name = "planner-${version}"; + + src = fetchurl { + url = "http://ftp.gnome.org/pub/GNOME/sources/planner/${major}.${minor}/planner-${version}.tar.xz"; + sha256 = "15h6ps58giy5r1g66sg1l4xzhjssl362mfny2x09khdqsvk2j38k"; + }; + + buildInputs = [ + pkgconfig + intltool + gnome.GConf + gnome.gtk + gnome.libgnomecanvas + gnome.libgnomeui + gnome.libglade + gnome.scrollkeeper + libxslt + python + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = https://wiki.gnome.org/Apps/Planner/; + description = "Project management application for GNOME"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.rasendubi ]; + }; +} diff --git a/pkgs/applications/science/electronics/fritzing/default.nix b/pkgs/applications/science/electronics/fritzing/default.nix index 110759ea292c..3f80ed2866d3 100644 --- a/pkgs/applications/science/electronics/fritzing/default.nix +++ b/pkgs/applications/science/electronics/fritzing/default.nix @@ -9,8 +9,18 @@ stdenv.mkDerivation rec { sha256 = "181qnknq1j5x075icpw2qk0sc4wcj9f2hym533vs936is0wxp2gk"; }; + unpackPhase = '' + tar xjf ${src} + ''; + buildInputs = [ qtbase qtsvg boost qmakeHook ]; + qmakeFlags = [ "phoenix.pro" ]; + + preConfigure = '' + cd fritzing-${version}.source + ''; + meta = { description = "An open source prototyping tool for Arduino-based projects"; homepage = http://fritzing.org/; diff --git a/pkgs/applications/science/logic/coq/8.5.nix b/pkgs/applications/science/logic/coq/8.5.nix index 1485626125d2..eb74891f511c 100644 --- a/pkgs/applications/science/logic/coq/8.5.nix +++ b/pkgs/applications/science/logic/coq/8.5.nix @@ -6,7 +6,7 @@ {stdenv, fetchurl, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}: let - version = "8.5pl1"; + version = "8.5pl2"; coq-version = "8.5"; buildIde = lablgtk != null; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; @@ -24,7 +24,7 @@ stdenv.mkDerivation { src = fetchurl { url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz"; - sha256 = "1w2xvm6w16khfn63bp95s25hnkn2ny3w0yqg3lq63gp11aqpbyjb"; + sha256 = "0wyywia0darak2zmc5v0ra9rn0b9whwdfiahralm8v5za499s8w3"; }; buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ]; @@ -34,7 +34,7 @@ stdenv.mkDerivation { RM=$(type -tp rm) substituteInPlace configure --replace "/bin/uname" "$UNAME" substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM" - substituteInPlace configure.ml --replace "if arch = \"Darwin\" then \"md5" "if arch = \"Darwinx\" then \"md5" + substituteInPlace configure.ml --replace "if arch = \"Darwin\" || arch = \"FreeBSD\" then \"md5" "if arch = \"Darwinx\" then \"md5" ${csdpPatch} ''; diff --git a/pkgs/applications/science/logic/tptp/default.nix b/pkgs/applications/science/logic/tptp/default.nix index e9a89bc0dc6d..32906b88d590 100644 --- a/pkgs/applications/science/logic/tptp/default.nix +++ b/pkgs/applications/science/logic/tptp/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { name = "TPTP-${version}"; - version = "6.3.0"; + version = "6.4.0"; src = fetchurl { url = [ "http://www.cs.miami.edu/~tptp/TPTP/Distribution/TPTP-v${version}.tgz" "http://www.cs.miami.edu/~tptp/TPTP/Archive/TPTP-v${version}/TPTP-v${version}.tgz" ]; - sha256 = "0xy4cqniyx9fv8r9mc5q5b7xl163pkr9hcmpq6gkls2a0pvg07w9"; + sha256 = "1i5hi8grfl5zyh8py63zn39rg019bd90h2l312iswbgai6nyfdw0"; }; buildInputs = [ tcsh yap perl patchelf ]; diff --git a/pkgs/applications/science/logic/why3/default.nix b/pkgs/applications/science/logic/why3/default.nix index 7825fc2761ed..3891f3ca6d17 100644 --- a/pkgs/applications/science/logic/why3/default.nix +++ b/pkgs/applications/science/logic/why3/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "why3-${version}"; - version = "0.87.0"; + version = "0.87.1"; src = fetchurl { - url = https://gforge.inria.fr/frs/download.php/file/35643/why3-0.87.0.tar.gz; - sha256 = "0c3vhcb70ay7iwvmq0m25fqh38y40c5x7mki4r9pxf13vgbs3xb0"; + url = https://gforge.inria.fr/frs/download.php/file/35893/why3-0.87.1.tar.gz; + sha256 = "1ssik2f6fkpvwpdmxz8hrm3p62qas3sjlqya0r57s60ilpkgiwwb"; }; buildInputs = (with ocamlPackages; [ diff --git a/pkgs/applications/science/math/LiE/default.nix b/pkgs/applications/science/math/LiE/default.nix index 233f44b44cc8..b448b5114212 100644 --- a/pkgs/applications/science/math/LiE/default.nix +++ b/pkgs/applications/science/math/LiE/default.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { cp -v Lie.exe $out cp -v lie $out/bin - cp -v LEARN LEARN.ind $out - cp -v INFO.ind INFO.[0-4] $out + cp -v LEARN* $out + cp -v INFO* $out ''; } diff --git a/pkgs/applications/science/math/jags/default.nix b/pkgs/applications/science/math/jags/default.nix index 9d70d2686911..ceebfa458a8a 100644 --- a/pkgs/applications/science/math/jags/default.nix +++ b/pkgs/applications/science/math/jags/default.nix @@ -1,10 +1,10 @@ {stdenv, fetchurl, gfortran, openblas}: stdenv.mkDerivation rec { - name = "JAGS-3.4.0"; + name = "JAGS-4.1.0"; src = fetchurl { url = "mirror://sourceforge/mcmc-jags/${name}.tar.gz"; - sha256 = "0ayqsz9kkmbss7mxlwr34ch2z1vsb65lryjzqpprab1ccyiaksib"; + sha256 = "08pmrnbwibc0brgn5cx860jcl0s2xaw4amw7g45649r1bcdz7v25"; }; buildInputs = [gfortran openblas]; configureFlags = [ "--with-blas=-lopenblas" "--with-lapack=-lopenblas" ]; diff --git a/pkgs/applications/version-management/bitkeeper/default.nix b/pkgs/applications/version-management/bitkeeper/default.nix new file mode 100644 index 000000000000..760832924822 --- /dev/null +++ b/pkgs/applications/version-management/bitkeeper/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, perl, gperf, bison, groff +, pkgconfig, libXft, fontconfig, pcre +, libtomcrypt, libtommath, lz4, zlib }: + +stdenv.mkDerivation rec { + name = "bitkeeper-${version}"; + version = "7.3ce"; + + src = fetchurl { + url = "https://www.bitkeeper.org/downloads/${version}/bk-${version}.tar.gz"; + sha256 = "0lk4vydpq5bi52m81h327gvzdzybf8kkak7yjwmpj6kg1jn9blaz"; + }; + + enableParallelBuilding = true; + + buildInputs = [ + perl gperf bison groff libXft pkgconfig + pcre libtomcrypt libtommath lz4 + ]; + + postPatch = '' + substituteInPlace port/unix_platform.sh \ + --replace /bin/rm rm + substituteInPlace ./undo.c \ + --replace /bin/cat cat + ''; + + sourceRoot = "bk-${version}/src"; + buildPhase = '' + make -j6 V=1 p + make image + ''; + + installPhase = '' + ./utils/bk-* $out/bitkeeper + mkdir -p $out/bin + $out/bitkeeper/bk links $out/bin + chmod g-w $out + ''; + + meta = { + description = "A distributed version control system"; + longDescription = '' + BitKeeper is a fast, enterprise-ready, distributed SCM that + scales up to very large projects and down to tiny ones. + ''; + homepage = https://www.bitkeeper.org/; + license = stdenv.lib.licenses.asl20; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ wscott thoughtpolice ]; + }; +} diff --git a/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix b/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix index 8f96f36cf86c..a3881baf1e71 100644 --- a/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix +++ b/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "diff-so-fancy-${version}"; - version = "0.10.0"; + version = "0.10.1"; # perl is needed here so patchShebangs can do its job buildInputs = [perl makeWrapper]; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { owner = "so-fancy"; repo = "diff-so-fancy"; rev = "v${version}"; - sha256 = "08dv9xlrsyjr1ylm83lbsv2p5asfia4ib97bwgcacsdxxh5zyqh9"; + sha256 = "0wp5civn70jzil1gbygx6ccrxfrmc8xx90v7zgf36rqi2yhvv64m"; }; buildPhase = null; diff --git a/pkgs/applications/version-management/guitone/default.nix b/pkgs/applications/version-management/guitone/default.nix index 8731cbfde19b..8f8750b98c22 100644 --- a/pkgs/applications/version-management/guitone/default.nix +++ b/pkgs/applications/version-management/guitone/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation rec { buildInputs = [ qt4 qmake4Hook pkgconfig graphviz ]; + qmakeFlags = [ "guitone.pro" ]; + meta = { description = "Qt4 based GUI for monotone"; homepage = http://guitone.thomaskeller.biz; diff --git a/pkgs/applications/video/openshot-qt/default.nix b/pkgs/applications/video/openshot-qt/default.nix new file mode 100644 index 000000000000..5f142d715f58 --- /dev/null +++ b/pkgs/applications/video/openshot-qt/default.nix @@ -0,0 +1,48 @@ +{stdenv, fetchurl, fetchFromGitHub, callPackage, makeWrapper, doxygen +, ffmpeg, python3Packages, qt55}: + +with stdenv.lib; + +let + libopenshot = callPackage ./libopenshot.nix {}; +in +stdenv.mkDerivation rec { + name = "openshot-qt-${version}"; + version = "2.0.7"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "openshot-qt"; + rev = "v${version}"; + sha256 = "1s4b61fd8cyjy8kvc25mqd97dkxx6gqmz02i42rrcriz51pw8wgh"; + }; + + buildInputs = [doxygen python3Packages.python makeWrapper ffmpeg]; + + propagatedBuildInputs = [ + qt55.qtbase + qt55.qtmultimedia + libopenshot + ]; + + installPhase = '' + mkdir -p $(toPythonPath $out) + cp -r src/* $(toPythonPath $out) + mkdir -p $out/bin + echo "#/usr/bin/env sh" >$out/bin/openshot-qt + echo "exec ${python3Packages.python.interpreter} $(toPythonPath $out)/launch.py" >>$out/bin/openshot-qt + chmod +x $out/bin/openshot-qt + wrapProgram $out/bin/openshot-qt \ + --prefix PYTHONPATH : "$(toPythonPath $out):$(toPythonPath ${libopenshot}):$(toPythonPath ${python3Packages.pyqt5}):$(toPythonPath ${python3Packages.sip_4_16}):$(toPythonPath ${python3Packages.httplib2}):$PYTHONPATH" + ''; + + doCheck = false; + + meta = { + homepage = "http://openshot.org/"; + description = "Free, open-source video editor"; + license = licenses.gpl3Plus; + maintainers = [maintainers.tohl]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/video/openshot-qt/libopenshot-audio.nix b/pkgs/applications/video/openshot-qt/libopenshot-audio.nix new file mode 100644 index 000000000000..8b583d4ec5cb --- /dev/null +++ b/pkgs/applications/video/openshot-qt/libopenshot-audio.nix @@ -0,0 +1,31 @@ +{stdenv, fetchurl, fetchFromGitHub, cmake, doxygen +, libX11, libXft, libXrandr, libXinerama, libXext, libXcursor, alsaLib}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "libopenshot-audio-${version}"; + version = "0.1.1"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "libopenshot-audio"; + rev = "v${version}"; + sha256 = "0pgw7vzx3znglwm58187ybhg5maa13n4xcy5hrhzfsp8bqhrwkc7"; + }; + + buildInputs = [ + cmake doxygen + libX11 libXft libXrandr libXinerama libXext libXcursor alsaLib + ]; + + doCheck = false; + + meta = { + homepage = "http://openshot.org/"; + description = "Free, open-source video editor"; + license = licenses.gpl3Plus; + maintainers = [maintainers.tohl]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/video/openshot-qt/libopenshot.nix b/pkgs/applications/video/openshot-qt/libopenshot.nix new file mode 100644 index 000000000000..2737c48ec83d --- /dev/null +++ b/pkgs/applications/video/openshot-qt/libopenshot.nix @@ -0,0 +1,46 @@ +{stdenv, fetchurl, fetchFromGitHub, callPackage, cmake, doxygen +, imagemagick, ffmpeg, qt55, swig, python3, ruby, unittest-cpp}: + +with stdenv.lib; + +let + libopenshot_audio = callPackage ./libopenshot-audio.nix {}; +in +stdenv.mkDerivation rec { + name = "libopenshot-${version}"; + version = "0.1.1"; + + src = fetchFromGitHub { + owner = "OpenShot"; + repo = "libopenshot"; + rev = "v${version}"; + sha256 = "12nfkris7spn8n4s8fvy2f6yk1hqh97wzh1z3fsdxldg4gppi903"; + }; + + patchPhase = '' + sed -i 's/{UNITTEST++_INCLUDE_DIR}/ENV{UNITTEST++_INCLUDE_DIR}/g' tests/CMakeLists.txt + sed -i 's/{_REL_PYTHON_MODULE_PATH}/ENV{_REL_PYTHON_MODULE_PATH}/g' src/bindings/python/CMakeLists.txt + sed -i 's/{RUBY_VENDOR_ARCH_DIR}/ENV{RUBY_VENDOR_ARCH_DIR}/g' src/bindings/ruby/CMakeLists.txt + export _REL_PYTHON_MODULE_PATH=$(toPythonPath $out) + export RUBY_VENDOR_ARCH_DIR=$out/lib/ruby/site-packages + ''; + + buildInputs = [ + cmake doxygen + imagemagick ffmpeg qt55.qtbase qt55.qtmultimedia swig python3 ruby + unittest-cpp + ]; + + LIBOPENSHOT_AUDIO_DIR = "${libopenshot_audio}"; + "UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++"; + + doCheck = false; + + meta = { + homepage = "http://openshot.org/"; + description = "Free, open-source video editor"; + license = licenses.gpl3Plus; + maintainers = [maintainers.tohl]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/virtualization/rkt/default.nix b/pkgs/applications/virtualization/rkt/default.nix index 17c7f7e29287..18e5d6dd4dbf 100644 --- a/pkgs/applications/virtualization/rkt/default.nix +++ b/pkgs/applications/virtualization/rkt/default.nix @@ -50,7 +50,11 @@ in stdenv.mkDerivation rec { installPhase = '' mkdir -p $out/bin - cp -Rv $BUILDDIR/target/bin/* $out/bin + cp -Rv $BUILDDIR/target/bin/rkt $out/bin + + mkdir -p $out/lib/rkt/stage1-images/ + cp -Rv $BUILDDIR/target/bin/stage1-*.aci $out/lib/rkt/stage1-images/ + wrapProgram $out/bin/rkt \ --prefix LD_LIBRARY_PATH : ${systemd}/lib \ --prefix PATH : ${iptables}/bin diff --git a/pkgs/applications/window-managers/compton/default.nix b/pkgs/applications/window-managers/compton/default.nix index 7efacafd6a1c..5a79c0829b5a 100644 --- a/pkgs/applications/window-managers/compton/default.nix +++ b/pkgs/applications/window-managers/compton/default.nix @@ -1,10 +1,8 @@ -{ stdenv, fetchurl, pkgconfig -, dbus, libconfig, libdrm, libxml2, mesa, pcre -, libXcomposite, libXfixes, libXdamage, libXinerama -, libXrandr, libXrender, libXext }: +{ stdenv, fetchurl, pkgconfig, dbus, libconfig, libdrm, libxml2, mesa, pcre, + libXcomposite, libXfixes, libXdamage, libXinerama, libXrandr, libXrender, + libXext, xwininfo }: stdenv.mkDerivation rec { - name = "compton-0.1_beta2"; src = fetchurl { @@ -12,18 +10,36 @@ stdenv.mkDerivation rec { sha256 = "1mpgn1d98dv66xs2j8gaxjiw26nzwl9a641lrday7h40g3k45g9v"; }; - buildInputs = [ pkgconfig dbus libconfig libdrm libxml2 mesa pcre - libXcomposite libXfixes libXdamage libXinerama libXrandr libXrender libXext ]; + buildInputs = [ + pkgconfig + dbus + libconfig + libdrm + libxml2 + mesa + pcre + libXcomposite + libXfixes + libXdamage + libXinerama + libXrandr + libXrender + libXext + ]; + + propagatedBuildInputs = [ xwininfo ]; + installFlags = "PREFIX=$(out)"; meta = with stdenv.lib; { homepage = https://github.com/chjj/compton/; description = "A fork of XCompMgr, a sample compositing manager for X servers"; longDescription = '' - A fork of XCompMgr, which is a sample compositing manager for X servers - supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE extensions. It enables - basic eye-candy effects. This fork adds additional features, such as additional - effects, and a fork at a well-defined and proper place. + A fork of XCompMgr, which is a sample compositing manager for X + servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE + extensions. It enables basic eye-candy effects. This fork adds + additional features, such as additional effects, and a fork at a + well-defined and proper place. ''; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/window-managers/compton/git.nix b/pkgs/applications/window-managers/compton/git.nix index f4907f881af8..afa7d123107b 100644 --- a/pkgs/applications/window-managers/compton/git.nix +++ b/pkgs/applications/window-managers/compton/git.nix @@ -1,7 +1,7 @@ { stdenv, fetchFromGitHub, asciidoc, dbus, docbook_xml_dtd_45, docbook_xml_xslt, libconfig, libdrm, libxml2, libxslt, mesa, pcre, pkgconfig, libXcomposite, libXdamage, libXext, libXfixes, libXinerama, - libXrandr, libXrender }: + libXrandr, libXrender, xwininfo }: stdenv.mkDerivation { name = "compton-git-2015-09-21"; @@ -37,6 +37,8 @@ stdenv.mkDerivation { pcre ]; + propagatedBuildInputs = [ xwininfo ]; + installFlags = "PREFIX=$(out)"; meta = with stdenv.lib; { @@ -47,7 +49,7 @@ stdenv.mkDerivation { longDescription = '' A fork of XCompMgr, which is a sample compositing manager for X servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE - extensions. It enables basic eye-candy effects. This fork adds + extensions. It enables basic eye-candy effects. This fork adds additional features, such as additional effects, and a fork at a well-defined and proper place. ''; diff --git a/pkgs/applications/window-managers/pekwm/default.nix b/pkgs/applications/window-managers/pekwm/default.nix new file mode 100644 index 000000000000..60753e468408 --- /dev/null +++ b/pkgs/applications/window-managers/pekwm/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig +, libpng, libjpeg +, libXext, libXft, libXpm, libXrandr, libXinerama }: + +stdenv.mkDerivation rec { + + name = "pekwm-${version}"; + version = "0.1.17"; + + src = fetchurl { + url = "https://www.pekwm.org/projects/pekwm/files/${name}.tar.bz2"; + sha256 = "003x6bxj1lb2ljxz3v414bn0rdl6z68c0r185fxwgs1qkyzx67wa"; + }; + + buildInputs = [ pkgconfig libpng libjpeg + libXext libXft libXpm libXrandr libXinerama ]; + + meta = with stdenv.lib; { + description = "A lightweight window manager"; + longDescription = '' + pekwm is a window manager that once upon a time was based on the + aewm++ window manager, but it has evolved enough that it no + longer resembles aewm++ at all. It has a much expanded + feature-set, including window grouping (similar to ion, pwm, or + fluxbox), autoproperties, xinerama, keygrabber that supports + keychains, and much more. + - Lightweight and Unobtrusive, a window manager shouldn't be + noticed. + - Very configurable, we all work and think in different ways. + - Automatic properties, for all the lazy people, make things + appear as they should when starting applications. + - Chainable Keygrabber, usability for everyone. + ''; + homepage = https://www.pekwm.org; + license = licenses.gpl2; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix index 81fbedc4917b..62b0b9c11eab 100644 --- a/pkgs/applications/window-managers/sway/default.nix +++ b/pkgs/applications/window-managers/sway/default.nix @@ -3,39 +3,41 @@ , wayland, wlc, libxkbcommon, pixman, fontconfig, pcre, json_c, dbus_libs }: -stdenv.mkDerivation rec { - name = "sway-${version}"; - version = "0.7"; +let + version = "0.8"; +in + stdenv.mkDerivation rec { + name = "sway-${version}"; - src = fetchFromGitHub { - owner = "Sircmpwn"; - repo = "sway"; - rev = "0.7"; - sha256 = "05mn68brqz7j3a1sb5xd3pxzzdd8swnhw2g7cc9f7rdjr5dlrjip"; - }; + src = fetchFromGitHub { + owner = "Sircmpwn"; + repo = "sway"; + rev = "${version}"; + sha256 = "10i62cn1z7fwg0jwkskmzcaha39lprkl4zvkp59jr5wvpjligdq3"; + }; - nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ]; + nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ]; - buildInputs = [ wayland wlc libxkbcommon pixman fontconfig pcre json_c dbus_libs pango cairo libinput ]; + buildInputs = [ wayland wlc libxkbcommon pixman fontconfig pcre json_c dbus_libs pango cairo libinput ]; - patchPhase = '' - sed -i s@/etc/sway@$out/etc/sway@g CMakeLists.txt; - ''; + patchPhase = '' + sed -i s@/etc/sway@$out/etc/sway@g CMakeLists.txt; + ''; - makeFlags = "PREFIX=$(out)"; - installPhase = "PREFIX=$out make install"; + makeFlags = "PREFIX=$(out)"; + installPhase = "PREFIX=$out make install"; - LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ wlc dbus_libs ]; - preFixup = '' - wrapProgram $out/bin/sway \ - --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"; - ''; + LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ wlc dbus_libs ]; + preFixup = '' + wrapProgram $out/bin/sway \ + --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}"; + ''; - meta = with stdenv.lib; { - description = "i3-compatible window manager for Wayland"; - homepage = "http://swaywm.org"; - license = licenses.mit; - platforms = platforms.linux; - maintainers = with maintainers; [ ]; - }; -} + meta = with stdenv.lib; { + description = "i3-compatible window manager for Wayland"; + homepage = "http://swaywm.org"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ ]; + }; + } diff --git a/pkgs/build-support/docker/tarsum.go b/pkgs/build-support/docker/tarsum.go index 4c25f11b71e0..ad33bbac75b4 100644 --- a/pkgs/build-support/docker/tarsum.go +++ b/pkgs/build-support/docker/tarsum.go @@ -1,24 +1,24 @@ package main import ( - "tarsum" - "io" - "io/ioutil" - "fmt" - "os" + "fmt" + "io" + "io/ioutil" + "os" + "tarsum" ) func main() { - ts, err := tarsum.NewTarSum(os.Stdin, false, tarsum.Version1) - if err != nil { - fmt.Println(err) - os.Exit(1) - } + ts, err := tarsum.NewTarSum(os.Stdin, true, tarsum.Version1) + if err != nil { + fmt.Println(err) + os.Exit(1) + } - if _, err = io.Copy(ioutil.Discard, ts); err != nil { - fmt.Println(err) - os.Exit(1) - } + if _, err = io.Copy(ioutil.Discard, ts); err != nil { + fmt.Println(err) + os.Exit(1) + } - fmt.Println(ts.Sum(nil)) -} \ No newline at end of file + fmt.Println(ts.Sum(nil)) +} diff --git a/pkgs/build-support/fetchmavenartifact/default.nix b/pkgs/build-support/fetchmavenartifact/default.nix new file mode 100644 index 000000000000..a9c53249ae81 --- /dev/null +++ b/pkgs/build-support/fetchmavenartifact/default.nix @@ -0,0 +1,75 @@ +# Adaptation of the MIT-licensed work on `sbt2nix` done by Charles O'Farrell + +{ fetchurl, stdenv }: +let + defaultRepos = [ + http://central.maven.org/maven2 + http://oss.sonatype.org/content/repositories/releases + http://oss.sonatype.org/content/repositories/public + http://repo.typesafe.com/typesafe/releases + ]; +in + +args@ +{ # Example: "org.apache.httpcomponents" + groupId +, # Example: "httpclient" + artifactId +, # Example: "4.3.6" + version +, # List of maven repositories from where to fetch the artifact. + # Example: [ http://oss.sonatype.org/content/repositories/public ]. + repos ? defaultRepos + # The `url` and `urls` parameters, if specified should point to the JAR + # file and will take precedence over the `repos` parameter. Only one of `url` + # and `urls` can be specified, not both. +, url ? "" +, urls ? [] +, # The rest of the arguments are just forwarded to `fetchurl`. + ... +}: + +# only one of url and urls can be specified at a time. +assert (url == "") || (urls == []); +# if repos is empty, then url or urls must be specified. +assert (repos != []) || (url != "") || (urls != []); + + +let + name_ = + with stdenv.lib; concatStrings [ + (replaceChars ["."] ["_"] groupId) "_" + (replaceChars ["."] ["_"] artifactId) "-" + version + ]; + mkJarUrl = repoUrl: + with stdenv.lib; concatStringsSep "/" [ + (removeSuffix "/" repoUrl) + (replaceChars ["."] ["/"] groupId) + artifactId + version + "${artifactId}-${version}.jar" + ]; + urls_ = + if url != "" then [url] + else if urls != [] then urls + else map mkJarUrl repos; + jar = + fetchurl ( + builtins.removeAttrs args ["groupId" "artifactId" "version" "repos" "url" ] + // { urls = urls_; name = "${name_}.jar"; } + ); +in + stdenv.mkDerivation { + name = name_; + phases = "installPhase fixupPhase"; + # By moving the jar to $out/share/java we make it discoverable by java + # packages packages that mention this derivation in their buildInputs. + installPhase = '' + mkdir -p $out/share/java + ln -s ${jar} $out/share/java + ''; + # We also add a `jar` attribute that can be used to easily obtain the path + # to the downloaded jar file. + passthru.jar = jar; + } diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix index d97ecb32be5d..68244a43e58f 100644 --- a/pkgs/build-support/fetchurl/mirrors.nix +++ b/pkgs/build-support/fetchurl/mirrors.nix @@ -10,6 +10,7 @@ rec { # SourceForge. sourceforge = [ + http://downloads.sourceforge.net/ http://prdownloads.sourceforge.net/ http://heanet.dl.sourceforge.net/sourceforge/ http://surfnet.dl.sourceforge.net/sourceforge/ diff --git a/pkgs/data/fonts/liberationsansnarrow/binary.nix b/pkgs/data/fonts/liberationsansnarrow/binary.nix new file mode 100644 index 000000000000..c7afc91af84f --- /dev/null +++ b/pkgs/data/fonts/liberationsansnarrow/binary.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, liberationsansnarrow }: + +stdenv.mkDerivation rec { + version = "1.07.3"; + name = "liberationsansnarrow-${version}"; + src = fetchurl { + url = "https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-${version}.tar.gz"; + sha256 = "0qkr7n97jmj4q85jr20nsf6n5b48j118l9hr88vijn22ikad4wsp"; + }; + + phases = [ "unpackPhase" "installPhase" ]; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp -v $(find . -name '*Narrow*.ttf') $out/share/fonts/truetype + + mkdir -p "$out/doc/${name}" + cp -v AUTHORS ChangeLog COPYING License.txt README "$out/doc/${name}" || true + ''; + + inherit (liberationsansnarrow) meta; +} diff --git a/pkgs/data/fonts/liberationsansnarrow/default.nix b/pkgs/data/fonts/liberationsansnarrow/default.nix new file mode 100644 index 000000000000..6a5e81cd3c75 --- /dev/null +++ b/pkgs/data/fonts/liberationsansnarrow/default.nix @@ -0,0 +1,39 @@ +{stdenv, fetchurl, fontforge, pythonPackages, python}: + +stdenv.mkDerivation rec { + pname = "liberationsansnarrow"; + version = "1.07.3"; + name = "${pname}"; + + src = fetchurl { + url = "https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-${version}.tar.gz"; + sha256 = "0qkr7n97jmj4q85jr20nsf6n5b48j118l9hr88vijn22ikad4wsp"; + }; + + buildInputs = [ fontforge pythonPackages.fonttools python ]; + + installPhase = '' + mkdir -p $out/share/fonts/truetype + cp -v $(find . -name '*Narrow*.ttf') $out/share/fonts/truetype + + mkdir -p "$out/doc/${name}" + cp -v AUTHORS ChangeLog COPYING License.txt README "$out/doc/${name}" || true + ''; + + meta = with stdenv.lib; { + description = "Liberation Sans Narrow Font Family is a replacement for Arial Narrow"; + longDescription = '' + Liberation Sans Narrow is a font originally created by Ascender + Inc and licensed to Oracle Corporation under a GPLv2 license. It is + metrically compatible with the commonly used Arial Narrow fonts + on Microsoft systems. It is no longer distributed with the + latest versions of the Liberation Fonts, as Red Hat has changed the + license to the Open Font License. + ''; + + license = licenses.gpl2; + homepage = https://fedorahosted.org/liberation-fonts/; + maintainers = [ maintainers.leenaars + ]; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/default.nix b/pkgs/desktops/gnome-3/3.18/default.nix index d0a113ff0a48..78a892ebe3fa 100644 --- a/pkgs/desktops/gnome-3/3.18/default.nix +++ b/pkgs/desktops/gnome-3/3.18/default.nix @@ -3,7 +3,7 @@ let pkgsFun = overrides: - let + let self = self_ // overrides; self_ = with self; { @@ -35,7 +35,7 @@ let gnome-clocks gnome-music gnome-tweak-tool gnome-photos nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool - gnome-getting-started-docs + gnome-getting-started-docs gnome-software gnome-packagekit ]; gamesPackages = with gnome3; [ swell-foop lightsoff iagno @@ -79,7 +79,7 @@ let dconf = callPackage ./core/dconf { }; dconf-editor = callPackage ./core/dconf-editor { }; - empathy = callPackage ./core/empathy { + empathy = callPackage ./core/empathy { webkitgtk = webkitgtk24x; clutter-gst = pkgs.clutter-gst; }; @@ -360,13 +360,13 @@ let california = callPackage ./misc/california { }; - geary = callPackage ./misc/geary { + geary = callPackage ./misc/geary { webkitgtk = webkitgtk24x; }; gfbgraph = callPackage ./misc/gfbgraph { }; - gitg = callPackage ./misc/gitg { + gitg = callPackage ./misc/gitg { webkitgtk = webkitgtk24x; }; @@ -383,13 +383,17 @@ let gpaste = callPackage ./misc/gpaste { }; pidgin-im-gnome-shell-extension = callPackage ./misc/pidgin { }; - + gtkhtml = callPackage ./misc/gtkhtml { }; pomodoro = callPackage ./misc/pomodoro { }; gnome-video-effects = callPackage ./misc/gnome-video-effects { }; + gnome-software = callPackage ./misc/gnome-software { }; + + gnome-packagekit = callPackage ./misc/gnome-packagekit { }; + }; in self; # pkgsFun diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix new file mode 100644 index 000000000000..99cf939fb507 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit +, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }: + +stdenv.mkDerivation rec { + name = "gnome-packagekit-${version}"; + version = "3.18.0"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-packagekit/3.18/${name}.tar.xz"; + sha256 = "0a7ww807b77yjf6l8s2ycpxx813lyncwaxq227jckphazpq65a50"; + }; + + NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0"; + + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; + buildInputs = [ libxslt gnome3.gtk packagekit fontconfig + libcanberra_gtk3 libnotify dbus_glib dbus_libs ]; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "Tools for installing software on the GNOME desktop using PackageKit"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix new file mode 100644 index 000000000000..51efc0446ef9 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit +, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes }: + +stdenv.mkDerivation rec { + name = "gnome-software-${version}"; + version = "3.18.3"; + + src = fetchurl { + url = "mirror://gnome/sources/gnome-software/3.18/${name}.tar.xz"; + sha256 = "0ywvjmn0cwr4kv2l6ic80ac7js7hpsp3g127cj7h256iaqgsaxnc"; + }; + + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; + buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup + gnome3.gsettings_desktop_schemas gnome3.gnome_desktop + polkit attr acl libyaml ]; + propagatedBuildInputs = [ isocodes ]; + + postInstall = '' + mkdir -p $out/share/xml/ + ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes + ''; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "GNOME Software lets you install and update applications and system extensions."; + }; +} diff --git a/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix b/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix index c68ee65cb8b3..9c55a6b60e2e 100644 --- a/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix +++ b/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix @@ -1,10 +1,11 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: { - name = "evolution-3.20.2"; +fetchurl: rec { + major = "3.20"; + name = "evolution-${major}.4"; src = fetchurl { - url = mirror://gnome/sources/evolution/3.20/evolution-3.20.2.tar.xz; - sha256 = "66fa6e18c4e6a29c44870d5786e4dbb82507a8254bca9e27e802625081fca630"; + url = "mirror://gnome/sources/evolution/${major}/${name}.tar.xz"; + sha256 = "1g1nai6jz0irz94d06vx8gbwbzdp7r53qjxvjfhdqhlhnhy76a9c"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix b/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix index 82ea796c3b04..cdb3dacf7ab5 100644 --- a/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix +++ b/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix @@ -1,10 +1,11 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: { - name = "evolution-data-server-3.20.2"; +fetchurl: rec { + major = "3.20"; + name = "evolution-data-server-${major}.4"; src = fetchurl { - url = mirror://gnome/sources/evolution-data-server/3.20/evolution-data-server-3.20.2.tar.xz; - sha256 = "8cdc74b08f1404f5df4b8cf5ccc4999a3e70a1db9ce472f71b623266941ffad9"; + url = "mirror://gnome/sources/evolution-data-server/${major}/${name}.tar.xz"; + sha256 = "03h81dnk34b3xf2065rymr1jd7as4dmpd89hyf380c5np36f6l7j"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix index 7680208c27a9..4c263d9d2d68 100644 --- a/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix +++ b/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix @@ -1,10 +1,11 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: { - name = "gnome-online-accounts-3.20.1"; +fetchurl: rec { + major = "3.20"; + name = "gnome-online-accounts-${major}.2"; src = fetchurl { - url = mirror://gnome/sources/gnome-online-accounts/3.20/gnome-online-accounts-3.20.1.tar.xz; - sha256 = "c37aebc1e12f31f5516d33a354181e4d202a07da4f7d3a95b0da8cf0028c0c93"; + url = "mirror://gnome/sources/gnome-online-accounts/${major}/${name}.tar.xz"; + sha256 = "1pf1rn1i7dqll9ph6scg2g281njx5pq6z0wyj9493m474nfmsmab"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix index 28d8496a3540..06c40b6c2cfb 100644 --- a/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix +++ b/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix @@ -1,10 +1,11 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: { - name = "gnome-session-3.20.1"; +fetchurl: rec { + major = "3.20"; + name = "gnome-session-${major}.2"; src = fetchurl { - url = mirror://gnome/sources/gnome-session/3.20/gnome-session-3.20.1.tar.xz; - sha256 = "2ae9f53dc74f851222fbefbe0dc08db0a78cc76ceeb156f92ebd4d40fd038913"; + url = "mirror://gnome/sources/gnome-session/${major}/${name}.tar.xz"; + sha256 = "1npnjm6wirz2v0liv7n23ivp2w0y1q230qcdb681hhzmp7h9fpq2"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix new file mode 100644 index 000000000000..7c258e9cf211 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit +, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3 +, json_glib }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; + buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup + gnome3.gsettings_desktop_schemas gnome3.gnome_desktop + gtkspell3 json_glib + polkit attr acl libyaml ]; + propagatedBuildInputs = [ isocodes ]; + + postInstall = '' + mkdir -p $out/share/xml/ + ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes + ''; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "GNOME Software lets you install and update applications and system extensions."; + }; +} diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix new file mode 100644 index 000000000000..4d377903cc1d --- /dev/null +++ b/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-software-3.20.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-software/3.20/gnome-software-3.20.0.tar.xz; + sha256 = "0w0bp29fm13a235gq8vylihzjfxx20ri46w4w2syaw0cixxihbix"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.20/default.nix b/pkgs/desktops/gnome-3/3.20/default.nix index fe122d75e975..6e7b16e77333 100644 --- a/pkgs/desktops/gnome-3/3.20/default.nix +++ b/pkgs/desktops/gnome-3/3.20/default.nix @@ -3,7 +3,7 @@ let pkgsFun = overrides: - let + let self = self_ // overrides; self_ = with self; { @@ -35,7 +35,7 @@ let gnome-clocks gnome-music gnome-tweak-tool gnome-photos nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool - gnome-getting-started-docs + gnome-getting-started-docs gnome-packagekit gnome-software ]; gamesPackages = with gnome3; [ swell-foop lightsoff iagno @@ -149,6 +149,8 @@ let gnome_settings_daemon = callPackage ./core/gnome-settings-daemon { }; + gnome-software = callPackage ./core/gnome-software { }; + gnome-system-log = callPackage ./core/gnome-system-log { }; gnome-system-monitor = callPackage ./core/gnome-system-monitor { }; @@ -359,13 +361,13 @@ let california = callPackage ./misc/california { }; - geary = callPackage ./misc/geary { + geary = callPackage ./misc/geary { webkitgtk = webkitgtk24x; }; gfbgraph = callPackage ./misc/gfbgraph { }; - gitg = callPackage ./misc/gitg { + gitg = callPackage ./misc/gitg { webkitgtk = webkitgtk24x; }; @@ -393,6 +395,8 @@ let gnome-video-effects = callPackage ./misc/gnome-video-effects { }; + gnome-packagekit = callPackage ./misc/gnome-packagekit { }; + }; in self; # pkgsFun diff --git a/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix b/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix index 2a83f89bb9b8..8cc9731e3708 100644 --- a/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix +++ b/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix @@ -1,10 +1,11 @@ # Autogenerated by maintainers/scripts/gnome.sh update -fetchurl: { - name = "gnome-sudoku-3.20.2"; +fetchurl: rec { + major = "3.20"; + name = "gnome-sudoku-${major}.4"; src = fetchurl { - url = mirror://gnome/sources/gnome-sudoku/3.20/gnome-sudoku-3.20.2.tar.xz; - sha256 = "9c7e737686e88c20e83ca366bfc0a20194b7fe4af7c74ab752d98f0af1df3553"; + url = "mirror://gnome/sources/gnome-sudoku/${major}/${name}.tar.xz"; + sha256 = "1hw6r0yfg60ynp4gxnqm6zrsklzn0d6lb88vybdbifzrlaww8xwh"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix new file mode 100644 index 000000000000..ee3dd60e59ad --- /dev/null +++ b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix @@ -0,0 +1,20 @@ +{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit +, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }: + +stdenv.mkDerivation rec { + inherit (import ./src.nix fetchurl) name src; + + NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0"; + + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; + buildInputs = [ libxslt gnome3.gtk packagekit fontconfig + libcanberra_gtk3 libnotify dbus_glib dbus_libs ]; + + meta = with stdenv.lib; { + homepage = https://www.freedesktop.org/software/PackageKit/; + platforms = platforms.linux; + maintainers = gnome3.maintainers; + license = licenses.gpl2; + description = "Tools for installing software on the GNOME desktop using PackageKit"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix new file mode 100644 index 000000000000..71de360f24f6 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gnome-packagekit-3.20.0"; + + src = fetchurl { + url = mirror://gnome/sources/gnome-packagekit/3.20/gnome-packagekit-3.20.0.tar.xz; + sha256 = "0wf5r0qrdlalbr73fpfaapq61vlya3nwygsv4wm2bxaf56v5sjmq"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix b/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix index 3758936d175b..248e39151524 100644 --- a/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix +++ b/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix @@ -1,10 +1,10 @@ fetchurl: rec { major = "1.0"; - minor = "0"; + minor = "3"; name = "gspell-${major}.${minor}"; src = fetchurl { url = "mirror://gnome/sources/gspell/${major}/${name}.tar.xz"; - sha256 = "1nkpy005qyrfdklrjnvx5xksd3dv27fmn48wi12q8c8whxy2al3a"; + sha256 = "1m8v4rqaxjsblccc3nnirkbkzgqm90vfpzp3x08lkqriqvk0anfr"; }; } diff --git a/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix b/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix index 64f7920d9afc..e3f6bca10a4d 100644 --- a/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix +++ b/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchFromGitHub, glib }: stdenv.mkDerivation rec { - version = "1.0"; + version = "1.0.1"; basename = "pidgin-im-gnome-shell-extension"; name = "${basename}-${version}"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { owner = "muffinmad"; repo = "${basename}"; rev = "v${version}"; - sha256 = "0vj4w9qqx9gads24w3f6v6mfh5va28bp8rc4w7lz0vhp7njmy1yy"; + sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr"; }; buildInputs = [ glib ]; diff --git a/pkgs/desktops/kde-5/applications/ark/default.nix b/pkgs/desktops/kde-5/applications/ark/default.nix index 331c8c647ca2..0af13b645e15 100644 --- a/pkgs/desktops/kde-5/applications/ark/default.nix +++ b/pkgs/desktops/kde-5/applications/ark/default.nix @@ -1,44 +1,33 @@ -{ kdeApp -, lib -, extra-cmake-modules -, kdoctools -, karchive -, kconfig -, kcrash -, kdbusaddons -, ki18n -, kiconthemes -, khtml -, kio -, kservice -, kpty -, kwidgetsaddons -, libarchive -, p7zip -, unrar -, unzipNLS -, zip -}: +{ + kdeApp, lib, -let PATH = lib.makeBinPath [ - p7zip unrar unzipNLS zip - ]; -in + extra-cmake-modules, kdoctools, makeQtWrapper, + + karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio, + kservice, kpty, kwidgetsaddons, libarchive, + + # Archive tools + p7zip, unrar, unzipNLS, zip +}: kdeApp { name = "ark"; nativeBuildInputs = [ - extra-cmake-modules - kdoctools + extra-cmake-modules kdoctools makeQtWrapper ]; propagatedBuildInputs = [ khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice kpty kwidgetsaddons libarchive ]; - postInstall = '' - wrapQtProgram "$out/bin/ark" \ - --prefix PATH : "${PATH}" - ''; + postInstall = + let + PATH = lib.makeBinPath [ + p7zip unrar unzipNLS zip + ]; + in '' + wrapQtProgram "$out/bin/ark" \ + --prefix PATH : "${PATH}" + ''; meta = { license = with lib.licenses; [ gpl2 lgpl3 ]; maintainers = [ lib.maintainers.ttuegel ]; diff --git a/pkgs/desktops/kde-5/applications/kate.nix b/pkgs/desktops/kde-5/applications/kate.nix index e368483771f0..94faa0655925 100644 --- a/pkgs/desktops/kde-5/applications/kate.nix +++ b/pkgs/desktops/kde-5/applications/kate.nix @@ -1,29 +1,9 @@ -{ kdeApp -, lib -, extra-cmake-modules -, kdoctools -, qtscript -, kactivities -, kconfig -, kcrash -, kguiaddons -, kiconthemes -, ki18n -, kinit -, kjobwidgets -, kio -, kparts -, ktexteditor -, kwindowsystem -, kxmlgui -, kdbusaddons -, kwallet -, plasma-framework -, kitemmodels -, knotifications -, threadweaver -, knewstuff -, libgit2 +{ + kdeApp, lib, makeQtWrapper, extra-cmake-modules, kdoctools, + kactivities, kconfig, kcrash, kguiaddons, kiconthemes, ki18n, kinit, + kjobwidgets, kio, kparts, ktexteditor, kwindowsystem, kxmlgui, kdbusaddons, + kwallet, plasma-framework, kitemmodels, knotifications, qtscript, threadweaver, + knewstuff, libgit2 }: kdeApp { @@ -33,8 +13,7 @@ kdeApp { maintainers = [ lib.maintainers.ttuegel ]; }; nativeBuildInputs = [ - extra-cmake-modules - kdoctools + extra-cmake-modules kdoctools makeQtWrapper ]; propagatedBuildInputs = [ kactivities ki18n kio ktexteditor kwindowsystem plasma-framework qtscript diff --git a/pkgs/desktops/kde-5/applications/spectacle.nix b/pkgs/desktops/kde-5/applications/spectacle.nix index 7e324f2b3fc5..867c0b53b1e7 100644 --- a/pkgs/desktops/kde-5/applications/spectacle.nix +++ b/pkgs/desktops/kde-5/applications/spectacle.nix @@ -29,7 +29,7 @@ kdeApp { kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor ]; - postFixup = '' + postInstall = '' wrapQtProgram "$out/bin/spectacle" ''; } diff --git a/pkgs/desktops/kde-5/frameworks/baloo.nix b/pkgs/desktops/kde-5/frameworks/baloo.nix index f676da0f4c84..825a125c8a79 100644 --- a/pkgs/desktops/kde-5/frameworks/baloo.nix +++ b/pkgs/desktops/kde-5/frameworks/baloo.nix @@ -1,22 +1,15 @@ { kdeFramework, lib, extra-cmake-modules, kauth, kconfig , kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n, kidletime -, kio, lmdb, makeQtWrapper, qtbase, solid +, kio, lmdb, qtbase, solid }: kdeFramework { name = "baloo"; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ kauth kconfig kcoreaddons kcrash kdbusaddons kfilemetadata ki18n kio kidletime lmdb qtbase solid ]; - postInstall = '' - wrapQtProgram "$out/bin/baloo_file" - wrapQtProgram "$out/bin/baloo_file_extractor" - wrapQtProgram "$out/bin/balooctl" - wrapQtProgram "$out/bin/baloosearch" - wrapQtProgram "$out/bin/balooshow" - ''; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; diff --git a/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh index aab0625bf61a..5363f4e30fdc 100644 --- a/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh +++ b/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh @@ -1,22 +1,29 @@ _ecmSetXdgDirs() { addToSearchPathOnce XDG_DATA_DIRS "$1/share" addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg" - addToSearchPathOnce NIX_WRAP_XDG_CONFIG_DIRS "$1/etc/xdg" + addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg" } _ecmSharePaths=( \ + "appdata" \ + "applications" \ "config.cfg" \ + "dbus-1" \ + "desktop-directories" \ + "doc" \ + "icons" \ "kconf_update" \ "kservices5" \ "kservicetypes5" \ "knotifications5" \ - "applications" \ - "desktop-directories" \ + "kxmlgui5" \ + "locale" \ "mime" \ - "dbus-1" \ - "interfaces" \ - "services" \ - "system-services" ) + "polkit-1" \ + "sounds" \ + "templates" \ + "wallpapers" \ + ) _ecmPropagateNative() { for dir in ${_ecmSharePaths[@]}; do @@ -24,7 +31,7 @@ _ecmPropagateNative() { propagateOnce propagatedNativeBuildInputs "$1" if [ -z "$crossConfig" ]; then propagateOnce propagatedUserEnvPkgs "$1" - addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share" + addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" fi break fi @@ -38,7 +45,7 @@ _ecmPropagate() { if [ -d "$1/share/$dir" ]; then propagateOnce propagatedBuildInputs "$1" propagateOnce propagatedUserEnvPkgs "$1" - addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share" + addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share" break fi done diff --git a/pkgs/desktops/kde-5/frameworks/kconfig.nix b/pkgs/desktops/kde-5/frameworks/kconfig.nix index e132afe59886..154329d0e98e 100644 --- a/pkgs/desktops/kde-5/frameworks/kconfig.nix +++ b/pkgs/desktops/kde-5/frameworks/kconfig.nix @@ -1,16 +1,9 @@ { kdeFramework, lib , extra-cmake-modules -, makeQtWrapper }: kdeFramework { name = "kconfig"; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; - postInstall = '' - wrapQtProgram "$out/bin/kreadconfig5" - wrapQtProgram "$out/bin/kwriteconfig5" - ''; - meta = { - maintainers = [ lib.maintainers.ttuegel ]; - }; + meta = { maintainers = [ lib.maintainers.ttuegel ]; }; + nativeBuildInputs = [ extra-cmake-modules ]; } diff --git a/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix b/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix index 1e6976113de6..f507abe29916 100644 --- a/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix @@ -1,15 +1,14 @@ { kdeFramework, lib, extra-cmake-modules, kauth, kcodecs, kconfig -, kdoctools, kguiaddons, ki18n, kwidgetsaddons, makeQtWrapper +, kdoctools, kguiaddons, ki18n, kwidgetsaddons }: kdeFramework { name = "kconfigwidgets"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ kauth kconfig kcodecs kguiaddons ki18n kwidgetsaddons ]; patches = [ ./0001-qdiriterator-follow-symlinks.patch ]; postInstall = '' moveToOutput "bin/preparetips5" "$dev" - wrapQtProgram "$dev/bin/preparetips5" ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix b/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix index 846b187c866c..94b4136df3da 100644 --- a/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix +++ b/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix @@ -1,4 +1,4 @@ -{ kdeFramework, lib, makeQtWrapper +{ kdeFramework, lib , extra-cmake-modules , shared_mime_info }: @@ -6,9 +6,6 @@ kdeFramework { name = "kcoreaddons"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ shared_mime_info ]; - postInstall = '' - wrapQtProgram "$out/bin/desktoptojson" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix b/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix index d2ceab31d14b..eadd645fb99a 100644 --- a/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix +++ b/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix @@ -1,17 +1,11 @@ { kdeFramework, lib , extra-cmake-modules -, makeQtWrapper , qtx11extras }: kdeFramework { name = "kdbusaddons"; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + meta = { maintainers = [ lib.maintainers.ttuegel ]; }; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ qtx11extras ]; - postInstall = '' - wrapQtProgram "$out/bin/kquitapp5" - ''; - meta = { - maintainers = [ lib.maintainers.ttuegel ]; - }; } diff --git a/pkgs/desktops/kde-5/frameworks/kdeclarative.nix b/pkgs/desktops/kde-5/frameworks/kdeclarative.nix index af9a009b82e5..8db1b73c91a7 100644 --- a/pkgs/desktops/kde-5/frameworks/kdeclarative.nix +++ b/pkgs/desktops/kde-5/frameworks/kdeclarative.nix @@ -1,18 +1,15 @@ { kdeFramework, lib, extra-cmake-modules, epoxy, kconfig , kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage -, kwidgetsaddons, kwindowsystem, makeQtWrapper, pkgconfig +, kwidgetsaddons, kwindowsystem, pkgconfig , qtdeclarative }: kdeFramework { name = "kdeclarative"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ epoxy kconfig kglobalaccel kguiaddons ki18n kiconthemes kio kpackage kwidgetsaddons kwindowsystem qtdeclarative ]; - postInstall = '' - wrapQtProgram "$out/bin/kpackagelauncherqml" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix b/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix index a99587bbf045..8e17a1a60c8d 100644 --- a/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix +++ b/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix @@ -1,4 +1,4 @@ -{ kdeFramework, lib, makeQtWrapper +{ kdeFramework, lib , extra-cmake-modules , kcompletion , kconfig @@ -18,12 +18,9 @@ kdeFramework { name = "kdesignerplugin"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ kcompletion kconfig kconfigwidgets kcoreaddons kiconthemes kio kitemviews kplotting ktextwidgets kwidgetsaddons kxmlgui sonnet ]; - postInstall = '' - wrapQtProgram "$out/bin/kgendesignerplugin" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix b/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix index 0ed249da9a4c..99fc4c7d023c 100644 --- a/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix @@ -1,5 +1,5 @@ { kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45 -, docbook5_xsl, karchive, ki18n, makeQtWrapper, perl, perlPackages +, docbook5_xsl, karchive, ki18n, perl, perlPackages }: kdeFramework { @@ -7,7 +7,7 @@ kdeFramework { meta = { maintainers = [ lib.maintainers.ttuegel ]; }; nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ karchive ki18n ]; - propagatedNativeBuildInputs = [ makeQtWrapper perl perlPackages.URI ]; + propagatedNativeBuildInputs = [ perl perlPackages.URI ]; cmakeFlags = [ "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook" "-DDocBookXSL_DIR=${docbook5_xsl}/xml/xsl/docbook" diff --git a/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix b/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix index 79db990f191c..4743d0b8f1b0 100644 --- a/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix +++ b/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix @@ -5,18 +5,14 @@ , kcrash , kdbusaddons , kwindowsystem -, makeQtWrapper , qtx11extras }: kdeFramework { name = "kglobalaccel"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ kconfig kcoreaddons kcrash kdbusaddons kwindowsystem qtx11extras ]; - postInstall = '' - wrapQtProgram "$out/bin/kglobalaccel5" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix b/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix index 825b15c81774..6102bb0d4b56 100644 --- a/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix @@ -1,5 +1,5 @@ { kdeFramework, lib, copyPathsToStore -, extra-cmake-modules, makeQtWrapper +, extra-cmake-modules , karchive, kconfigwidgets, ki18n, breeze-icons, kitemviews, qtsvg }: @@ -7,9 +7,6 @@ kdeFramework { name = "kiconthemes"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ breeze-icons kconfigwidgets karchive ki18n kitemviews qtsvg ]; - postInstall = '' - wrapQtProgram "$out/bin/kiconfinder5" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kinit/default.nix b/pkgs/desktops/kde-5/frameworks/kinit/default.nix index 08901010de85..b965f761e922 100644 --- a/pkgs/desktops/kde-5/frameworks/kinit/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kinit/default.nix @@ -1,13 +1,15 @@ -{ kdeFramework, lib, copyPathsToStore, extra-cmake-modules, kconfig, kcrash -, kdoctools, ki18n, kio, kservice, kwindowsystem, libcap +{ + kdeFramework, lib, copyPathsToStore, + extra-cmake-modules, kdoctools, + kconfig, kcrash, ki18n, kio, kservice, kwindowsystem }: kdeFramework { name = "kinit"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools libcap.out ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ - kconfig kcrash ki18n kio kservice kwindowsystem libcap + kconfig kcrash ki18n kio kservice kwindowsystem ]; patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); } diff --git a/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch b/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch index 47538fbe4567..a5c76fca2481 100644 --- a/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch +++ b/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch @@ -1,8 +1,8 @@ -Index: kinit-5.21.0/src/kdeinit/kinit.cpp +Index: kinit-5.24.0/src/kdeinit/kinit.cpp =================================================================== ---- kinit-5.21.0.orig/src/kdeinit/kinit.cpp -+++ kinit-5.21.0/src/kdeinit/kinit.cpp -@@ -657,19 +657,16 @@ static pid_t launch(int argc, const char +--- kinit-5.24.0.orig/src/kdeinit/kinit.cpp ++++ kinit-5.24.0/src/kdeinit/kinit.cpp +@@ -672,19 +672,16 @@ static pid_t launch(int argc, const char if (!libpath.isEmpty()) { if (libpath_relative) { diff --git a/pkgs/desktops/kde-5/frameworks/kinit/series b/pkgs/desktops/kde-5/frameworks/kinit/series index 5faa456366b9..576b8a935bf1 100644 --- a/pkgs/desktops/kde-5/frameworks/kinit/series +++ b/pkgs/desktops/kde-5/frameworks/kinit/series @@ -1 +1,2 @@ kinit-libpath.patch +start_kdeinit-path.patch diff --git a/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch b/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch new file mode 100644 index 000000000000..fbecf9433f69 --- /dev/null +++ b/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch @@ -0,0 +1,13 @@ +Index: kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c +=================================================================== +--- kinit-5.24.0.orig/src/start_kdeinit/start_kdeinit_wrapper.c ++++ kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c +@@ -23,7 +23,7 @@ + #include + #include + +-#define EXECUTE CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit" ++#define EXECUTE "/var/setuid-wrappers/start_kdeinit" + + #if KDEINIT_OOM_PROTECT + diff --git a/pkgs/desktops/kde-5/frameworks/kio/default.nix b/pkgs/desktops/kde-5/frameworks/kio/default.nix index 7e4317a3f099..cb67c8459034 100644 --- a/pkgs/desktops/kde-5/frameworks/kio/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kio/default.nix @@ -3,14 +3,14 @@ , kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes, kitemviews , kjobwidgets, knotifications, kservice, ktextwidgets, kwallet -, kwidgetsaddons, kwindowsystem, kxmlgui, makeQtWrapper +, kwidgetsaddons, kwindowsystem, kxmlgui , qtscript, qtx11extras, solid }: kdeFramework { name = "kio"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ acl karchive kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes kitemviews kjobwidgets knotifications kservice @@ -18,10 +18,4 @@ kdeFramework { qtx11extras ]; patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); - postInstall = '' - wrapQtProgram "$out/bin/kcookiejar5" - wrapQtProgram "$out/bin/ktelnetservice5" - wrapQtProgram "$out/bin/ktrash5" - wrapQtProgram "$out/bin/protocoltojson" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kjs.nix b/pkgs/desktops/kde-5/frameworks/kjs.nix index 1a8750ea74fd..abdc15ce8df6 100644 --- a/pkgs/desktops/kde-5/frameworks/kjs.nix +++ b/pkgs/desktops/kde-5/frameworks/kjs.nix @@ -1,14 +1,10 @@ { kdeFramework, lib , extra-cmake-modules , kdoctools -, makeQtWrapper }: kdeFramework { name = "kjs"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; - postInstall = '' - wrapQtProgram "$out/bin/kjs5" - ''; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; } diff --git a/pkgs/desktops/kde-5/frameworks/kjsembed.nix b/pkgs/desktops/kde-5/frameworks/kjsembed.nix index 7611b8310075..95bc02422f1b 100644 --- a/pkgs/desktops/kde-5/frameworks/kjsembed.nix +++ b/pkgs/desktops/kde-5/frameworks/kjsembed.nix @@ -1,14 +1,10 @@ { kdeFramework, lib, extra-cmake-modules, kdoctools, ki18n, kjs -, makeQtWrapper, qtsvg +, qtsvg }: kdeFramework { name = "kjsembed"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ ki18n kjs qtsvg ]; - postInstall = '' - wrapQtProgram "$out/bin/kjscmd5" - wrapQtProgram "$out/bin/kjsconsole" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kpackage/default.nix b/pkgs/desktops/kde-5/frameworks/kpackage/default.nix index 874bb380d736..a39a672574bb 100644 --- a/pkgs/desktops/kde-5/frameworks/kpackage/default.nix +++ b/pkgs/desktops/kde-5/frameworks/kpackage/default.nix @@ -5,16 +5,12 @@ , kcoreaddons , kdoctools , ki18n -, makeQtWrapper }: kdeFramework { name = "kpackage"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ karchive kconfig kcoreaddons ki18n ]; patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); - postInstall = '' - wrapQtProgram "$out/bin/kpackagetool5" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh b/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh deleted file mode 100644 index c28e862ff8ae..000000000000 --- a/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh +++ /dev/null @@ -1,43 +0,0 @@ -addServicePkg() { - local propagated - for dir in "share/kservices5" "share/kservicetypes5"; do - if [[ -d "$1/$dir" ]]; then - propagated= - for pkg in $propagatedBuildInputs; do - if [[ "z$pkg" == "z$1" ]]; then - propagated=1 - break - fi - done - if [[ -z $propagated ]]; then - propagatedBuildInputs="$propagatedBuildInputs $1" - fi - - propagated= - for pkg in $propagatedUserEnvPkgs; do - if [[ "z$pkg" == "z$1" ]]; then - propagated=1 - break - fi - done - if [[ -z $propagated ]]; then - propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1" - fi - - break - fi - done -} - -envHooks+=(addServicePkg) - -local propagated -for pkg in $propagatedBuildInputs; do - if [[ "z$pkg" == "z@out@" ]]; then - propagated=1 - break - fi -done -if [[ -z $propagated ]]; then - propagatedBuildInputs="$propagatedBuildInputs @out@" -fi diff --git a/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix b/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix index e1a5e8b2339a..a35af2e7fbfd 100644 --- a/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix +++ b/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix @@ -1,5 +1,5 @@ { kdeFramework, lib, copyPathsToStore -, extra-cmake-modules, makeQtWrapper, perl +, extra-cmake-modules, perl , karchive, kconfig, kguiaddons, kiconthemes, kparts , libgit2 , qtscript, qtxmlpatterns @@ -9,7 +9,7 @@ kdeFramework { name = "ktexteditor"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper perl ]; + nativeBuildInputs = [ extra-cmake-modules perl ]; propagatedBuildInputs = [ karchive kconfig kguiaddons ki18n kiconthemes kio kparts libgit2 qtscript qtxmlpatterns sonnet diff --git a/pkgs/desktops/kde-5/frameworks/kwallet.nix b/pkgs/desktops/kde-5/frameworks/kwallet.nix index 3bb99df39a7d..f02c6138df77 100644 --- a/pkgs/desktops/kde-5/frameworks/kwallet.nix +++ b/pkgs/desktops/kde-5/frameworks/kwallet.nix @@ -1,18 +1,14 @@ { kdeFramework, lib, extra-cmake-modules, kconfig, kconfigwidgets , kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes , knotifications , kservice, kwidgetsaddons, kwindowsystem, libgcrypt -, makeQtWrapper }: +}: kdeFramework { name = "kwallet"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes knotifications kservice kwidgetsaddons kwindowsystem libgcrypt ]; - postInstall = '' - wrapQtProgram "$out/bin/kwalletd5" - wrapQtProgram "$out/bin/kwallet-query" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/plasma-framework.nix b/pkgs/desktops/kde-5/frameworks/plasma-framework.nix index 2a8762c814f3..a41381486538 100644 --- a/pkgs/desktops/kde-5/frameworks/plasma-framework.nix +++ b/pkgs/desktops/kde-5/frameworks/plasma-framework.nix @@ -2,19 +2,16 @@ , kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative , kdoctools, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio , knotifications, kpackage, kservice, kwindowsystem, kxmlgui -, makeQtWrapper, qtscript, qtx11extras +, qtscript, qtx11extras }: kdeFramework { name = "plasma-framework"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; propagatedBuildInputs = [ kactivities karchive kconfig kconfigwidgets kcoreaddons kdbusaddons kdeclarative kglobalaccel kguiaddons ki18n kiconthemes kio knotifications kpackage kservice kwindowsystem kxmlgui qtscript qtx11extras ]; - postInstall = '' - wrapQtProgram "$out/bin/plasmapkg2" - ''; } diff --git a/pkgs/desktops/kde-5/frameworks/solid.nix b/pkgs/desktops/kde-5/frameworks/solid.nix index f1db5c35c10a..c4f580fe1c2d 100644 --- a/pkgs/desktops/kde-5/frameworks/solid.nix +++ b/pkgs/desktops/kde-5/frameworks/solid.nix @@ -1,15 +1,11 @@ { kdeFramework, lib , extra-cmake-modules -, makeQtWrapper , qtdeclarative }: kdeFramework { name = "solid"; meta = { maintainers = [ lib.maintainers.ttuegel ]; }; - nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ]; + nativeBuildInputs = [ extra-cmake-modules ]; propagatedBuildInputs = [ qtdeclarative ]; - postInstall = '' - wrapQtProgram "$out/bin/solid-hardware5" - ''; } diff --git a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix index bb65e1af9370..190003ca5c78 100644 --- a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix +++ b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix @@ -1,19 +1,21 @@ -{ plasmaPackage, lib, copyPathsToStore -, extra-cmake-modules, kdoctools -, baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative -, kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff -, knotifyconfig, kpackage, krunner, ktexteditor, ktextwidgets, kwallet, kwayland -, kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon -, plasma-framework, qtquickcontrols, qtscript, qtx11extras, solid -, isocodes, libdbusmenu, libSM, libXcursor, pam, wayland +{ + plasmaPackage, lib, copyPathsToStore, + + extra-cmake-modules, kdoctools, + + baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative, + kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff, + knotifyconfig, kpackage, krunner, ktexteditor, ktextwidgets, kwallet, kwayland, + kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon, + plasma-framework, qtquickcontrols, qtscript, qtx11extras, solid, isocodes, + libdbusmenu, libSM, libXcursor, pam, wayland }: plasmaPackage { name = "plasma-workspace"; nativeBuildInputs = [ - extra-cmake-modules - kdoctools + extra-cmake-modules kdoctools ]; buildInputs = [ baloo kactivities kcmutils kconfig kcrash kdbusaddons kdeclarative @@ -37,21 +39,4 @@ plasmaPackage { rm "$out/lib/libexec/startplasma" rm -r "$out/share/wayland-sessions" ''; - - preFixup = '' - wrapQtProgram $out/bin/kcheckrunning - wrapQtProgram $out/bin/kcminit - wrapQtProgram $out/bin/kcminit_startup - wrapQtProgram $out/bin/kdostartupconfig5 - wrapQtProgram $out/bin/klipper - wrapQtProgram $out/bin/krunner - wrapQtProgram $out/bin/ksmserver - wrapQtProgram $out/bin/ksplashqml - wrapQtProgram $out/bin/kstartupconfig5 - wrapQtProgram $out/bin/kuiserver5 - wrapQtProgram $out/bin/plasmashell - wrapQtProgram $out/bin/plasmawindowed - wrapQtProgram $out/bin/systemmonitor - wrapQtProgram $out/bin/xembedsniproxy - ''; } diff --git a/pkgs/desktops/kde-5/plasma/startkde/default.nix b/pkgs/desktops/kde-5/plasma/startkde/default.nix index 30e986c21b4b..516d651cec25 100644 --- a/pkgs/desktops/kde-5/plasma/startkde/default.nix +++ b/pkgs/desktops/kde-5/plasma/startkde/default.nix @@ -1,16 +1,15 @@ -{ stdenv, lib, runCommand -, dbus, qttools, socat -, gnugrep, gnused -, kconfig, kinit, kservice -, plasma-workspace -, xmessage, xprop, xsetroot +{ + stdenv, lib, runCommand, dbus, qttools, socat, gnugrep, gnused, kconfig, + kinit, kservice, plasma-workspace, xmessage, xprop, xsetroot, qtbase, + qtdeclarative, qtgraphicaleffects, qtquickcontrols, qtscript, qtsvg, + qtx11extras, qtxmlpatterns }: let env = { inherit (stdenv) shell; - paths = builtins.map (pkg: pkg.out or pkg) + bins = builtins.map (pkg: pkg.out or pkg) [ dbus qttools socat gnugrep gnused @@ -18,15 +17,38 @@ let plasma-workspace xmessage xprop xsetroot ]; + libs = builtins.map (pkg: pkg.out or pkg) + [ + qtbase qtdeclarative qtgraphicaleffects qtquickcontrols + qtscript qtsvg qtx11extras qtxmlpatterns + ]; }; in runCommand "startkde" env '' - prefix_PATH= - for pkg in $paths; do - addToSearchPath prefix_PATH "$pkg/bin" - addToSearchPath prefix_PATH "$pkg/lib/libexec" - addToSearchPath prefix_PATH "$pkg/lib/libexec/kf5" + + # Configure PATH variable + suffixPATH= + for p in $bins; do + addToSearchPath suffixPATH "$p/bin" + addToSearchPath suffixPATH "$p/lib/libexec" + addToSearchPath suffixPATH "$p/lib/libexec/kf5" done - substitute ${./startkde.sh} "$out" --subst-var shell --subst-var prefix_PATH + + # Configure Qt search paths + QT_PLUGIN_PATH= + QML_IMPORT_PATH= + QML2_IMPORT_PATH= + for p in $libs; do + addToSearchPath QT_PLUGIN_PATH "$p/lib/qt5/plugins" + addToSearchPath QML_IMPORT_PATH "$p/lib/qt5/imports" + addToSearchPath QML2_IMPORT_PATH "$p/lib/qt5/qml" + done + + substitute ${./startkde.sh} "$out" \ + --subst-var shell \ + --subst-var suffixPATH \ + --subst-var QT_PLUGIN_PATH \ + --subst-var QML_IMPORT_PATH \ + --subst-var QML2_IMPORT_PATH chmod +x "$out" '' diff --git a/pkgs/desktops/kde-5/plasma/startkde/startkde.sh b/pkgs/desktops/kde-5/plasma/startkde/startkde.sh index d839226a4562..18cf08081c4b 100755 --- a/pkgs/desktops/kde-5/plasma/startkde/startkde.sh +++ b/pkgs/desktops/kde-5/plasma/startkde/startkde.sh @@ -1,6 +1,10 @@ #!@shell@ -PATH="@prefix_PATH@:$PATH" +PATH="$PATH${PATH:+:}@suffixPATH@" + +export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}@QT_PLUGIN_PATH@" +export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}@QML_IMPORT_PATH@" +export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}@QML2_IMPORT_PATH@" # The KDE icon cache is supposed to update itself # automatically, but it uses the timestamp on the icon @@ -73,7 +77,7 @@ kcminputrc Mouse cursorTheme 'breeze_cursors' kcminputrc Mouse cursorSize '' ksplashrc KSplash Theme Breeze ksplashrc KSplash Engine KSplashQML -kdeglobals KScreen ScaleFactor 1 +kdeglobals KScreen ScreenScaleFactors '' kcmfonts General forceFontDPI 0 EOF @@ -153,20 +157,6 @@ xsetroot -cursor_name left_ptr dl=$DESKTOP_LOCKED unset DESKTOP_LOCKED # Don't want it in the environment -# Make sure that D-Bus is running -# D-Bus autolaunch is broken -if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then - eval $(dbus-launch --sh-syntax --exit-with-session) -fi -if qdbus >/dev/null 2>/dev/null; then - : # ok -else - echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 - test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null - xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" - exit 1 -fi - ksplash_pid= if test -z "$dl"; then # the splashscreen and progress indicator @@ -205,6 +195,16 @@ done echo 'startkde: Starting up...' 1>&2 +# Make sure that D-Bus is running +if $qdbus >/dev/null 2>/dev/null; then + : # ok +else + echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null + xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" + exit 1 +fi + # Mark that full KDE session is running (e.g. Konqueror preloading works only # with full KDE running). The KDE_FULL_SESSION property can be detected by # any X client connected to the same X session, even if not launched @@ -251,7 +251,7 @@ if test -n "$PAM_KWALLET5_LOGIN" ; then fi # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment -ksyncdbusenv +dbus-update-activation-environment --systemd --all if test $? -ne 0; then # Startup error echo 'startkde: Could not sync environment to dbus.' 1>&2 @@ -271,6 +271,8 @@ if test $? -ne 0; then exit 1 fi +qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit + # (NixOS) Run kbuildsycoca5 before starting the user session because things # may be missing or moved if they have run nixos-rebuild and it may not be # possible for them to start Konsole to run it manually! diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix index 08f69ba87766..950caeedf53b 100644 --- a/pkgs/development/compilers/elm/default.nix +++ b/pkgs/development/compilers/elm/default.nix @@ -40,7 +40,7 @@ let EOF '' + lib.concatStrings cmds; - hsPkgs = haskell.packages.ghc7103.override { + hsPkgs = haskell.packages.ghc801.override { overrides = self: super: let hlib = haskell.lib; elmRelease = import ./packages/release.nix { inherit (self) callPackage; }; diff --git a/pkgs/development/compilers/elm/packages/elm-compiler.nix b/pkgs/development/compilers/elm/packages/elm-compiler.nix index 8bebdf4315a3..dc2a0a12138b 100644 --- a/pkgs/development/compilers/elm/packages/elm-compiler.nix +++ b/pkgs/development/compilers/elm/packages/elm-compiler.nix @@ -3,15 +3,15 @@ , fetchgit, filemanip, filepath, HUnit, indents , language-ecmascript, language-glsl, mtl, parsec, pretty, process , QuickCheck, stdenv, test-framework, test-framework-hunit -, test-framework-quickcheck2, text, union-find, wl-pprint +, test-framework-quickcheck2, text, union-find }: mkDerivation { pname = "elm-compiler"; - version = "0.17"; + version = "0.17.1"; src = fetchgit { url = "https://github.com/elm-lang/elm-compiler"; - sha256 = "1vx4jp20nj4s41zsqnwyh80dvg7b7kd9fh6agl99v1xx9d3i6ws1"; - rev = "c9c7e72c424a13255f8ee84c719f7ef48b689c1a"; + sha256 = "17y0jlii81mnjywknblcv1nfja51slmwrhz9x8w144b0sblcj0if"; + rev = "e44deafaf9cbf3749484070f267f03a368711adb"; }; isLibrary = true; isExecutable = true; @@ -19,7 +19,7 @@ mkDerivation { aeson aeson-pretty ansi-terminal ansi-wl-pprint base binary bytestring containers directory edit-distance filepath indents language-ecmascript language-glsl mtl parsec pretty process text - union-find wl-pprint + union-find ]; executableHaskellDepends = [ aeson base binary directory filepath process text @@ -29,10 +29,10 @@ mkDerivation { bytestring containers directory edit-distance filemanip filepath HUnit indents language-ecmascript language-glsl mtl parsec pretty process QuickCheck test-framework test-framework-hunit - test-framework-quickcheck2 text union-find wl-pprint + test-framework-quickcheck2 text union-find ]; jailbreak = true; homepage = "http://elm-lang.org"; - description = "Values to help with elm-package, elm-make, and elm-lang.org"; + description = "Values to help with elm-package, elm-make, and elm-lang.org."; license = stdenv.lib.licenses.bsd3; } diff --git a/pkgs/development/compilers/elm/packages/elm-format.nix b/pkgs/development/compilers/elm/packages/elm-format.nix index 12550e46a971..4d30c697abd4 100644 --- a/pkgs/development/compilers/elm/packages/elm-format.nix +++ b/pkgs/development/compilers/elm/packages/elm-format.nix @@ -2,17 +2,16 @@ , bytestring, containers, directory, edit-distance, fetchgit , filemanip, filepath, HUnit, indents, mtl, optparse-applicative , parsec, pretty, process, QuickCheck, quickcheck-io -, regex-applicative, split, stdenv, test-framework -, test-framework-hunit, test-framework-quickcheck2, text -, union-find, wl-pprint +, regex-applicative, split, stdenv, tasty, tasty-golden +, tasty-hunit, tasty-quickcheck, text, union-find, wl-pprint }: mkDerivation { pname = "elm-format"; - version = "0.3.1"; + version = "0.4.0"; src = fetchgit { url = "http://github.com/avh4/elm-format"; - sha256 = "04kl50kzvjf4i140dlhs6f9fd2wmk6cnvyfamx2xh8vbwbnwrkj4"; - rev = "0637f3772de2297d12ea35f5b66961e1d827552c"; + sha256 = "199xh2w5cwcf79a8fv6j8dpk9h8a4cygrf8cfr9p7bvp2wvczibm"; + rev = "d9cbe65c5f01d21b5a02c2f963aa4c9d3f0539d0"; }; isLibrary = false; isExecutable = true; @@ -23,14 +22,24 @@ mkDerivation { text ]; testHaskellDepends = [ - aeson ansi-terminal base binary bytestring containers directory - edit-distance filemanip filepath HUnit indents mtl parsec pretty - process QuickCheck quickcheck-io regex-applicative split - test-framework test-framework-hunit test-framework-quickcheck2 text - union-find wl-pprint + aeson ansi-terminal ansi-wl-pprint base binary bytestring + containers directory edit-distance filemanip filepath HUnit indents + mtl optparse-applicative parsec pretty process QuickCheck + quickcheck-io regex-applicative split tasty tasty-golden + tasty-hunit tasty-quickcheck text union-find wl-pprint ]; jailbreak = true; homepage = "http://elm-lang.org"; description = "A source code formatter for Elm"; license = stdenv.lib.licenses.bsd3; + + # XXX: I've manually disabled tests, only the following test is failing + # ... + # ElmFormat.Cli + # format a single file in place: OK + # usage instructions: FAIL + # ... + # 1 out of 266 tests failed (0.50s) + # Test suite elm-format-tests: FAIL + doCheck = false; } diff --git a/pkgs/development/compilers/elm/packages/elm-make.nix b/pkgs/development/compilers/elm/packages/elm-make.nix index 1fe4acc9e3b9..bed7698cfe42 100644 --- a/pkgs/development/compilers/elm/packages/elm-make.nix +++ b/pkgs/development/compilers/elm/packages/elm-make.nix @@ -1,22 +1,23 @@ { mkDerivation, aeson, ansi-terminal, ansi-wl-pprint, base, binary , blaze-html, blaze-markup, bytestring, containers, directory , elm-compiler, elm-package, fetchgit, filepath, mtl -, optparse-applicative, stdenv, text, time, raw-strings-qq +, optparse-applicative, raw-strings-qq, stdenv, text, time }: mkDerivation { pname = "elm-make"; - version = "0.17"; + version = "0.17.1"; src = fetchgit { url = "https://github.com/elm-lang/elm-make"; - sha256 = "0ywi6iq2a3rb8a68ryqpq9y22536aa9k71wy7fcmrd5nwkmpwd2r"; - rev = "5f7b74567c43eff341048c7caceb247b51cdb8bb"; + sha256 = "0k9w5gl48lhhr3n2iflf0vkb3w6al0xcbglgiw4fq1ssz3aa7ijw"; + rev = "0a0a1f52ab04e2d68d60a5798722e1de30b47335"; }; isLibrary = false; isExecutable = true; executableHaskellDepends = [ aeson ansi-terminal ansi-wl-pprint base binary blaze-html blaze-markup bytestring containers directory elm-compiler - elm-package filepath mtl optparse-applicative text time raw-strings-qq + elm-package filepath mtl optparse-applicative raw-strings-qq text + time ]; jailbreak = true; homepage = "http://elm-lang.org"; diff --git a/pkgs/development/compilers/elm/packages/elm-package.nix b/pkgs/development/compilers/elm/packages/elm-package.nix index 7df5516b27ad..ef2d4e9c8e7f 100644 --- a/pkgs/development/compilers/elm/packages/elm-package.nix +++ b/pkgs/development/compilers/elm/packages/elm-package.nix @@ -1,29 +1,32 @@ { mkDerivation, aeson, aeson-pretty, ansi-wl-pprint, base, binary -, bytestring, containers, directory, elm-compiler, fetchgit -, filepath, HTTP, http-client, http-client-tls, http-types, mtl -, network, optparse-applicative, pretty, stdenv, text, time -, unordered-containers, vector, zip-archive +, bytestring, containers, directory, edit-distance, elm-compiler +, fetchgit, filepath, HTTP, http-client, http-client-tls +, http-types, mtl, network, optparse-applicative, parallel-io +, pretty, stdenv, text, time, unordered-containers, vector +, zip-archive }: mkDerivation { pname = "elm-package"; - version = "0.17"; + version = "0.17.1"; src = fetchgit { url = "https://github.com/elm-lang/elm-package"; - sha256 = "0z86560a2f7w3ywqvzqghgz100z0yn8zsiixkw4lp5168krp4axg"; - rev = "fc0924210fe5a7c0af543769b1353dbb2ddf2f0c"; + sha256 = "0dnn871py0pvzxsjjggy5ww2zj9g71c2dcnp38rcr4nbj8yxik85"; + rev = "9011ccdbced1d06aa60de0e3096e609ef44d26dd"; }; isLibrary = true; isExecutable = true; libraryHaskellDepends = [ - aeson aeson-pretty base binary bytestring containers directory - elm-compiler filepath HTTP http-client http-client-tls http-types - mtl network text time unordered-containers vector zip-archive + aeson aeson-pretty ansi-wl-pprint base binary bytestring containers + directory edit-distance elm-compiler filepath HTTP http-client + http-client-tls http-types mtl network parallel-io text time + unordered-containers vector zip-archive ]; executableHaskellDepends = [ aeson aeson-pretty ansi-wl-pprint base binary bytestring containers - directory elm-compiler filepath HTTP http-client http-client-tls - http-types mtl network optparse-applicative pretty text time - unordered-containers vector zip-archive + directory edit-distance elm-compiler filepath HTTP http-client + http-client-tls http-types mtl network optparse-applicative + parallel-io pretty text time unordered-containers vector + zip-archive ]; jailbreak = true; homepage = "http://github.com/elm-lang/elm-package"; diff --git a/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix b/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix index a84f9e48ba03..790430125901 100644 --- a/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix +++ b/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix @@ -1,22 +1,22 @@ { "elm-lang/virtual-dom" = { - version = "1.0.0"; - sha256 = "0pa8k04g9yfixahsb30j0rbhfh6hwdh7xmm2fvk0hkidw7b4xg57"; + version = "1.1.0"; + sha256 = "16g66cvvh85ddciq0ymaqfyq2bcz11pxn0g0dc1wx7bmlqx7q1jz"; }; "evancz/elm-markdown" = { version = "3.0.0"; sha256 = "0r3hcim4mpn46ahv1q6sjp6i2viyp7jik6i71xgwmvfb9drns2p6"; }; "elm-lang/html" = { - version = "1.0.0"; - sha256 = "16cr01yxkpkmgbgclp2p80nd62a6fjw3qipzjsgksrhwv9vv4gm4"; + version = "1.1.0"; + sha256 = "1v7pwxxd81qrfywb4rr199p2i9z77vjkbwjwm5gy1nxdpi8mb50y"; }; "elm-lang/svg" = { - version = "1.0.0"; - sha256 = "0c29y6c58x2sq1bl29z1hr5gi2rlza8clk7ssgzmsf4xbvcczbjx"; + version = "1.1.1"; + sha256 = "0xzc0fq2kg797km0nq2f52w6xdffrl9l0y5zbkpa72w163zpxkkn"; }; "elm-lang/core" = { - version = "4.0.0"; - sha256 = "04qgzgv90qyhjk55yw4szy50h2dqdlm0a2padbgn02yf4bb1b4nw"; + version = "4.0.2"; + sha256 = "1qjhfr3gd1qmfvna7iddspmk26v2nmgmgw9m6yyz10ygy3i9mla6"; }; } diff --git a/pkgs/development/compilers/elm/packages/elm-reactor.nix b/pkgs/development/compilers/elm/packages/elm-reactor.nix index 55b6b9ae416c..cf6d33a5acb4 100644 --- a/pkgs/development/compilers/elm/packages/elm-reactor.nix +++ b/pkgs/development/compilers/elm/packages/elm-reactor.nix @@ -1,22 +1,25 @@ -{ mkDerivation, base, blaze-html, blaze-markup, bytestring, cmdargs -, directory, elm-compiler, fetchgit, filepath, fsnotify, mtl -, snap-core, snap-server, stdenv, text, time, transformers -, websockets, websockets-snap, elm-package, file-embed +{ mkDerivation, aeson, base, blaze-html, blaze-markup, bytestring +, cmdargs, containers, directory, elm-compiler, elm-package +, fetchgit, file-embed, filepath, fsnotify, mtl, process, snap-core +, snap-server, stdenv, template-haskell, text, time, transformers +, unordered-containers, utf8-string, websockets, websockets-snap }: mkDerivation { pname = "elm-reactor"; - version = "0.17"; + version = "0.17.1"; src = fetchgit { url = "https://github.com/elm-lang/elm-reactor"; - sha256 = "03lb6fcc5d02gflarxc54l71hbwdb73v423ffjz5hvlha6ixglv7"; - rev = "4781ad2fbb6cbcde0d659dec293bbed9c847ba71"; + sha256 = "14kkqskvhkfznpl8cmjlvv3rp6ciqmdbxrmq6f20p3aznvkrdvf8"; + rev = "7522d7ef379c5a4ffbba11b1be09ed04add08a63"; }; isLibrary = false; isExecutable = true; executableHaskellDepends = [ - base blaze-html blaze-markup bytestring cmdargs directory - elm-compiler filepath fsnotify mtl snap-core snap-server text time - transformers websockets websockets-snap elm-package file-embed + aeson base blaze-html blaze-markup bytestring cmdargs containers + directory elm-compiler elm-package file-embed filepath fsnotify mtl + process snap-core snap-server template-haskell text time + transformers unordered-containers utf8-string websockets + websockets-snap ]; jailbreak = true; homepage = "http://elm-lang.org"; diff --git a/pkgs/development/compilers/elm/packages/elm-repl.nix b/pkgs/development/compilers/elm/packages/elm-repl.nix index 3b17722b91d8..e08c295f294c 100644 --- a/pkgs/development/compilers/elm/packages/elm-repl.nix +++ b/pkgs/development/compilers/elm/packages/elm-repl.nix @@ -2,20 +2,21 @@ , containers, directory, elm-compiler, elm-package, fetchgit , filepath, haskeline, HUnit, mtl, parsec, QuickCheck, stdenv , test-framework, test-framework-hunit, test-framework-quickcheck2 +, text }: mkDerivation { pname = "elm-repl"; - version = "0.17"; + version = "0.17.1"; src = fetchgit { url = "https://github.com/elm-lang/elm-repl"; - sha256 = "0bpmkm7q3a0h4hwlbwcnzaqgf6n5p1qw65z8kw84f52s5bndc0wc"; - rev = "95b4555cff6b6e2a55a4ea3dab00bfb39dfebf0d"; + sha256 = "0nh2yfr0bi4rg1kak1gjaczpq56y1nii05b5y7hn6n4w651jkm28"; + rev = "413ac0d4ee43c8542afd3041bbb7b8c903cd3d30"; }; isLibrary = false; isExecutable = true; executableHaskellDepends = [ base binary bytestring bytestring-trie cmdargs containers directory - elm-compiler elm-package filepath haskeline mtl parsec + elm-compiler elm-package filepath haskeline mtl parsec text ]; testHaskellDepends = [ base bytestring bytestring-trie cmdargs directory elm-compiler @@ -24,6 +25,6 @@ mkDerivation { ]; jailbreak = true; homepage = "https://github.com/elm-lang/elm-repl"; - description = "A REPL for Elm"; + description = "a REPL for Elm"; license = stdenv.lib.licenses.bsd3; } diff --git a/pkgs/development/compilers/elm/packages/release.nix b/pkgs/development/compilers/elm/packages/release.nix index 531da88452fa..6817d8e297f4 100644 --- a/pkgs/development/compilers/elm/packages/release.nix +++ b/pkgs/development/compilers/elm/packages/release.nix @@ -2,7 +2,7 @@ # Please, do not modify it by hand! { callPackage }: { - version = "0.17"; + version = "0.17.1"; packages = { elm-compiler = callPackage ./elm-compiler.nix { }; elm-package = callPackage ./elm-package.nix { }; diff --git a/pkgs/development/compilers/elm/update-elm.rb b/pkgs/development/compilers/elm/update-elm.rb index e27279604aef..a1f76945cd2c 100755 --- a/pkgs/development/compilers/elm/update-elm.rb +++ b/pkgs/development/compilers/elm/update-elm.rb @@ -1,19 +1,19 @@ #!/usr/bin/env ruby # Take those from https://github.com/elm-lang/elm-platform/blob/master/installers/BuildFromSource.hs -$elm_version = "0.17" -$elm_packages = { "elm-compiler" => "0.17", - "elm-package" => "0.17", - "elm-make" => "0.17", - "elm-reactor" => "0.17", - "elm-repl" => "0.17" +$elm_version = "0.17.1" +$elm_packages = { "elm-compiler" => "0.17.1", + "elm-package" => "0.17.1", + "elm-make" => "0.17.1", + "elm-reactor" => "0.17.1", + "elm-repl" => "0.17.1" } for pkg, ver in $elm_packages - system "cabal2nix https://github.com/elm-lang/#{pkg} --revision refs/tags/#{ver} --jailbreak > #{pkg}.nix" + system "cabal2nix https://github.com/elm-lang/#{pkg} --revision refs/tags/#{ver} --jailbreak > packages/#{pkg}.nix" end -File.open("release.nix", 'w') do |file| +File.open("packages/release.nix", 'w') do |file| file.puts "# This file is auto-generated by ./update-elm.rb." file.puts "# Please, do not modify it by hand!" file.puts "{ callPackage }:" diff --git a/pkgs/development/compilers/ghc/6.10.2-binary.nix b/pkgs/development/compilers/ghc/6.10.2-binary.nix index 81bdebdcbd47..2df019bd7f16 100644 --- a/pkgs/development/compilers/ghc/6.10.2-binary.nix +++ b/pkgs/development/compilers/ghc/6.10.2-binary.nix @@ -1,4 +1,4 @@ -{stdenv, lib, fetchurl, perl, libedit, ncurses, gmp}: +{stdenv, lib, fetchurl, perl, libedit, ncurses5, gmp}: stdenv.mkDerivation rec { version = "6.10.2"; @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { (if stdenv.isLinux then '' find . -type f -perm -0100 \ -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${libedit}/lib:${ncurses.out}/lib:${gmp.out}/lib" {} \; + --set-rpath "${libedit}/lib:${ncurses5.out}/lib:${gmp.out}/lib" {} \; for prog in ld ar gcc strip ranlib; do find . -name "setup-config" -exec sed -i "s@/usr/bin/$prog@$(type -p $prog)@g" {} \; done diff --git a/pkgs/development/compilers/ghc/7.0.4-binary.nix b/pkgs/development/compilers/ghc/7.0.4-binary.nix index f0f54252b3fc..9b9da4d4f78a 100644 --- a/pkgs/development/compilers/ghc/7.0.4-binary.nix +++ b/pkgs/development/compilers/ghc/7.0.4-binary.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, perl, ncurses, gmp, libiconv}: +{stdenv, fetchurl, perl, ncurses5, gmp, libiconv}: stdenv.mkDerivation rec { version = "7.0.4"; @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { stdenv.lib.optionalString stdenv.isLinux '' find . -type f -perm -0100 \ -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${ncurses.out}/lib:${gmp.out}/lib" {} \; + --set-rpath "${ncurses5.out}/lib:${gmp.out}/lib" {} \; sed -i "s|/usr/bin/perl|perl\x00 |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2 sed -i "s|/usr/bin/gcc|gcc\x00 |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2 for prog in ld ar gcc strip ranlib; do diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix index 07137578585d..5faae118d8cb 100644 --- a/pkgs/development/compilers/ghc/7.4.2-binary.nix +++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, perl, ncurses, gmp, libiconv, makeWrapper}: +{stdenv, fetchurl, perl, ncurses5, gmp, libiconv, makeWrapper}: stdenv.mkDerivation rec { version = "7.4.2"; @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { # find editline/gmp. stdenv.lib.optionalString stdenv.isLinux '' mkdir -p "$out/lib" - ln -sv "${ncurses.out}/lib/libncurses.so" "$out/lib/libncurses${stdenv.lib.optionalString stdenv.is64bit "w"}.so.5" + ln -sv "${ncurses5.out}/lib/libncurses.so" "$out/lib/libncurses${stdenv.lib.optionalString stdenv.is64bit "w"}.so.5" find . -type f -perm -0100 \ -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "$out/lib:${gmp.out}/lib" {} \; diff --git a/pkgs/development/compilers/path64/default.nix b/pkgs/development/compilers/path64/default.nix deleted file mode 100644 index 694bdc8990fd..000000000000 --- a/pkgs/development/compilers/path64/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{stdenv, fetchgit, perl, flex, bison, gmp, mpfr, cmake}: - -assert stdenv.system == "x86_64-linux"; - -stdenv.mkDerivation { - name = "path64-2010-07-02"; - - src = fetchgit { - url = git://github.com/path64/compiler.git; - rev = "e17f7f952831bbf1d996"; - sha256 = "fa1320959e1131557d5f82e98f4621a222ec45e1d6e0e7f271d2c13de4fd0dd1"; - }; - - patchPhase = '' - sed -i s,/usr/bin/ld,$(type -P ld), src/driver/phases.c - sed -i s,/lib64/ld-linux-x86-64.so.2,${stdenv.cc.libc.out}/lib/ld-linux-x86-64.so.2, src/include/main_defs.h.in - ''; - - cmakeFlags = '' - -DPATH64_ENABLE_HUGEPAGES=ON - -DPATH64_ENABLE_MATHLIBS=ON -DPATH64_ENABLE_OPENMP=ON - -DPATH64_ENABLE_PSCRUNTIME=OFF - -DPATH64_ENABLE_PROFILING=OFF -DPATH64_ENABLE_TARGETS=x8664 - -DCMAKE_BUILD_TYPE=Debug -DPATH64_ENABLE_FORTRAN=OFF - -DPSC_CRT_PATH=${stdenv.cc.libc.out}/lib - ''; - - makeFlags = "-j4"; - - installPhase = '' - exit 1; - ''; - - buildInputs = [ perl flex bison gmp mpfr cmake ]; -} diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index e9a1624df1d8..296f81d271d9 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -9,11 +9,11 @@ stdenv.mkDerivation rec { name = "sbcl-${version}"; - version = "1.3.6"; + version = "1.3.7"; src = fetchurl { url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2"; - sha256 = "1ndha72ji30qkq3rq76sp0yrka0679agg97x9imda2pyv0dsq5zh"; + sha256 = "0fjdqnb2rsm2vi9794ywp27jr239ddvzc4xfr0dk49jd4v7p2kc5"; }; patchPhase = '' diff --git a/pkgs/development/go-modules/libs.json b/pkgs/development/go-modules/libs.json index 98a9374c4e47..9e1b43691369 100644 --- a/pkgs/development/go-modules/libs.json +++ b/pkgs/development/go-modules/libs.json @@ -1601,6 +1601,42 @@ "sha256": "0dmc8iar9685ks1ba3vnycjsx8qxwyqv51jb7677dvwnzbqhgw6f" } }, + { + "goPackagePath": "github.com/yosssi/ace", + "fetch": { + "type": "git", + "url": "https://github.com/yosssi/ace", + "rev": "71afeb714739f9d5f7e1849bcd4a0a5938e1a70d", + "sha256": "15k7ji8m3nqbwhnsvp82j4qa45sgvwv2giliw2xkdwi2g7mfrn8k" + } + }, + { + "goPackagePath": "github.com/spf13/viper", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/viper", + "rev": "c1ccc378a054ea8d4e38d8c67f6938d4760b53dd", + "sha256": "0lpdzalqhqp9pwsg63inkxwjji7m0pp42ryw1499bqbjp97hriq0" + } + }, + { + "goPackagePath": "github.com/spf13/pflag", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/pflag", + "rev": "367864438f1b1a3c7db4da06a2f55b144e6784e0", + "sha256": "03c6654hv4v1fj79i5sri3p9q2afqgicka4nicb6fr4kcfkkgbfp" + } + }, + { + "goPackagePath": "github.com/spf13/jwalterweatherman", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/jwalterweatherman", + "rev": "33c24e77fb80341fe7130ee7c594256ff08ccc46", + "sha256": "1knvzspqzc2bh58q16zggzc8gcabjp5gr7zk4k7nx5ij4092cg0z" + } + }, { "goPackagePath": "github.com/fsnotify/fsnotify", "fetch": { @@ -1618,5 +1654,167 @@ "rev": "45c278ab3607870051a2ea9040bb85fcb8557481", "sha256": "0620v75wppfd84d95n312wpngcb73cph4q3ivs1h0waljfnsrd5l" } + }, + { + "goPackagePath": "github.com/magiconair/properties", + "fetch": { + "type": "git", + "url": "https://github.com/magiconair/properties", + "rev": "c265cfa48dda6474e208715ca93e987829f572f8", + "sha256": "1ab9ywwsrdq5mvrcwl7m3276y1q4dfwinbv88vgpqwcqai9wkpp3" + } + }, + { + "goPackagePath": "github.com/bep/inflect", + "fetch": { + "type": "git", + "url": "https://github.com/bep/inflect", + "rev": "b896c45f5af983b1f416bdf3bb89c4f1f0926f69", + "sha256": "0drv6in94n7lmap4ajvgqlvdcbpn8alinfdzywzpihvzbx21b3h3" + } + }, + { + "goPackagePath": "github.com/eknkc/amber", + "fetch": { + "type": "git", + "url": "https://github.com/eknkc/amber", + "rev": "91774f050c1453128146169b626489e60108ec03", + "sha256": "1rb8bm35h8a77q4py6r3818cpwh7kpq1kh2ib2rb4i5s7z75ciis" + } + }, + { + "goPackagePath": "github.com/spf13/afero", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/afero", + "rev": "1a8ecf8b9da1fb5306e149e83128fc447957d2a8", + "sha256": "1nrg0gmqnl4h6zjmi4mdhrwnl3l34nzxpq2hsr3nizfvrx5gqbzw" + } + }, + { + "goPackagePath": "github.com/spf13/cast", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/cast", + "rev": "27b586b42e29bec072fe7379259cc719e1289da6", + "sha256": "1y73pfxdvm1bfpghwsfxj8gl4miv6fpzi9azxcknp6rcjn1gmq0x" + } + }, + { + "goPackagePath": "github.com/spf13/cobra", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/cobra", + "rev": "bc81c21bd0d8be5ba2d6630a505d79d4467566e7", + "sha256": "1sp8gl25cjx0yibh6q1i8d5rbxpwaal3z8vz372wfmbz002say8r" + } + }, + { + "goPackagePath": "github.com/dchest/cssmin", + "fetch": { + "type": "git", + "url": "https://github.com/dchest/cssmin", + "rev": "fb8d9b44afdc258bfff6052d3667521babcb2239", + "sha256": "09sdijfx5d05z4cd5k6lhl7k3kbpdf2amzlngv15h5v0fff9qw4s" + } + }, + { + "goPackagePath": "github.com/spf13/fsync", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/fsync", + "rev": "eefee59ad7de621617d4ff085cf768aab4b919b1", + "sha256": "0d56xdczawikyczc12i661qc79dbv4q8ihlj4p20zsjkyxxym59p" + } + }, + { + "goPackagePath": "github.com/cpuguy83/go-md2man", + "fetch": { + "type": "git", + "url": "https://github.com/cpuguy83/go-md2man", + "rev": "2724a9c9051aa62e9cca11304e7dd518e9e41599", + "sha256": "1j2bigs7ixy20cdqd246nxr417md2qcyvkfk3x94992cr88d0vyj" + } + }, + { + "goPackagePath": "github.com/miekg/mmark", + "fetch": { + "type": "git", + "url": "https://github.com/miekg/mmark", + "rev": "adb5c3e2e9f3e7da9bd25291edda8e66c0045a2a", + "sha256": "0fycz17fj37fh95lfshdrfwrgkzi3hl1kgnily0cxc9zwfbap3qa" + } + }, + { + "goPackagePath": "github.com/spf13/nitro", + "fetch": { + "type": "git", + "url": "https://github.com/spf13/nitro", + "rev": "24d7ef30a12da0bdc5e2eb370a79c659ddccf0e8", + "sha256": "143sbpx0jdgf8f8ayv51x6l4jg6cnv6nps6n60qxhx4vd90s6mib" + } + }, + { + "goPackagePath": "github.com/PuerkitoBio/purell", + "fetch": { + "type": "git", + "url": "https://github.com/PuerkitoBio/purell", + "rev": "1d5d1cfad45d42ec5f81fa8ef23de09cebc6dcc3", + "sha256": "12k82576ka21c6572yy2v81kxpjrgf9mffjlz469g3vs0g3nkwlb" + } + }, + { + "goPackagePath": "github.com/opennota/urlesc", + "fetch": { + "type": "git", + "url": "https://github.com/opennota/urlesc", + "rev": "5fa9ff0392746aeae1c4b37fcc42c65afa7a9587", + "sha256": "0dppkmfs0hb5vcqli191x9yss5vvlx29qxjcywhdfirc89rn0sni" + } + }, + { + "goPackagePath": "github.com/pkg/sftp", + "fetch": { + "type": "git", + "url": "https://github.com/pkg/sftp", + "rev": "d4c18e7ffdc496a38de67dde6e29b2f364afc472", + "sha256": "0cnl83k317gxskayfj3xwr4bl0vcbjvlwi3q0vjwvircynb6xscj" + } + }, + { + "goPackagePath": "github.com/kr/fs", + "fetch": { + "type": "git", + "url": "https://github.com/kr/fs", + "rev": "2788f0dbd16903de03cb8186e5c7d97b69ad387b", + "sha256": "1c0fipl4rsh0v5liq1ska1dl83v3llab4k6lm8mvrx9c4dyp71ly" + } + }, + { + "goPackagePath": "github.com/kyokomi/emoji", + "fetch": { + "type": "git", + "url": "https://github.com/kyokomi/emoji", + "rev": "17c5e7085c9d59630aa578df67f4469481fbe7a9", + "sha256": "0qs4mi7z1lghiyiw7s2bz5y959wj9ifmhyqh39xwqk69d690jwlp" + } + }, + { + "goPackagePath": "github.com/pkg/errors", + "fetch": { + "type": "git", + "url": "https://github.com/pkg/errors", + "rev": "494e70f7620561491c2ca11e185bbef4b70060da", + "sha256": "0a0961ixl67vryhnzyzhai357c9n9a7v3vpkpqrh32spn033gjd9" + } + }, + { + "goPackagePath": "github.com/PuerkitoBio/urlesc", + "fetch": { + "type": "git", + "url": "https://github.com/PuerkitoBio/urlesc", + "rev": "5fa9ff0392746aeae1c4b37fcc42c65afa7a9587", + "sha256": "0dppkmfs0hb5vcqli191x9yss5vvlx29qxjcywhdfirc89rn0sni" + } } ] diff --git a/pkgs/development/guile-modules/guile-sdl/default.nix b/pkgs/development/guile-modules/guile-sdl/default.nix index 4a0f23457ba6..94f3418b0316 100644 --- a/pkgs/development/guile-modules/guile-sdl/default.nix +++ b/pkgs/development/guile-modules/guile-sdl/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ guile ]; buildInputs = [ - SDL SDL_image SDL_ttf SDL_mixer + SDL.dev SDL_image SDL_ttf SDL_mixer ]; GUILE_AUTO_COMPILE = 0; diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 29420a3d76a3..e11cbf655377 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -242,6 +242,15 @@ self: super: { ''; })) pkgs.libcxx; + inline-c-cpp = if !pkgs.stdenv.isDarwin + then super.inline-c-cpp + else addExtraLibrary (overrideCabal super.inline-c-cpp (drv: + { + postPatch = '' + substituteInPlace inline-c-cpp.cabal --replace stdc++ c++ + ''; + })) pkgs.libcxx; + # tests don't compile for some odd reason jwt = dontCheck super.jwt; diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml index 976baab0aa47..b213780ff4b8 100644 --- a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml +++ b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml @@ -90,6 +90,14 @@ package-maintainers: khumba: - goatee - goatee-gtk + - hoppy-docs + - hoppy-generator + - hoppy-runtime + - hoppy-std + - qtah-cpp-qt5 + - qtah-examples + - qtah-generator + - qtah-qt5 psibi: - path-pieces - persistent diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index b03293ecfc5c..4bc9a2af5501 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -9,8 +9,8 @@ let allCabalFiles = pkgs.fetchFromGitHub { owner = "commercialhaskell"; repo = "all-cabal-hashes"; - rev = "461610ab6f0cf581e186643c037f1981755792d9"; - sha256 = "0x2577lfd5cbbaivl72273kw93gcmxvbjybk7w4h2ic3zvs1fnvm"; + rev = "72f1318540eff69544eb8c14a16f630d0c5448b8"; + sha256 = "1czi1rajk2726mqrw3qp7a43h26acbjw54ll3ns063yzg9hg469m"; }; inherit (stdenv.lib) fix' extends; diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix index e302f9e55cbd..68365b27a44f 100644 --- a/pkgs/development/interpreters/octave/default.nix +++ b/pkgs/development/interpreters/octave/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, gfortran, readline, ncurses, perl, flex, texinfo, qhull , libsndfile, libX11, graphicsmagick, pcre, pkgconfig, mesa, fltk -, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas +, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas, arpack, libwebp , qt ? null, qscintilla ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null , suitesparse ? null, gnuplot ? null, jdk ? null, python ? null }: @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { buildInputs = [ gfortran readline ncurses perl flex texinfo qhull libX11 graphicsmagick pcre pkgconfig mesa fltk zlib curl openblas libsndfile - fftw fftwSinglePrec qrupdate ] + fftw fftwSinglePrec qrupdate arpack libwebp ] ++ (stdenv.lib.optional (qt != null) qt) ++ (stdenv.lib.optional (qscintilla != null) qscintilla) ++ (stdenv.lib.optional (ghostscript != null) ghostscript) @@ -38,9 +38,10 @@ stdenv.mkDerivation rec { ++ (stdenv.lib.optional (jdk != null) jdk) ++ (stdenv.lib.optional (gnuplot != null) gnuplot) ++ (stdenv.lib.optional (python != null) python) + ++ (stdenv.lib.optionals (!stdenv.isDarwin) [mesa libX11]) ; - doCheck = true; + doCheck = !stdenv.isDarwin; enableParallelBuilding = true; @@ -50,7 +51,9 @@ stdenv.mkDerivation rec { "--with-blas=openblas" "--with-lapack=openblas" ] - ++ stdenv.lib.optional openblas.blas64 "--enable-64"; + ++ stdenv.lib.optional openblas.blas64 "--enable-64" + ++ stdenv.lib.optionals stdenv.isDarwin ["--with-x=no"] + ; # Keep a copy of the octave tests detailed results in the output # derivation, because someone may care @@ -67,6 +70,6 @@ stdenv.mkDerivation rec { homepage = http://octave.org/; license = stdenv.lib.licenses.gpl3Plus; maintainers = with stdenv.lib.maintainers; [viric raskin]; - platforms = with stdenv.lib.platforms; linux; + platforms = with stdenv.lib.platforms; linux ++ darwin; }; } diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index 48712cc21b98..6641eb24b241 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false +{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, less, includeModules ? false , sqlite, tcl, tk, xlibsWrapper, openssl, readline, db, ncurses, gdbm, self, callPackage , python26Packages }: @@ -53,6 +53,8 @@ let [ bzip2 openssl ]++ optionals includeModules [ db openssl ncurses gdbm readline xlibsWrapper tcl tk sqlite ] ++ optional zlibSupport zlib; + propagatedBuildInputs = [ less ]; + mkPaths = paths: { C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths; LIBRARY_PATH = makeLibraryPath paths; @@ -64,8 +66,8 @@ let name = "python${if includeModules then "" else "-minimal"}-${version}"; pythonVersion = majorVersion; - inherit majorVersion version src patches buildInputs preConfigure - configureFlags; + inherit majorVersion version src patches buildInputs propagatedBuildInputs + preConfigure configureFlags; inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH; diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix index e47fc82f4e8e..aca88f504a0d 100644 --- a/pkgs/development/interpreters/python/2.7/default.nix +++ b/pkgs/development/interpreters/python/2.7/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchurl, self, callPackage, python27Packages , bzip2, openssl, gettext +, less , includeModules ? false @@ -22,11 +23,11 @@ with stdenv.lib; let majorVersion = "2.7"; - version = "${majorVersion}.11"; + version = "${majorVersion}.12"; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz"; - sha256 = "0iiz844riiznsyhhyy962710pz228gmhv8qi3yk4w4jhmx2lqawn"; + sha256 = "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp"; }; patches = @@ -108,7 +109,7 @@ let ++ optional zlibSupport zlib ++ optional stdenv.isDarwin CF; - propagatedBuildInputs = optional stdenv.isDarwin configd; + propagatedBuildInputs = [ less ] ++ optional stdenv.isDarwin configd; mkPaths = paths: { C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths; diff --git a/pkgs/development/interpreters/python/2.7/no-ldconfig.patch b/pkgs/development/interpreters/python/2.7/no-ldconfig.patch index 10284c7b3744..44c38fb29534 100644 --- a/pkgs/development/interpreters/python/2.7/no-ldconfig.patch +++ b/pkgs/development/interpreters/python/2.7/no-ldconfig.patch @@ -1,7 +1,8 @@ -diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/util.py ---- Python-2.7.11-orig/Lib/ctypes/util.py 2015-12-05 20:46:56.000000000 +0100 -+++ Python-2.7.11/Lib/ctypes/util.py 2016-07-01 14:24:50.714223450 +0200 -@@ -212,31 +212,7 @@ +diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py +index b2c514d..a6eca81 100644 +--- a/Lib/ctypes/util.py ++++ b/Lib/ctypes/util.py +@@ -207,31 +207,7 @@ elif os.name == "posix": else: def _findSoname_ldconfig(name): @@ -21,7 +22,7 @@ diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/ - - # XXX assuming GLIBC's ldconfig (with option -p) - expr = r'\s+(lib%s\.[^\s]+)\s+\(%s' % (re.escape(name), abi_type) -- f = os.popen('/sbin/ldconfig -p 2>/dev/null') +- f = os.popen('LC_ALL=C LANG=C /sbin/ldconfig -p 2>/dev/null') - try: - data = f.read() - finally: @@ -34,10 +35,11 @@ diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/ def find_library(name): return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name)) -diff -ru -x '*~' Python-2.7.11-orig/Lib/uuid.py Python-2.7.11/Lib/uuid.py ---- Python-2.7.11-orig/Lib/uuid.py 2015-12-05 20:47:09.000000000 +0100 -+++ Python-2.7.11/Lib/uuid.py 2016-07-01 14:33:14.360446897 +0200 -@@ -437,57 +437,7 @@ +diff --git a/Lib/uuid.py b/Lib/uuid.py +index 7432032..9829d18 100644 +--- a/Lib/uuid.py ++++ b/Lib/uuid.py +@@ -437,57 +437,7 @@ def _netbios_getnode(): return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) + (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5]) diff --git a/pkgs/development/interpreters/python/3.3/default.nix b/pkgs/development/interpreters/python/3.3/default.nix index 8c16995d5cc4..8a36e03c7840 100644 --- a/pkgs/development/interpreters/python/3.3/default.nix +++ b/pkgs/development/interpreters/python/3.3/default.nix @@ -2,6 +2,7 @@ , bzip2 , db , gdbm +, less , libX11, xproto , lzma , ncurses @@ -27,6 +28,11 @@ let buildInputs = filter (p: p != null) [ zlib bzip2 lzma gdbm sqlite db readline ncurses openssl tcl tk libX11 xproto ]; + + propagatedBuildInputs = [ + less + ]; + in stdenv.mkDerivation { name = "python3-${version}"; @@ -34,6 +40,7 @@ stdenv.mkDerivation { inherit majorVersion version; inherit buildInputs; + inherit propagatedBuildInputs; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz"; diff --git a/pkgs/development/interpreters/python/3.4/default.nix b/pkgs/development/interpreters/python/3.4/default.nix index 1cd7f58e95ef..7ea6adc4370d 100644 --- a/pkgs/development/interpreters/python/3.4/default.nix +++ b/pkgs/development/interpreters/python/3.4/default.nix @@ -2,6 +2,7 @@ , bzip2 , db , gdbm +, less , libX11, xproto , lzma , ncurses @@ -42,6 +43,11 @@ let libX11 xproto ] ++ optionals stdenv.isDarwin [ CF configd ]; + + propagatedBuildInputs = [ + less + ]; + in stdenv.mkDerivation { name = "python3-${fullVersion}"; @@ -49,6 +55,7 @@ stdenv.mkDerivation { inherit majorVersion version; inherit buildInputs; + inherit propagatedBuildInputs; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz"; diff --git a/pkgs/development/interpreters/python/3.5/default.nix b/pkgs/development/interpreters/python/3.5/default.nix index e0adad2bae21..21716c87386f 100644 --- a/pkgs/development/interpreters/python/3.5/default.nix +++ b/pkgs/development/interpreters/python/3.5/default.nix @@ -2,6 +2,7 @@ , bzip2 , db , gdbm +, less , libX11, xproto , lzma , ncurses @@ -42,6 +43,11 @@ let libX11 xproto ] ++ optionals stdenv.isDarwin [ CF configd ]; + + propagatedBuildInputs = [ + less + ]; + in stdenv.mkDerivation { name = "python3-${fullVersion}"; @@ -49,6 +55,7 @@ stdenv.mkDerivation { inherit majorVersion version; inherit buildInputs; + inherit propagatedBuildInputs; src = fetchurl { url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz"; diff --git a/pkgs/development/interpreters/python/3.6/default.nix b/pkgs/development/interpreters/python/3.6/default.nix new file mode 100644 index 000000000000..9515e1587d7f --- /dev/null +++ b/pkgs/development/interpreters/python/3.6/default.nix @@ -0,0 +1,145 @@ +{ stdenv, fetchurl +, glibc +, bzip2 +, db +, gdbm +, less +, libX11, xproto +, lzma +, ncurses +, openssl +, readline +, sqlite +, tcl, tk +, zlib +, callPackage +, self +, python36Packages + +, CF, configd +}: + +assert readline != null -> ncurses != null; + +with stdenv.lib; + +let + majorVersion = "3.6"; + pythonVersion = majorVersion; + version = "${majorVersion}.0a3"; + fullVersion = "${version}"; + + buildInputs = filter (p: p != null) [ + glibc + zlib + bzip2 + lzma + gdbm + sqlite + db + readline + ncurses + openssl + tcl + tk + libX11 + xproto + ] ++ optionals stdenv.isDarwin [ CF configd ]; + + propagatedBuildInputs = [ + less + ]; + +in +stdenv.mkDerivation { + name = "python3-${fullVersion}"; + pythonVersion = majorVersion; + inherit majorVersion version; + + inherit buildInputs; + inherit propagatedBuildInputs; + + src = fetchurl { + url = "https://www.python.org/ftp/python/${majorVersion}.0/Python-${fullVersion}.tar.xz"; + sha256 = "08c3598bwihibwca9lwxq923sjq9shvgv3wxv4vkga2n6hf63l1c"; + }; + + NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s"; + + prePatch = optionalString stdenv.isDarwin '' + substituteInPlace configure --replace '`/usr/bin/arch`' '"i386"' + ''; + + preConfigure = '' + for i in /usr /sw /opt /pkg; do # improve purity + substituteInPlace ./setup.py --replace $i /no-such-path + done + ${optionalString stdenv.isDarwin '' + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2" + export MACOSX_DEPLOYMENT_TARGET=10.6 + ''} + + substituteInPlace ./Lib/plat-generic/regen --replace "/usr/include" ${glibc}/include + + configureFlagsArray=( --enable-shared --with-threads + CPPFLAGS="${concatStringsSep " " (map (p: "-I${getDev p}/include") buildInputs)}" + LDFLAGS="${concatStringsSep " " (map (p: "-L${getLib p}/lib") buildInputs)}" + LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}" + ) + ''; + + setupHook = ./setup-hook.sh; + + postInstall = '' + # needed for some packages, especially packages that backport functionality + # to 2.x from 3.x + for item in $out/lib/python${majorVersion}/test/*; do + if [[ "$item" != */test_support.py* ]]; then + rm -rf "$item" + else + echo $item + fi + done + touch $out/lib/python${majorVersion}/test/__init__.py + + ln -s "$out/include/python${majorVersion}m" "$out/include/python${majorVersion}" + paxmark E $out/bin/python${majorVersion} + ''; + + passthru = rec { + zlibSupport = zlib != null; + sqliteSupport = sqlite != null; + dbSupport = db != null; + readlineSupport = readline != null; + opensslSupport = openssl != null; + tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null); + libPrefix = "python${majorVersion}"; + executable = "python${majorVersion}m"; + buildEnv = callPackage ../wrapper.nix { python = self; }; + withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; }; + isPy3 = true; + isPy35 = true; + is_py3k = true; # deprecated + sitePackages = "lib/${libPrefix}/site-packages"; + interpreter = "${self}/bin/${executable}"; + }; + + enableParallelBuilding = true; + + meta = { + homepage = http://python.org; + description = "A high-level dynamically-typed programming language"; + longDescription = '' + Python is a remarkably powerful dynamic programming language that + is used in a wide variety of application domains. Some of its key + distinguishing features include: clear, readable syntax; strong + introspection capabilities; intuitive object orientation; natural + expression of procedural code; full modularity, supporting + hierarchical packages; exception-based error handling; and very + high level dynamic data types. + ''; + license = licenses.psfl; + platforms = with platforms; linux ++ darwin; + maintainers = with maintainers; [ chaoflow domenkozar cstrahan kragniz ]; + }; +} diff --git a/pkgs/development/interpreters/python/3.6/setup-hook.sh b/pkgs/development/interpreters/python/3.6/setup-hook.sh new file mode 100644 index 000000000000..26a0d57bc87c --- /dev/null +++ b/pkgs/development/interpreters/python/3.6/setup-hook.sh @@ -0,0 +1,15 @@ +addPythonPath() { + addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.6/site-packages +} + +toPythonPath() { + local paths="$1" + local result= + for i in $paths; do + p="$i/lib/python3.6/site-packages" + result="${result}${result:+:}$p" + done + echo $result +} + +envHooks+=(addPythonPath) diff --git a/pkgs/development/libraries/appstream-glib/default.nix b/pkgs/development/libraries/appstream-glib/default.nix index 14fbcdf7342c..e6051552ab71 100644 --- a/pkgs/development/libraries/appstream-glib/default.nix +++ b/pkgs/development/libraries/appstream-glib/default.nix @@ -1,19 +1,23 @@ -{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool, glib +{ stdenv, fetchFromGitHub, pkgconfig, gettext, gtk3, intltool, glib , gtk_doc, autoconf, automake, libtool, libarchive, libyaml , gobjectIntrospection, sqlite, libsoup, gcab, attr, acl, docbook_xsl +, libuuid, json_glib }: stdenv.mkDerivation rec { - name = "appstream-glib-0.3.6"; + name = "appstream-glib-0.5.11"; - src = fetchurl { - url = "https://github.com/hughsie/appstream-glib/archive/appstream_glib_0_3_6.tar.gz"; - sha256 = "1zdxg9dk9vxw2cs04cswd138di3dysz0hxk4918750hh19s3859c"; + src = fetchFromGitHub { + owner = "hughsie"; + repo = "appstream-glib"; + rev = stdenv.lib.replaceStrings ["." "-"] ["_" "_"] name; + sha256 = "1rvfncm9z29h70pd718j73cd263g6yyxkxrg7zfzy0gj6wwzvhkh"; }; - buildInputs = [ glib libtool pkgconfig gtk_doc gettext intltool sqlite libsoup - gcab attr acl docbook_xsl - libarchive libyaml gtk3 autoconf automake gobjectIntrospection ]; + nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool ]; + buildInputs = [ glib gtk_doc gettext sqlite libsoup + gcab attr acl docbook_xsl libuuid json_glib + libarchive libyaml gtk3 gobjectIntrospection ]; configureScript = "./autogen.sh"; @@ -22,7 +26,6 @@ stdenv.mkDerivation rec { homepage = https://github.com/hughsie/appstream-glib; license = licenses.lgpl21Plus; platforms = platforms.linux; - maintainers = with maintainers; [ lethalman ]; + maintainers = with maintainers; [ lethalman matthewbauer ]; }; - } diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix index 772ea2030c2a..99cb8aae3236 100644 --- a/pkgs/development/libraries/fltk/default.nix +++ b/pkgs/development/libraries/fltk/default.nix @@ -1,6 +1,7 @@ { stdenv, composableDerivation, fetchurl, pkgconfig, xlibsWrapper, inputproto, libXi , freeglut, mesa, libjpeg, zlib, libXinerama, libXft, libpng , cfg ? {} +, darwin, libtiff, freetype }: let inherit (composableDerivation) edf; in @@ -21,7 +22,10 @@ composableDerivation.composableDerivation {} { ''; nativeBuildInputs = [ pkgconfig ]; - propagatedBuildInputs = [ xlibsWrapper inputproto libXi freeglut ]; + propagatedBuildInputs = [ inputproto ] + ++ (if stdenv.isDarwin + then (with darwin.apple_sdk.frameworks; [Cocoa AGL GLUT freetype libtiff]) + else [ xlibsWrapper libXi freeglut ]); enableParallelBuilding = true; @@ -55,9 +59,8 @@ composableDerivation.composableDerivation {} { meta = { description = "A C++ cross-platform lightweight GUI library"; homepage = http://www.fltk.org; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; license = stdenv.lib.licenses.gpl2; }; } - diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix index f18ea5948f15..6acf1ebce29c 100644 --- a/pkgs/development/libraries/fontconfig/default.nix +++ b/pkgs/development/libraries/fontconfig/default.nix @@ -68,6 +68,7 @@ stdenv.mkDerivation rec { cd "$out/etc/fonts" rm conf.d/{50-user,51-local}.conf "${libxslt.bin}/bin/xsltproc" --stringparam fontDirectories "${fontbhttf}" \ + --stringparam fontconfig "$out" \ --stringparam fontconfigConfigVersion "${configVersion}" \ --path $out/share/xml/fontconfig \ ${./make-fonts-conf.xsl} $out/etc/fonts/fonts.conf \ diff --git a/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl b/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl index dddbbe9e516b..b59fcd0187b8 100644 --- a/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl +++ b/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl @@ -28,6 +28,8 @@ /var/cache/fontconfig + + /etc/fonts/conf.d /etc/fonts//conf.d diff --git a/pkgs/development/libraries/libinput/default.nix b/pkgs/development/libraries/libinput/default.nix index a8dc8f357a74..0efee5b94f7f 100644 --- a/pkgs/development/libraries/libinput/default.nix +++ b/pkgs/development/libraries/libinput/default.nix @@ -3,6 +3,7 @@ , documentationSupport ? false, doxygen ? null, graphviz ? null # Documentation , eventGUISupport ? false, cairo ? null, glib ? null, gtk3 ? null # GUI event viewer support , testsSupport ? false, check ? null, valgrind ? null +, autoconf, automake }: assert documentationSupport -> doxygen != null && graphviz != null; @@ -32,13 +33,16 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ libevdev mtdev libwacom ] + buildInputs = [ libevdev mtdev libwacom autoconf automake ] ++ optionals eventGUISupport [ cairo glib gtk3 ] ++ optionals documentationSupport [ doxygen graphviz ] ++ optionals testsSupport [ check valgrind ]; propagatedBuildInputs = [ udev ]; + patches = [ ./udev-absolute-path.patch ]; + patchFlags = [ "-p0" ]; + meta = { description = "Handles input devices in Wayland compositors and provides a generic X.Org input driver"; homepage = http://www.freedesktop.org/wiki/Software/libinput; diff --git a/pkgs/development/libraries/libinput/udev-absolute-path.patch b/pkgs/development/libraries/libinput/udev-absolute-path.patch new file mode 100644 index 000000000000..2d3fa966b299 --- /dev/null +++ b/pkgs/development/libraries/libinput/udev-absolute-path.patch @@ -0,0 +1,12 @@ +--- configure.ac 2016-05-27 14:00:25.248388226 +0200 ++++ configure.ac 2016-05-27 14:01:28.228943416 +0200 +@@ -214,7 +214,8 @@ AM_CONDITIONAL(BUILD_DOCS, [test "x$buil + # Used by the udev rules so we can use callouts during testing without + # installing everything first. Default is the empty string so the installed + # rule will use udev's default path. Override is in udev/Makefile.am +-AC_SUBST(UDEV_TEST_PATH, "") ++UDEV_TEST_PATH="${UDEV_DIR}/" ++AC_SUBST(UDEV_TEST_PATH) + AC_PATH_PROG(SED, [sed]) + + AC_CONFIG_FILES([Makefile diff --git a/pkgs/development/libraries/libjpeg-drop/default.nix b/pkgs/development/libraries/libjpeg-drop/default.nix new file mode 100644 index 000000000000..ed1b5f5bdb0e --- /dev/null +++ b/pkgs/development/libraries/libjpeg-drop/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, static ? true }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "libjpeg-drop-9b"; + + srcs = [ + (fetchurl { + url = http://www.ijg.org/files/jpegsrc.v9b.tar.gz; + sha256 = "0lnhpahgdwlrkd41lx6cr90r199f8mc6ydlh7jznj5klvacd63r4"; + }) + (fetchurl { + url = http://jpegclub.org/droppatch.v9b.tar.gz; + sha256 = "022bnvpird7w5pwbfqpq7j7pwja5kp6x9k3sdypcy3g2nwwy2wwk"; + }) + ]; + + postUnpack = '' + rm jpegtran + mv jpegtran.c jpeg-9b/jpegtran.c + mv transupp.c jpeg-9b/transupp.c + mv transupp.h jpeg-9b/transupp.h + ''; + + configureFlags = [] + ++ optional static [ "--enable-static" "--disable-shared" ]; + + outputs = [ "dev" "out" "man" "bin" ]; + + meta = { + homepage = http://jpegclub.org/jpegtran/; + description = "Experimental lossless crop 'n' drop (cut & paste) patches for libjpeg"; + license = stdenv.lib.licenses.free; + }; +} diff --git a/pkgs/development/libraries/libmediainfo/default.nix b/pkgs/development/libraries/libmediainfo/default.nix index 26416dc1ee17..90869a4c8a5a 100644 --- a/pkgs/development/libraries/libmediainfo/default.nix +++ b/pkgs/development/libraries/libmediainfo/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, zlib }: stdenv.mkDerivation rec { - version = "0.7.86"; + version = "0.7.87"; name = "libmediainfo-${version}"; src = fetchurl { url = "http://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz"; - sha256 = "14m7cgd93mglc9a4x28pb4yc6nfxhqk7vfryca83vpn80la1lxy0"; + sha256 = "1gvjvc809mrhpcqr62cihhc6jnwml197xjbgydnzvsghih8dq8s9"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/development/libraries/libmsgpack/default.nix b/pkgs/development/libraries/libmsgpack/default.nix index 5b2c7902c3c6..2af7e31c889a 100644 --- a/pkgs/development/libraries/libmsgpack/default.nix +++ b/pkgs/development/libraries/libmsgpack/default.nix @@ -1,12 +1,12 @@ { callPackage, fetchFromGitHub, ... } @ args: callPackage ./generic.nix (args // rec { - version = "1.1.0"; + version = "2.0.0"; src = fetchFromGitHub { owner = "msgpack"; repo = "msgpack-c"; rev = "cpp-${version}"; - sha256 = "1hnpnin6gjiilbzfd75871kamfn9grrf53qpbs061sflvz56fddq"; + sha256 = "189m44pwpcpf7g4yhzfla4djqyp2kl54wxmwfaj94gwgj5s370i7"; }; }) diff --git a/pkgs/development/libraries/libtomcrypt/default.nix b/pkgs/development/libraries/libtomcrypt/default.nix index e960f5ef57f3..896c907bbc85 100644 --- a/pkgs/development/libraries/libtomcrypt/default.nix +++ b/pkgs/development/libraries/libtomcrypt/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "libtomcrypt-1.17"; src = fetchurl { - url = "http://libtom.org/files/crypt-1.17.tar.bz2"; + url = "https://github.com/libtom/libtomcrypt/releases/download/1.17/crypt-1.17.tar.bz2"; sha256 = "e33b47d77a495091c8703175a25c8228aff043140b2554c08a3c3cd71f79d116"; }; diff --git a/pkgs/development/libraries/libtommath/default.nix b/pkgs/development/libraries/libtommath/default.nix index d76237e141d3..8e9b79b39d3b 100644 --- a/pkgs/development/libraries/libtommath/default.nix +++ b/pkgs/development/libraries/libtommath/default.nix @@ -1,11 +1,11 @@ {stdenv, fetchurl, libtool}: stdenv.mkDerivation { - name = "libtommath-0.39"; + name = "libtommath-1.0"; src = fetchurl { - url = http://math.libtomcrypt.com/files/ltm-0.39.tar.bz2; - sha256 = "1kjx8rrw62nanzc5qp8fj6r3ybhw8ca60ahkyb70f10aiij49zs2"; + url = https://github.com/libtom/libtommath/releases/download/v1.0/ltm-1.0.tar.xz; + sha256 = "0v5mpd8zqjfs2hr900w1mxifz23xylyjdqyx1i1wl7q9xvwpsflr"; }; buildInputs = [libtool]; diff --git a/pkgs/development/libraries/libui/default.nix b/pkgs/development/libraries/libui/default.nix new file mode 100644 index 000000000000..5fabd1275801 --- /dev/null +++ b/pkgs/development/libraries/libui/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchgit, cmake, pkgconfig, gtk3 }: + +stdenv.mkDerivation rec { + version = "3.1.a"; + name = "libui-${version}"; + src = fetchgit { + url = "https://github.com/andlabs/libui.git"; + rev = "6ebdc96b93273c3cedf81159e7843025caa83058"; + sha256 = "1lpbfa298c61aarlzgp7vghrmxg1274pzxh1j9isv8x758gk6mfn"; + }; + + buildInputs = [ cmake pkgconfig gtk3 ]; + + installPhase = '' + mkdir -p $out + mv ./out/libui.so.0 $out/libui.so.0 + ''; + + meta = with stdenv.lib; { + description = "Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports."; + homepage = https://github.com/andlabs/libui; + platforms = platforms.linux; + license = licenses.mit; + }; +} diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix index 7133634f2eb6..c1037a81c85e 100644 --- a/pkgs/development/libraries/ncurses/default.nix +++ b/pkgs/development/libraries/ncurses/default.nix @@ -1,15 +1,14 @@ { lib, stdenv, fetchurl, pkgconfig +, abiVersion , mouseSupport ? false , unicode ? true , gpm }: let - inherit (stdenv) isDarwin; - abiVersion = if isDarwin then "5" else "6"; - version = if isDarwin then "5.9" else "6.0"; - sha256 = if isDarwin + version = if abiVersion == "5" then "5.9" else "6.0"; + sha256 = if abiVersion == "5" then "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh" else "0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm"; in @@ -21,7 +20,7 @@ stdenv.mkDerivation rec { inherit sha256; }; - patches = [ ./clang.patch ]; + patches = [ ./clang.patch ] ++ lib.optional (abiVersion == "5" && stdenv.cc.isGNU) ./gcc-5.patch; outputs = [ "dev" "out" "man" ]; setOutputFlags = false; # some aren't supported diff --git a/pkgs/development/libraries/ncurses/gcc-5.patch b/pkgs/development/libraries/ncurses/gcc-5.patch new file mode 100644 index 000000000000..2448229b88e1 --- /dev/null +++ b/pkgs/development/libraries/ncurses/gcc-5.patch @@ -0,0 +1,46 @@ +https://bugs.gentoo.org/545114 + +extracted from the upstream change (which had many unrelated commits in one) + +From 97bb4678dc03e753290b39bbff30ba2825df9517 Mon Sep 17 00:00:00 2001 +From: "Thomas E. Dickey" +Date: Sun, 7 Dec 2014 03:10:09 +0000 +Subject: [PATCH] ncurses 5.9 - patch 20141206 + ++ modify MKlib_gen.sh to work around change in development version of + gcc introduced here: + https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html + https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html + (reports by Marcus Shawcroft, Maohui Lei). + +diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh +index d8cc3c9..b91398c 100755 +--- a/ncurses/base/MKlib_gen.sh ++++ b/ncurses/base/MKlib_gen.sh +@@ -474,11 +474,22 @@ sed -n -f $ED1 \ + -e 's/gen_$//' \ + -e 's/ / /g' >>$TMP + ++cat >$ED1 < $ED2 ++cat $ED2 >$TMP ++ + $preprocessor $TMP 2>/dev/null \ +-| sed \ +- -e 's/ / /g' \ +- -e 's/^ //' \ +- -e 's/_Bool/NCURSES_BOOL/g' \ ++| sed -f $ED1 \ + | $AWK -f $AW2 \ + | sed -f $ED3 \ + | sed \ diff --git a/pkgs/development/libraries/qrupdate/default.nix b/pkgs/development/libraries/qrupdate/default.nix index aaa9ab8a61ad..89cf865be258 100644 --- a/pkgs/development/libraries/qrupdate/default.nix +++ b/pkgs/development/libraries/qrupdate/default.nix @@ -28,7 +28,9 @@ stdenv.mkDerivation { buildFlags = [ "lib" "solib" ]; - installTargets = "install"; + installTargets = if stdenv.isDarwin + then ["install-staticlib" "install-shlib"] + else "install"; buildInputs = [ gfortran openblas ]; } diff --git a/pkgs/development/libraries/qt-3/default.nix b/pkgs/development/libraries/qt-3/default.nix index 28271a7a0a08..fbe63fd45f60 100644 --- a/pkgs/development/libraries/qt-3/default.nix +++ b/pkgs/development/libraries/qt-3/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { setupHook = ./setup-hook.sh; src = fetchurl { - url = ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.8.tar.bz2; + url = http://download.qt.io/archive/qt/3/qt-x11-free-3.3.8.tar.bz2; sha256 = "0jd4g3bwkgk2s4flbmgisyihm7cam964gzb3pawjlkhas01zghz8"; }; @@ -41,14 +41,14 @@ stdenv.mkDerivation { -I${xextproto}/include ${if openglSupport then "-dlopen-opengl -L${mesa}/lib -I${mesa}/include - -L${libXmu}/lib -I${libXmu}/include" else ""} + -L${libXmu.out}/lib -I${libXmu.dev}/include" else ""} ${if threadSupport then "-thread" else "-no-thread"} - ${if xrenderSupport then "-xrender -L${libXrender}/lib -I${libXrender}/include" else "-no-xrender"} + ${if xrenderSupport then "-xrender -L${libXrender.out}/lib -I${libXrender.dev}/include" else "-no-xrender"} ${if xrandrSupport then "-xrandr - -L${libXrandr}/lib -I${libXrandr}/include + -L${libXrandr.out}/lib -I${libXrandr.dev}/include -I${randrproto}/include" else "-no-xrandr"} - ${if xineramaSupport then "-xinerama -L${libXinerama}/lib -I${libXinerama}/include" else "-no-xinerama"} - ${if cursorSupport then "-L${libXcursor}/lib -I${libXcursor}/include" else ""} + ${if xineramaSupport then "-xinerama -L${libXinerama.out}/lib -I${libXinerama.dev}/include" else "-no-xinerama"} + ${if cursorSupport then "-L${libXcursor.out}/lib -I${libXcursor.dev}/include" else ""} ${if mysqlSupport then "-qt-sql-mysql -L${mysql.lib}/lib/mysql -I${mysql.lib}/include/mysql" else ""} ${if xftSupport then "-xft -L${libXft.out}/lib -I${libXft.dev}/include diff --git a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh index 3b537430371a..b0d0bec9e3f6 100644 --- a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh +++ b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh @@ -2,11 +2,11 @@ wrapQtProgram() { local prog="$1" shift wrapProgram "$prog" \ - --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ - --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ - --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ - --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \ - --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ "$@" } @@ -16,11 +16,11 @@ makeQtWrapper() { shift shift makeWrapper "$old" "$new" \ - --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ - --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ - --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ - --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \ - --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ "$@" } @@ -29,10 +29,8 @@ _makeQtWrapperSetup() { export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins" export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports" export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml" - export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg" - export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share" - export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg" - export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share" + export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share" + export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg" } prePhases+=(_makeQtWrapperSetup) diff --git a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh index 5401a71bc4c3..696b4ea8dad3 100644 --- a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh +++ b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh @@ -1,50 +1,16 @@ -if [[ -z "$QMAKE" ]]; then +qmakeConfigurePhase() { + runHook preConfigure -_qtLinkDependencyDir() { - @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2" - if [ -n "$NIX_QT_SUBMODULE" ]; then - find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs" - fi + qmake PREFIX=$out $qmakeFlags + + runHook postConfigure } -_qtLinkModule() { - if [ -d "$1/mkspecs" ]; then - # $1 is a Qt module - _qtLinkDependencyDir "$1" mkspecs +if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then + configurePhase=qmakeConfigurePhase +fi - for dir in bin include lib share; do - if [ -d "$1/$dir" ]; then - _qtLinkDependencyDir "$1" "$dir" - fi - done - fi -} - -_qtRmModules() { - cat "$out/nix-support/qt-inputs" | while read file; do - if [ -h "$out/$file" ]; then - rm "$out/$file" - fi - done - - cat "$out/nix-support/qt-inputs" | while read file; do - if [ -d "$out/$file" ]; then - rmdir --ignore-fail-on-non-empty -p "$out/$file" - fi - done - - rm "$out/nix-support/qt-inputs" -} - -_qtRmQmake() { - rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf" -} - -_qtSetQmakePath() { - export PATH="$qtOut/bin${PATH:+:}$PATH" -} - -_qtMultioutModuleDevs() { +_qtModuleMultioutDevsPre() { # We cannot simply set these paths in configureFlags because libQtCore retains # references to the paths it was built with. moveToOutput "bin" "${!outputDev}" @@ -53,12 +19,14 @@ _qtMultioutModuleDevs() { # The destination directory must exist or moveToOutput will do nothing mkdir -p "${!outputDev}/share" moveToOutput "share/doc" "${!outputDev}" +} +_qtModuleMultioutDevsPost() { # Move libtool archives and qmake project files to $dev/lib if [ "z${!outputLib}" != "z${!outputDev}" ]; then pushd "${!outputLib}" if [ -d "lib" ]; then - find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' -print0 \) | \ + find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | \ while read -r -d $'\0' file; do mkdir -p "${!outputDev}/$(dirname "$file")" mv "${!outputLib}/$file" "${!outputDev}/$file" @@ -68,53 +36,7 @@ _qtMultioutModuleDevs() { fi } -_qtRmQtOut() { - rm -fr "$qtOut" -} - -qmakeConfigurePhase() { - runHook preConfigure - - qmake PREFIX=$out $qmakeFlags - - runHook postConfigure -} - -qtOut="" -if [[ -z "$NIX_QT_SUBMODULE" ]]; then - qtOut=`mktemp -d` -else - qtOut=$out -fi - -mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share" - -cp "@qt_dev@/bin/qmake" "$qtOut/bin" -cat >"$qtOut/bin/qt.conf" <> "$NIX_QT5_TMP/nix-support/qt-inputs" + done + + postHooks+=(_qtSetCMakePrefix) + + cp "@dev@/bin/qmake" "$NIX_QT5_TMP/bin" + echo "bin/qmake" >> "$NIX_QT5_TMP/nix-support/qt-inputs" + + cat >"$NIX_QT5_TMP/bin/qt.conf" <> "$NIX_QT5_TMP/nix-support/qt-inputs" + + export QMAKE="$NIX_QT5_TMP/bin/qmake" + + # Set PATH to find qmake first in a preConfigure hook + # It must run after all the envHooks! + preConfigureHooks+=(_qtSetQmakePath) +fi + +qt5LinkModuleDir() { + if [ -d "$1/$2" ]; then + @lndir@/bin/lndir -silent "$1/$2" "$NIX_QT5_TMP/$2" + find "$1/$2" -printf "$2/%P\n" >> "$NIX_QT5_TMP/nix-support/qt-inputs" + fi +} + +NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@" +NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@" + +_qtLinkAllModules() { + IFS=: read -a modules <<< $NIX_QT5_MODULES + for module in ${modules[@]}; do + qt5LinkModuleDir "$module" "lib" + done + + IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV + for module in ${modules[@]}; do + qt5LinkModuleDir "$module" "bin" + qt5LinkModuleDir "$module" "include" + qt5LinkModuleDir "$module" "lib" + qt5LinkModuleDir "$module" "mkspecs" + qt5LinkModuleDir "$module" "share" + done +} + +preConfigureHooks+=(_qtLinkAllModules) + +_qtFixCMakePaths() { + find "${!outputLib}" -name "*.cmake" | while read file; do + substituteInPlace "$file" \ + --subst-var-by NIX_OUT "${!outputLib}" \ + --subst-var-by NIX_DEV "${!outputDev}" + done +} + +if [ -n "$NIX_QT_SUBMODULE" ]; then + postInstallHooks+=(_qtFixCMakePaths) +fi diff --git a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix index 0e2ad8bafb30..bd11d4816ff3 100644 --- a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix +++ b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix @@ -4,7 +4,6 @@ qtSubmodule { name = "qtlocation"; qtInputs = [ qtbase qtmultimedia ]; postFixup = '' - fixQtModuleCMakeConfig "Location" fixQtModuleCMakeConfig "Positioning" ''; } diff --git a/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh index 3b537430371a..b0d0bec9e3f6 100644 --- a/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh +++ b/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh @@ -2,11 +2,11 @@ wrapQtProgram() { local prog="$1" shift wrapProgram "$prog" \ - --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ - --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ - --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ - --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \ - --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ "$@" } @@ -16,11 +16,11 @@ makeQtWrapper() { shift shift makeWrapper "$old" "$new" \ - --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \ - --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \ - --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \ - --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \ - --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \ + --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \ + --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \ + --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \ + --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \ + --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \ "$@" } @@ -29,10 +29,8 @@ _makeQtWrapperSetup() { export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins" export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports" export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml" - export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg" - export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share" - export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg" - export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share" + export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share" + export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg" } prePhases+=(_makeQtWrapperSetup) diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh index 8d1a453787fb..6d8989281eba 100644 --- a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh +++ b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh @@ -28,7 +28,6 @@ _qtPropagate() { for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do if [ -d "$1/$dir" ]; then propagateOnce propagatedBuildInputs "$1" - propagateOnce propagatedUserEnvPkgs "$1" break fi done @@ -43,9 +42,6 @@ _qtPropagateNative() { for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do if [ -d "$1/$dir" ]; then propagateOnce propagatedNativeBuildInputs "$1" - if [ -z "$crossConfig" ]; then - propagateOnce propagatedUserEnvPkgs "$1" - fi break fi done diff --git a/pkgs/development/libraries/tk/generic.nix b/pkgs/development/libraries/tk/generic.nix index c3bab0b2f868..934bfa6a9e94 100644 --- a/pkgs/development/libraries/tk/generic.nix +++ b/pkgs/development/libraries/tk/generic.nix @@ -17,9 +17,11 @@ stdenv.mkDerivation { "--with-tcl=${tcl}/lib" ]; - buildInputs = [ pkgconfig tcl libXft ] + buildInputs = [ pkgconfig ] ++ stdenv.lib.optional stdenv.isDarwin fontconfig; + propagatedBuildInputs = [ tcl libXft ]; + NIX_CFLAGS_LINK = if stdenv.isDarwin then "-lfontconfig" else null; inherit tcl; diff --git a/pkgs/development/libraries/unittest-cpp/default.nix b/pkgs/development/libraries/unittest-cpp/default.nix new file mode 100644 index 000000000000..e0ce2ab224e2 --- /dev/null +++ b/pkgs/development/libraries/unittest-cpp/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchFromGitHub, cmake}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "unittest-cpp-${version}"; + version = "1.6.1"; + + src = fetchFromGitHub { + owner = "unittest-cpp"; + repo = "unittest-cpp"; + rev = "v${version}"; + sha256 = "1sva2bm90z4vmwwvp0af82f7p4sdq5j2jjqzhs2ppihdkggn62d1"; + }; + + buildInputs = [cmake]; + + doCheck = false; + + meta = { + homepage = "https://github.com/unittest-cpp/unittest-cpp"; + description = "Lightweight unit testing framework for C++"; + license = licenses.mit; + maintainers = [maintainers.tohl]; + }; +} diff --git a/pkgs/development/libraries/webkitgtk/2.4.nix b/pkgs/development/libraries/webkitgtk/2.4.nix index cc7644f742d5..e6e61e0482cb 100644 --- a/pkgs/development/libraries/webkitgtk/2.4.nix +++ b/pkgs/development/libraries/webkitgtk/2.4.nix @@ -15,7 +15,7 @@ assert stdenv.isDarwin -> !enableCredentialStorage; with stdenv.lib; stdenv.mkDerivation rec { name = "webkitgtk-${version}"; - version = "2.4.9"; + version = "2.4.11"; meta = with stdenv.lib; { description = "Web content rendering engine, GTK+ port"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "http://webkitgtk.org/releases/${name}.tar.xz"; - sha256 = "0r651ar3p0f8zwl7764kyimxk5hy88cwy116pv8cl5l8hbkjkpxg"; + sha256 = "1xsvnvyvlywwyf6m9ainpsg87jkxjmd37q6zgz9cxb7v3c2ym2jq"; }; CC = "cc"; @@ -46,6 +46,7 @@ stdenv.mkDerivation rec { configureFlags = with stdenv.lib; [ "--disable-geolocation" + "--disable-jit" (optionalString enableIntrospection "--enable-introspection") ] ++ optional withGtk2 [ "--with-gtk=2.0" diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix index c7eeb431bb6f..92b3dc3c71ca 100644 --- a/pkgs/development/r-modules/default.nix +++ b/pkgs/development/r-modules/default.nix @@ -1137,18 +1137,7 @@ let "choroplethr" # depends on broken package acs "acs" # broken build "spray" # depends on broken package partitions - "simmr" # depends on broken package rjags - "morse" # depends on broken package rjags - "gemtc" # depends on broken package rjags - "EasyMARK" # depends on broken package rjags - "PVAClone" # depends on broken package rjags - "sharx" # depends on broken package rjags - "dcmle" # depends on broken package rjags - "dclone" # depends on broken package rjags - "CNVrd2" # depends on broken package rjags - "bayescount" # depends on broken package rjags - "BANOVA" # depends on broken package rjags - "rjags" # broken build + "CNVrd2" # broken build "proteoQC" # depends on broken package rTANDEM "PGA" # depends on broken package rTANDEM "MBESS" # depends on broken package OpenMx @@ -1211,13 +1200,11 @@ let "ARTool" # depends on broken package nlopt "AssetPricing" # broken build "AtelieR" # broken build - "auRoc" # depends on broken package rjags + "auRoc" # depends on broken package MBESS "AutoModel" # depends on broken package car "bamdit" # broken build - "BANOVA" # broken build "bapred" # depends on broken package lme4 "bartMachine" # depends on broken package nlopt - "bayescount" # broken build "bayesDem" # depends on broken package nlopt "bayesLife" # depends on broken package nlopt "BayesMed" # broken build @@ -1283,7 +1270,6 @@ let "covmat" # depends on broken package VIM "cplexAPI" # build is broken "cquad" # depends on broken package car - "crmPack" # depends on broken package rjags "CrypticIBDcheck" # depends on broken package nlopt "ctsem" # depends on broken package OpenMx "cudaBayesreg" # build is broken @@ -1293,7 +1279,7 @@ let "datafsm" # depends on broken package caret "dbConnect" # broken build "DBKGrad" # depends on broken package rpanel - "dcmle" # broken build + #"dcmle" # broken build "ddst" # broken build "Deducer" # depends on broken package nlopt "DeducerExtras" # depends on broken package nlopt @@ -1318,7 +1304,6 @@ let "drsmooth" # depends on broken package nlopt "dynlm" # depends on broken package nlopt "easyanova" # depends on broken package nlopt - "EasyMARK" # broken build "ecd" # depends on broken package polynom "edge" # depends on broken package nlopt "eeptools" # depends on broken package nlopt @@ -1370,7 +1355,6 @@ let "gcmr" # depends on broken package nlopt "GDAtools" # depends on broken package nlopt "gdtools" # broken build - "gemtc" # broken build "GENE_E" # depends on broken package rhdf5 "GENESIS" # broken build "genridge" # depends on broken package nlopt @@ -1499,7 +1483,6 @@ let "mlVAR" # depends on broken package nlopt "MM" # broken build "mongolite" # build is broken - "morse" # broken build "mosaic" # depends on broken package nlopt "mpoly" # broken build "mRMRe" # broken build @@ -1577,7 +1560,6 @@ let "PSAboot" # depends on broken package nlopt "ptw" # depends on broken nloptr "PurBayes" # broken build - "PVAClone" # broken build "pvca" # depends on broken package nlopt "PythonInR" # broken build "QFRM" # broken build @@ -1664,7 +1646,6 @@ let "Rgnuplot" # broken build "rhdf5" # build is broken "rjade" # depends on broken package V8 - "rjags" # broken build "rJPSGCS" # build is broken "rLindo" # build is broken "RLRsim" # depends on broken package lme4 @@ -1724,10 +1705,8 @@ let "seqHMM" # depends on broken package nloptr "seqTools" # build is broken "SharpeR" # broken build - "sharx" # broken build "shinyTANDEM" # depends on broken package rTANDEM "SIBER" # broken build - "simmr" # broken build "simPop" # depends on broken package VIM "simr" # depends on broken package lme4 "SJava" # broken build diff --git a/pkgs/development/tools/analysis/cppcheck/default.nix b/pkgs/development/tools/analysis/cppcheck/default.nix index 778aaa90cbe9..31d62bdae19b 100644 --- a/pkgs/development/tools/analysis/cppcheck/default.nix +++ b/pkgs/development/tools/analysis/cppcheck/default.nix @@ -1,15 +1,13 @@ { stdenv, fetchurl, libxslt, docbook_xsl, docbook_xml_dtd_45 }: -let - pname = "cppcheck"; -in stdenv.mkDerivation rec { + pname = "cppcheck"; + version = "1.74"; name = "${pname}-${version}"; - version = "1.73"; src = fetchurl { url = "mirror://sourceforge/${pname}/${name}.tar.bz2"; - sha256 = "0l7yslf311h3kidi91q4zhqj3f3vsjp1gb2z50y20423fda87xin"; + sha256 = "0m62byiprabm1m3mc4r2w54p7qyhgi8msipnpm66ychr8rz2yny0"; }; nativeBuildInputs = [ libxslt docbook_xsl docbook_xml_dtd_45 ]; @@ -27,8 +25,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A static analysis tool for C/C++ code"; longDescription = '' - Check C/C++ code for memory leaks, mismatching - allocation-deallocation, buffer overruns and more. + Check C/C++ code for memory leaks, mismatching allocation-deallocation, + buffer overruns and more. ''; homepage = http://cppcheck.sourceforge.net/; license = licenses.gpl3Plus; diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix index cbc2b76d8acc..01d1c97ba968 100644 --- a/pkgs/development/tools/continuous-integration/jenkins/default.nix +++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix @@ -2,16 +2,16 @@ stdenv.mkDerivation rec { name = "jenkins-${version}"; - version = "2.3"; + version = "2.13"; src = fetchurl { url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war"; - sha256 = "0x59dbvh6y25ki5jy51djbfbhf8g2j3yd9f3n66f7bkdfw8p78g1"; + sha256 = "0rb3spml2c7cd34zjjc5mwsdcnwmcbcdc784nl8cczayiwz8nq3p"; }; buildCommand = '' - mkdir -p "$out/lib" - cp "$src" "$out/lib/jenkins.war" + mkdir -p "$out/webapps" + cp "$src" "$out/webapps/jenkins.war" ''; meta = with stdenv.lib; { @@ -19,6 +19,6 @@ stdenv.mkDerivation rec { homepage = http://jenkins-ci.org; license = licenses.mit; platforms = platforms.all; - maintainers = [ maintainers.coconnor ]; + maintainers = with maintainers; [ coconnor fpletz ]; }; } diff --git a/pkgs/development/tools/doctl/default.nix b/pkgs/development/tools/doctl/default.nix new file mode 100644 index 000000000000..4a7d1bf87e31 --- /dev/null +++ b/pkgs/development/tools/doctl/default.nix @@ -0,0 +1,23 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "doctl-${version}"; + version = "1.3.1"; + rev = "a57555c195d06bc7aa5037af77fde0665ad1231f"; + goPackagePath = "github.com/digitalocean/doctl"; + + src = fetchFromGitHub { + owner = "digitalocean"; + repo = "doctl"; + rev = "${rev}"; + sha256 = "03z652fw0a628gv666w8vpi05a4sdilvs1j5scjhcbi82zsbkvma"; + }; + + meta = { + description = "A command line tool for DigitalOcean services"; + homepage = "https://github.com/digitalocean/doctl"; + license = stdenv.lib.licenses.asl20; + platforms = stdenv.lib.platforms.all; + maintainers = [ stdenv.lib.maintainers.siddharthist ]; + }; +} diff --git a/pkgs/development/tools/mypy-lang/default.nix b/pkgs/development/tools/mypy-lang/default.nix index d5baf9949449..ebce2b86c1f7 100644 --- a/pkgs/development/tools/mypy-lang/default.nix +++ b/pkgs/development/tools/mypy-lang/default.nix @@ -2,14 +2,14 @@ python35Packages.buildPythonApplication rec { name = "mypy-lang-${version}"; - version = "0.4.2"; + version = "0.4.3"; # Tests not included in pip package. doCheck = false; src = fetchurl { url = "mirror://pypi/m/mypy-lang/${name}.tar.gz"; - sha256 = "12vwgzbpv0n403dvzas5ckw0f62slqk5j3024y65hi9n95r34rws"; + sha256 = "11d8195xg8hksyh2qapbv66jvjgfpjwkc61nwljcfq9si144f2nb"; }; propagatedBuildInputs = with python35Packages; [ lxml ]; diff --git a/pkgs/development/tools/scalafmt/default.nix b/pkgs/development/tools/scalafmt/default.nix index 0a4855bdcb8d..e434f381067a 100644 --- a/pkgs/development/tools/scalafmt/default.nix +++ b/pkgs/development/tools/scalafmt/default.nix @@ -1,13 +1,13 @@ { stdenv, fetchurl, unzip, jre }: stdenv.mkDerivation rec { - version = "0.2.5"; + version = "0.2.11"; baseName = "scalafmt"; name = "${baseName}-${version}"; src = fetchurl { url = "https://github.com/olafurpg/scalafmt/releases/download/v${version}/${baseName}.tar.gz"; - sha256 = "07l95xdwgdbdfa91pg1sds82aw3c60gxzdcvdhhhk6a7zwrl73cp"; + sha256 = "044n00mhrdxij1kc8wplvni7pf8lnninxrsm9v41gicbk73cm2q8"; }; unpackPhase = "tar xvzf $src"; diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix index c970b319a94d..6dfbb6978db7 100644 --- a/pkgs/development/tools/vagrant/default.nix +++ b/pkgs/development/tools/vagrant/default.nix @@ -4,7 +4,7 @@ assert stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux"; let - version = "1.8.1"; + version = "1.8.4"; rake = buildRubyGem { inherit ruby; gemName = "rake"; @@ -20,12 +20,12 @@ stdenv.mkDerivation rec { if stdenv.system == "x86_64-linux" then fetchurl { url = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_x86_64.deb"; - sha256 = "0gb999ql4kfxd9473cx3xn6a11094dm4iyrx1dzd9v2sygh1l3pd"; + sha256 = "fd38d8e00e494a617201facb42fc2cac627e5021db15e91c2a041eac6a2d8208"; } else fetchurl { url = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_i686.deb"; - sha256 = "1nzg6i9i270xgaih381q096lb23rwxkif4ba9j62y3zjmj6az4xf"; + sha256 = "555351717cacaa8660821df8988cc40a39923b06b698fca6bb90621008aab06f"; }; meta = with stdenv.lib; { @@ -97,12 +97,12 @@ stdenv.mkDerivation rec { preFixup = '' # 'hide' the template file from shebang-patching - chmod -x $out/opt/vagrant/embedded/gems/gems/bundler-1.10.6/lib/bundler/templates/Executable + chmod -x $out/opt/vagrant/embedded/gems/gems/bundler-1.12.5/lib/bundler/templates/Executable chmod -x $out/opt/vagrant/embedded/gems/gems/vagrant-${version}/plugins/provisioners/salt/bootstrap-salt.sh ''; postFixup = '' - chmod +x $out/opt/vagrant/embedded/gems/gems/bundler-1.10.6/lib/bundler/templates/Executable + chmod +x $out/opt/vagrant/embedded/gems/gems/bundler-1.12.5/lib/bundler/templates/Executable chmod +x $out/opt/vagrant/embedded/gems/gems/vagrant-${version}/plugins/provisioners/salt/bootstrap-salt.sh ''; } diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix index cae7648e6e93..debc571ea41e 100644 --- a/pkgs/development/web/nodejs/nodejs.nix +++ b/pkgs/development/web/nodejs/nodejs.nix @@ -52,7 +52,7 @@ in stdenv.mkDerivation { description = "Event-driven I/O framework for the V8 JavaScript engine"; homepage = http://nodejs.org; license = licenses.mit; - maintainers = [ maintainers.goibhniu maintainers.havvy maintainers.gilligan ]; + maintainers = [ maintainers.goibhniu maintainers.havvy maintainers.gilligan maintainers.cko ]; platforms = platforms.linux ++ platforms.darwin; }; } diff --git a/pkgs/development/web/nodejs/v5.nix b/pkgs/development/web/nodejs/v5.nix index 12d0dca45038..2398ae4e7392 100644 --- a/pkgs/development/web/nodejs/v5.nix +++ b/pkgs/development/web/nodejs/v5.nix @@ -4,9 +4,9 @@ }@args: import ./nodejs.nix (args // rec { - version = "5.11.1"; + version = "5.12.0"; src = fetchurl { url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.xz"; - sha256 = "07v60mhswj77m7516zakj3p1py7ixa5jbgj0m7zlr9vygrrc66zi"; + sha256 = "4f926373f11f2a25156eee1804ec012eb912c42e5d34fc2909889da22efdadfe"; }; }) diff --git a/pkgs/games/commandergenius/default.nix b/pkgs/games/commandergenius/default.nix new file mode 100644 index 000000000000..007167dc696c --- /dev/null +++ b/pkgs/games/commandergenius/default.nix @@ -0,0 +1,54 @@ +{ lib, stdenv, fetchFromGitHub, SDL2, SDL2_image, pkgconfig +, libvorbis, libogg, mesa, boost, curl, zlib, cmake }: + + +stdenv.mkDerivation rec { + name = "commandergenius-${version}"; + version = "194beta"; + + src = fetchFromGitHub { + owner = "gerstrong"; + repo = "Commander-Genius"; + rev = "v${version}"; + sha256 = "0qxqzlmadxklrhxilbqj7y94fmbv0byj6vgpl59lb77lgs4y4x47"; + }; + + buildInputs = [ SDL2 SDL2_image pkgconfig libvorbis libogg mesa boost curl zlib cmake ]; + + patchPhase = '' + cat >> lib/GsKit/CMakeLists.txt <" + ) + +- if( APPLE ) ++ #if( APPLE ) + # In OS X El Capitan, Apple introduced System Integrity Protection. + # Amongst other things, this introduces features to the dynamic loader + # (dyld) which cause it to "sanitise" (and complain about) embedded +@@ -354,15 +354,15 @@ + # simply strip the rpath entry from the dylib. There's no way any + # @executable_path that python might have could be in any way useful to + # libclang.dylib, so this seems perfectly safe. +- get_filename_component( LIBCLANG_TAIL ${LIBCLANG_TARGET} NAME ) +- add_custom_command( TARGET ${PROJECT_NAME} +- POST_BUILD +- COMMAND install_name_tool +- "-delete_rpath" +- "@executable_path/../lib" +- "$/${LIBCLANG_TAIL}" +- ) +- endif() ++ # get_filename_component( LIBCLANG_TAIL ${LIBCLANG_TARGET} NAME ) ++ #add_custom_command( TARGET ${PROJECT_NAME} ++ # POST_BUILD ++ # COMMAND install_name_tool ++ # "-delete_rpath" ++ # "@executable_path/../lib" ++ # "$/${LIBCLANG_TAIL}" ++ # ) ++ # endif() + endif() + endif() + diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names index b2a2a542bf5e..bc040271cd96 100644 --- a/pkgs/misc/vim-plugins/vim-plugin-names +++ b/pkgs/misc/vim-plugins/vim-plugin-names @@ -21,6 +21,7 @@ "ghcmod" "github:Chiel92/vim-autoformat" "github:LnL7/vim-nix" +"github:sbdchd/neoformat" "github:Shougo/deoplete.nvim" "github:ajh17/Spacegray.vim" "github:alvan/vim-closetag" @@ -32,6 +33,7 @@ "github:ctrlpvim/ctrlp.vim" "github:digitaltoad/vim-jade" "github:eagletmt/neco-ghc" +"github:elmcast/elm-vim" "github:embear/vim-localvimrc" "github:enomsg/vim-haskellConcealPlus" "github:esneider/YUNOcommit.vim" @@ -73,6 +75,7 @@ "github:racer-rust/vim-racer" "github:raichoo/purescript-vim" "github:rust-lang/rust.vim" +"github:sheerun/vim-polyglot" "github:shougo/neocomplete.vim" "github:shougo/neosnippet-snippets" "github:shougo/neosnippet.vim" diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme index eb7f6bedf497..4b81be5205b8 100644 --- a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme +++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme @@ -4,8 +4,11 @@ llvmPackages.llvm ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa; - propagatedBuildInputs = [ - rustracerd + propagatedBuildInputs = stdenv.lib.optional (!stdenv.isDarwin) rustracerd; + + patches = [ + ./patches/youcompleteme/1-top-cmake.patch + ./patches/youcompleteme/2-ycm-cmake.patch ]; buildPhase = '' diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix index ec374d9b1d31..182b8c01c391 100644 --- a/pkgs/os-specific/linux/busybox/default.nix +++ b/pkgs/os-specific/linux/busybox/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, musl +{ stdenv, lib, fetchurl, glibc, musl , enableStatic ? false , enableMinimal ? false , useMusl ? false @@ -50,7 +50,7 @@ stdenv.mkDerivation rec { CONFIG_LFS y - ${stdenv.lib.optionalString enableStatic '' + ${lib.optionalString enableStatic '' CONFIG_STATIC y ''} @@ -66,10 +66,12 @@ stdenv.mkDerivation rec { EOF make oldconfig - '' + stdenv.lib.optionalString useMusl '' + '' + lib.optionalString useMusl '' makeFlagsArray+=("CC=gcc -isystem ${musl}/include -B${musl}/lib -L${musl}/lib") ''; + buildInputs = lib.optionals (enableStatic && !useMusl) [ glibc glibc.static ]; + crossAttrs = { extraCrossConfig = '' CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cross.config}-" diff --git a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix index 992d42e2e126..8e0f807e08e9 100644 --- a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix +++ b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { name = "firmware-linux-nonfree-${version}"; - version = "2016-05-18"; + version = "2016-07-12"; # This repo is built by merging the latest versions of # http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/ @@ -14,8 +14,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "wkennington"; repo = "linux-firmware"; - rev = "19495832c6899bd811874439376d513290773c31"; - sha256 = "1700a24sfw6xa3q3r8aa5wfhydgix83m57plpfirdmc9qr4isrr0"; + rev = "cccb6a0da98372bd66787710249727ad6b0aaf72"; + sha256 = "1c7h8i37nbyy37zqhybxd3y6aqabfv4nrdkjg789w67mdnn6hka0"; }; preInstall = '' @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { homepage = http://packages.debian.org/sid/firmware-linux-nonfree; license = licenses.unfreeRedistributableFirmware; platforms = platforms.linux; - maintainers = with maintainers; [ wkennington ]; + maintainers = with maintainers; [ wkennington fpletz ]; priority = 6; # give precedence to kernel firmware }; diff --git a/pkgs/os-specific/linux/fnotifystat/default.nix b/pkgs/os-specific/linux/fnotifystat/default.nix new file mode 100644 index 000000000000..5708ed7c4df2 --- /dev/null +++ b/pkgs/os-specific/linux/fnotifystat/default.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, fetchurl }: + +stdenv.mkDerivation rec { + name = "fnotifystat-${version}"; + version = "0.01.14"; + src = fetchurl { + url = "http://kernel.ubuntu.com/~cking/tarballs/fnotifystat/fnotifystat-${version}.tar.gz"; + sha256 = "1cc3w94v8b4nfpkgr33gfzxpwaf43brqyc0fla9p70gk3hxjqzi5"; + }; + installFlags = [ "DESTDIR=$(out)" ]; + postInstall = '' + mv $out/usr/* $out + rm -r $out/usr + ''; + meta = with lib; { + description = "File activity monitoring tool"; + homepage = http://kernel.ubuntu.com/~cking/fnotifystat/; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ womfoo ]; + }; +} diff --git a/pkgs/os-specific/linux/forkstat/default.nix b/pkgs/os-specific/linux/forkstat/default.nix new file mode 100644 index 000000000000..3a253003e8e1 --- /dev/null +++ b/pkgs/os-specific/linux/forkstat/default.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, fetchurl }: + +stdenv.mkDerivation rec { + name = "forkstat-${version}"; + version = "0.01.13"; + src = fetchurl { + url = "http://kernel.ubuntu.com/~cking/tarballs/forkstat/forkstat-${version}.tar.gz"; + sha256 = "12dmqpv0q3x166sya93rhcj7vs4868x7y7lwfwv9l54hhirpamhq"; + }; + installFlags = [ "DESTDIR=$(out)" ]; + postInstall = '' + mv $out/usr/* $out + rm -r $out/usr + ''; + meta = with lib; { + description = "Process fork/exec/exit monitoring tool"; + homepage = http://kernel.ubuntu.com/~cking/forkstat/; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ womfoo ]; + }; +} diff --git a/pkgs/os-specific/linux/lightum/default.nix b/pkgs/os-specific/linux/lightum/default.nix index 0ef447ed9243..3eaf43631954 100644 --- a/pkgs/os-specific/linux/lightum/default.nix +++ b/pkgs/os-specific/linux/lightum/default.nix @@ -18,6 +18,11 @@ stdenv.mkDerivation { systemd ]; + patchPhase = '' + substituteInPlace Makefile \ + --replace "libsystemd-login" "libsystemd" + ''; + installPhase = '' make install prefix=$out bindir=$out/bin docdir=$out/share/doc \ mandir=$out/share/man INSTALL="install -c" INSTALLDATA="install -c -m 644" diff --git a/pkgs/os-specific/linux/lxc/default.nix b/pkgs/os-specific/linux/lxc/default.nix index eda1863ec97b..f15f72ca5bc6 100644 --- a/pkgs/os-specific/linux/lxc/default.nix +++ b/pkgs/os-specific/linux/lxc/default.nix @@ -12,11 +12,11 @@ in with stdenv.lib; stdenv.mkDerivation rec { name = "lxc-${version}"; - version = "2.0.1"; + version = "2.0.3"; src = fetchurl { url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz"; - sha256 = "0l4fs6ckvip5akfa0vbjfk34ddvcv0c84mmpj9yrcfl67qwn31z9"; + sha256 = "1mp83r1v9bcxjl7a441sm6plipj8aglhnmkxczp3jinlrnh41pw2"; }; nativeBuildInputs = [ diff --git a/pkgs/os-specific/linux/powerstat/default.nix b/pkgs/os-specific/linux/powerstat/default.nix new file mode 100644 index 000000000000..9604a67ddd9a --- /dev/null +++ b/pkgs/os-specific/linux/powerstat/default.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, fetchurl }: + +stdenv.mkDerivation rec { + name = "powerstat-${version}"; + version = "0.02.10"; + src = fetchurl { + url = "http://kernel.ubuntu.com/~cking/tarballs/powerstat/powerstat-${version}.tar.gz"; + sha256 = "11n2k20h27j7m8j0l524w23xlkjhapsb3ml1qpx1si7gf0pkglcl"; + }; + installFlags = [ "DESTDIR=$(out)" ]; + postInstall = '' + mv $out/usr/* $out + rm -r $out/usr + ''; + meta = with lib; { + description = "Laptop power measuring tool"; + homepage = http://kernel.ubuntu.com/~cking/powerstat/; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ womfoo ]; + }; +} diff --git a/pkgs/os-specific/linux/smemstat/default.nix b/pkgs/os-specific/linux/smemstat/default.nix new file mode 100644 index 000000000000..a38c819bc6ff --- /dev/null +++ b/pkgs/os-specific/linux/smemstat/default.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, fetchurl }: + +stdenv.mkDerivation rec { + name = "smemstat-${version}"; + version = "0.01.14"; + src = fetchurl { + url = "http://kernel.ubuntu.com/~cking/tarballs/smemstat/smemstat-${version}.tar.gz"; + sha256 = "0qkpbg0n40d8m9jzf3ylpdp65zzs344zbjn8khha4plbwg00ijrw"; + }; + installFlags = [ "DESTDIR=$(out)" ]; + postInstall = '' + mv $out/usr/* $out + rm -r $out/usr + ''; + meta = with lib; { + description = "Memory usage monitoring tool"; + homepage = http://kernel.ubuntu.com/~cking/smemstat/; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ womfoo ]; + }; +} diff --git a/pkgs/servers/emby/default.nix b/pkgs/servers/emby/default.nix index b9cc038479d8..1d9d9772706c 100644 --- a/pkgs/servers/emby/default.nix +++ b/pkgs/servers/emby/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "emby-${version}"; - version = "3.0.5985"; + version = "3.0.5986"; src = fetchurl { url = "https://github.com/MediaBrowser/Emby/archive/${version}.tar.gz"; - sha256 = "16p8qr9pf6ww6xdfbsqamnpk70i4dadz30lnvliyxaaslggjbh4b"; + sha256 = "0lccyvwk9pm9vn3fg4pa9956f4xn6fcqzlyj8rkxgwf7avzibxix"; }; propagatedBuildInputs = with pkgs; [ diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix index 782d7001deec..2c76dfc8e31d 100644 --- a/pkgs/servers/etcd/default.nix +++ b/pkgs/servers/etcd/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "etcd-${version}"; - version = "2.3.0"; + version = "2.3.7"; rev = "v${version}"; goPackagePath = "github.com/coreos/etcd"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "coreos"; repo = "etcd"; - sha256 = "1cchlhsdbbqal145cvdiq7rzqqi131iq7z0r2hmzwx414k04wyn7"; + sha256 = "07rdnhcpnvnkxj5pqacxz669rzn5vw2i1zmf6dd4nv7wpfscdw9f"; }; goDeps = ./deps.json; diff --git a/pkgs/servers/http/nginx/default.nix b/pkgs/servers/http/nginx/generic.nix similarity index 94% rename from pkgs/servers/http/nginx/default.nix rename to pkgs/servers/http/nginx/generic.nix index bf8abd2c0273..b1d70907e28c 100644 --- a/pkgs/servers/http/nginx/default.nix +++ b/pkgs/servers/http/nginx/generic.nix @@ -3,17 +3,17 @@ , withStream ? false , modules ? [] , hardening ? true +, version, sha256, ... }: with stdenv.lib; -stdenv.mkDerivation rec { +stdenv.mkDerivation { name = "nginx-${version}"; - version = "1.10.1"; src = fetchurl { url = "http://nginx.org/download/nginx-${version}.tar.gz"; - sha256 = "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz"; + inherit sha256; }; diff --git a/pkgs/servers/http/nginx/mainline.nix b/pkgs/servers/http/nginx/mainline.nix new file mode 100644 index 000000000000..6e4c49abc5ba --- /dev/null +++ b/pkgs/servers/http/nginx/mainline.nix @@ -0,0 +1,6 @@ +{ callPackage, ... }@args: + +callPackage ./generic.nix (args // { + version = "1.11.2"; + sha256 = "02khwad28ar2jjdfssysx262bgwgirm9967gnfhw9ga7wvipncm0"; +}) diff --git a/pkgs/servers/http/nginx/unstable.upstream b/pkgs/servers/http/nginx/mainline.upstream similarity index 100% rename from pkgs/servers/http/nginx/unstable.upstream rename to pkgs/servers/http/nginx/mainline.upstream diff --git a/pkgs/servers/http/nginx/stable.nix b/pkgs/servers/http/nginx/stable.nix new file mode 100644 index 000000000000..e677b181bb5d --- /dev/null +++ b/pkgs/servers/http/nginx/stable.nix @@ -0,0 +1,6 @@ +{ callPackage, ... } @ args: + +callPackage ./generic.nix (args // { + version = "1.10.1"; + sha256 = "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz"; +}) diff --git a/pkgs/servers/http/nginx/default.upstream b/pkgs/servers/http/nginx/stable.upstream similarity index 100% rename from pkgs/servers/http/nginx/default.upstream rename to pkgs/servers/http/nginx/stable.upstream diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix index 28bf83a247fc..884785699a69 100644 --- a/pkgs/servers/monitoring/grafana/default.nix +++ b/pkgs/servers/monitoring/grafana/default.nix @@ -1,7 +1,8 @@ -{ lib, buildGoPackage, fetchurl, fetchFromGitHub }: +{ lib, buildGoPackage, fetchurl, fetchFromGitHub, phantomjs2 }: buildGoPackage rec { - version = "3.0.1"; + version = "3.1.0"; + ts = "1468321182"; name = "grafana-v${version}"; goPackagePath = "github.com/grafana/grafana"; @@ -9,19 +10,20 @@ buildGoPackage rec { rev = "v${version}"; owner = "grafana"; repo = "grafana"; - sha256 = "1zykgf8xq7m040d4yljcbz23gh8ppaqnxj50ncj1cjyi5k88i3i9"; + sha256 = "1p3qp3p4wsb7m2lvdcrc1wz5mxqwqsj5xfqp28hkbfdqh3lblh42"; }; srcStatic = fetchurl { - url = "https://grafanarel.s3.amazonaws.com/builds/grafana-${version}-.linux-x64.tar.gz"; - sha256 = "14wq2cbf4djnwbbyfbhnwmwqpfh5g4yp1dckg5zzf2109ymkjrqd"; + url = "https://grafanarel.s3.amazonaws.com/builds/grafana-${version}-${ts}.linux-x64.tar.gz"; + sha256 = "174w0bx5cqriy77dyk9xsnmdskykzmgbyjczwb5kkp6j8vp7b0fs"; }; preBuild = "export GOPATH=$GOPATH:$NIX_BUILD_TOP/go/src/${goPackagePath}/Godeps/_workspace"; postInstall = '' tar -xvf $srcStatic mkdir -p $bin/share/grafana - mv grafana-*/{public,conf} $bin/share/grafana/ + mv grafana-*/{public,conf,vendor} $bin/share/grafana/ + ln -sf ${phantomjs2}/bin/phantomjs $bin/share/grafana/vendor/phantomjs/phantomjs ''; meta = with lib; { diff --git a/pkgs/servers/monitoring/prometheus/alertmanager.nix b/pkgs/servers/monitoring/prometheus/alertmanager.nix index 330a528ef2f5..55ac38f2e379 100644 --- a/pkgs/servers/monitoring/prometheus/alertmanager.nix +++ b/pkgs/servers/monitoring/prometheus/alertmanager.nix @@ -2,8 +2,8 @@ buildGoPackage rec { name = "alertmanager-${version}"; - version = "0.1.0"; - rev = "${version}"; + version = "0.3.0"; + rev = "v${version}"; goPackagePath = "github.com/prometheus/alertmanager"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "prometheus"; repo = "alertmanager"; - sha256 = "1ya465bns6cj2lqbipmfm13wz8kxii5h9mm7lc0ba1xv26xx5zs7"; + sha256 = "0ychc2qvn3lzs4rg5f5sslil7clvcpzclcmfj83qjqp8krpg72b5"; }; # Tests exist, but seem to clash with the firewall. diff --git a/pkgs/servers/monitoring/prometheus/collectd-exporter.nix b/pkgs/servers/monitoring/prometheus/collectd-exporter.nix index bcb1889224c2..dc9b6fd843e2 100644 --- a/pkgs/servers/monitoring/prometheus/collectd-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/collectd-exporter.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "collectd-exporter-${version}"; - version = "0.1.0"; + version = "0.3.1"; rev = version; goPackagePath = "github.com/prometheus/collectd_exporter"; @@ -11,14 +11,14 @@ buildGoPackage rec { inherit rev; owner = "prometheus"; repo = "collectd_exporter"; - sha256 = "165zsdn0lffb6fvxz75szmm152a6wmia5skb96k1mv59qbmn9fi1"; + sha256 = "1p0kb7c8g0r0sp5a6xrx8vnwbw14hhwlqzk4n2xx2y8pvnbivajz"; }; goDeps = ./collectd-exporter_deps.json; meta = with stdenv.lib; { description = "Relay server for exporting metrics from collectd to Prometheus"; - homepage = https://github.com/prometheus/alertmanager; + homepage = https://github.com/prometheus/collectd_exporter; license = licenses.asl20; maintainers = with maintainers; [ benley ]; platforms = platforms.unix; diff --git a/pkgs/servers/monitoring/prometheus/default.nix b/pkgs/servers/monitoring/prometheus/default.nix index 1fbcd50d733e..ad9143ec33ff 100644 --- a/pkgs/servers/monitoring/prometheus/default.nix +++ b/pkgs/servers/monitoring/prometheus/default.nix @@ -2,8 +2,8 @@ buildGoPackage rec { name = "prometheus-${version}"; - version = "0.17.0"; - rev = "${version}"; + version = "1.0.0"; + rev = "v${version}"; goPackagePath = "github.com/prometheus/prometheus"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "prometheus"; repo = "prometheus"; - sha256 = "176198krna2i37dfhwsqi7m36sqn175yiny6n52vj27mc9s8ggzx"; + sha256 = "0wb6aj2019b2bkaai94mxdy8gr6gs7jpkm7ms8h9n2ms041gdsff"; }; docheck = true; diff --git a/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix b/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix index 7de99ecd3950..f2afd2aa2733 100644 --- a/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "haproxy_exporter-${version}"; - version = "0.4.0"; + version = "0.7.0"; rev = version; goPackagePath = "github.com/prometheus/haproxy_exporter"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "prometheus"; repo = "haproxy_exporter"; - sha256 = "0cwls1d4hmzjkwc50mjkxjb4sa4q6yq581wlc5sg9mdvl6g91zxr"; + sha256 = "1jkijdawmnj5yps0yaj47nyfmcah0krwmqsjvicm3sl0dhwmac4w"; }; goDeps = ./haproxy-exporter_deps.json; diff --git a/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix b/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix index f7256287955d..64a9e6cc28e3 100644 --- a/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "mysqld_exporter-${version}"; - version = "0.1.0"; + version = "0.8.1"; rev = version; goPackagePath = "github.com/prometheus/mysqld_exporter"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "prometheus"; repo = "mysqld_exporter"; - sha256 = "10xnyxyb6saz8pq3ijp424hxy59cvm1b5c9zcbw7ddzzkh1f6jd9"; + sha256 = "0pwf2vii9n9zgad1lxgw28c2743yc9c3qc03516fiwvlqc1cpddr"; }; goDeps = ./mysqld-exporter_deps.json; diff --git a/pkgs/servers/monitoring/prometheus/nginx-exporter.nix b/pkgs/servers/monitoring/prometheus/nginx-exporter.nix index c3b25e2fcc56..9adfdda1d077 100644 --- a/pkgs/servers/monitoring/prometheus/nginx-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/nginx-exporter.nix @@ -4,7 +4,7 @@ buildGoPackage rec { name = "nginx_exporter-${version}"; version = "20160524-${stdenv.lib.strings.substring 0 7 rev}"; rev = "2cf16441591f6b6e58a8c0439dcaf344057aea2b"; - + goPackagePath = "github.com/discordianfish/nginx_exporter"; src = fetchgit { diff --git a/pkgs/servers/monitoring/prometheus/node-exporter.nix b/pkgs/servers/monitoring/prometheus/node-exporter.nix index a5dd161b55e4..161b56c1d2dd 100644 --- a/pkgs/servers/monitoring/prometheus/node-exporter.nix +++ b/pkgs/servers/monitoring/prometheus/node-exporter.nix @@ -2,21 +2,20 @@ buildGoPackage rec { name = "node_exporter-${version}"; - version = "0.11.0"; + version = "0.12.0"; rev = version; - + goPackagePath = "github.com/prometheus/node_exporter"; src = fetchFromGitHub { inherit rev; owner = "prometheus"; repo = "node_exporter"; - sha256 = "149fs9yxnbiyd4ww7bxsv730mcskblpzb3cs4v12jnq2v84a4kk4"; + sha256 = "0ih8w9ji0fw1smsi45jgvrpqfzm3f5bvk9q3nwrl0my5xkksnr8g"; }; - goDeps = ./node-exporter_deps.json; - - doCheck = true; + # FIXME: megacli test fails + doCheck = false; meta = with stdenv.lib; { description = "Prometheus exporter for machine metrics"; diff --git a/pkgs/servers/monitoring/prometheus/node-exporter_deps.json b/pkgs/servers/monitoring/prometheus/node-exporter_deps.json deleted file mode 100644 index 68020e73b1ce..000000000000 --- a/pkgs/servers/monitoring/prometheus/node-exporter_deps.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "include": "../../libs.json", - "packages": [ - "github.com/soundcloud/go-runit", - "github.com/beevik/ntp", - "github.com/prometheus/client_golang", - "github.com/prometheus/client_model", - "bitbucket.org/ww/goautoneg", - "github.com/Sirupsen/logrus", - "github.com/beorn7/perks", - "github.com/matttproud/golang_protobuf_extensions", - "github.com/prometheus/log", - "github.com/golang/protobuf", - "github.com/prometheus/procfs" - ] - } -] diff --git a/pkgs/servers/monitoring/prometheus/pushgateway.nix b/pkgs/servers/monitoring/prometheus/pushgateway.nix index a1944608ce0a..65dda2403fca 100644 --- a/pkgs/servers/monitoring/prometheus/pushgateway.nix +++ b/pkgs/servers/monitoring/prometheus/pushgateway.nix @@ -2,16 +2,16 @@ buildGoPackage rec { name = "pushgateway-${version}"; - version = "0.1.1"; + version = "0.3.0"; rev = version; - + goPackagePath = "github.com/prometheus/pushgateway"; src = fetchFromGitHub { inherit rev; owner = "prometheus"; repo = "pushgateway"; - sha256 = "17q5z9msip46wh3vxcsq9lvvhbxg75akjjcr2b29zrky8bp2m230"; + sha256 = "1bj0s4s3gbcnlp2z2yx7jf3jx14cdg2v4pr0yciai0g6jwwg63hd"; }; goDeps = ./pushgateway_deps.json; diff --git a/pkgs/servers/monitoring/prometheus/statsd-bridge.nix b/pkgs/servers/monitoring/prometheus/statsd-bridge.nix index 0d9f0bb98856..935692bfa2e0 100644 --- a/pkgs/servers/monitoring/prometheus/statsd-bridge.nix +++ b/pkgs/servers/monitoring/prometheus/statsd-bridge.nix @@ -2,16 +2,16 @@ buildGoPackage rec { name = "statsd_bridge-${version}"; - version = "0.1.0"; + version = "0.3.0"; rev = version; - + goPackagePath = "github.com/prometheus/statsd_bridge"; src = fetchFromGitHub { inherit rev; owner = "prometheus"; - repo = "statsd_bridge"; - sha256 = "1fndpmd1k0a3ar6f7zpisijzc60f2dng5399nld1i1cbmd8jybjr"; + repo = "statsd_exporter"; + sha256 = "1gg9v224n05khcwy27637w3rwh0cymm7hx6bginfxd7730rmpp2r"; }; goDeps = ./statsd-bridge_deps.json; diff --git a/pkgs/servers/plex/default.nix b/pkgs/servers/plex/default.nix index 50fc85d48b39..f31971bf4c1a 100644 --- a/pkgs/servers/plex/default.nix +++ b/pkgs/servers/plex/default.nix @@ -5,13 +5,13 @@ let plexpkg = if enablePlexPass then { - version = "0.9.16.5.1966"; - vsnHash = "81a3bf0"; - sha256 = "1sgdd3r067j9ysfp90wjx6zi01s00wzgzs27l8xdlsbnvjr8zmf8"; + version = "1.0.1.2396"; + vsnHash = "c094d0d"; + sha256 = "0bhbpaj88989zn1q590mkcqshcpir87yiac9x1dl0afzpxj09lcz"; } else { - version = "0.9.16.4.1911"; - vsnHash = "ee6e505"; - sha256 = "0lq0lcynmc09d0whynb0x2zgd39dp7z7k86ndgm2clay3zbzqpfd"; + version = "1.0.0.2261"; + vsnHash = "a17e99e"; + sha256 = "14li33ni6aaa1qwvc02a066k52s1qwhpv55prvlmq3m5jm3iv0lr"; }; in stdenv.mkDerivation rec { diff --git a/pkgs/servers/sonarr/default.nix b/pkgs/servers/sonarr/default.nix new file mode 100644 index 000000000000..91e292944a67 --- /dev/null +++ b/pkgs/servers/sonarr/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, mono, libmediainfo, sqlite, makeWrapper, ... }: + +stdenv.mkDerivation rec { + name = "sonarr-${version}"; + version = "2.0.0.4230"; + + src = fetchurl { + url = "http://download.sonarr.tv/v2/master/mono/NzbDrone.master.${version}.mono.tar.gz"; + sha256 = "16nx0v5hpqlwna2hzpcpzvm7qc361yjxbqnwz5bfnnkb0h7ik5m6"; + }; + + buildInputs = [ + makeWrapper + ]; + + installPhase = '' + mkdir -p $out/bin + cp -r * $out/bin/ + + makeWrapper "${mono}/bin/mono" $out/bin/NzbDrone \ + --add-flags "$out/bin/NzbDrone.exe" \ + --prefix LD_LIBRARY_PATH ':' "${sqlite.out}/lib" \ + --prefix LD_LIBRARY_PATH ':' "${libmediainfo}/lib" + ''; + + meta = { + description = "Smart PVR for newsgroup and bittorrent users"; + homepage = https://sonarr.tv/; + license = stdenv.lib.licenses.gpl3; + maintainers = [ stdenv.lib.maintainers.fadenb ]; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/pkgs/shells/oh-my-zsh/default.nix b/pkgs/shells/oh-my-zsh/default.nix index 5a1c74fe4421..5bb3b1de7edc 100644 --- a/pkgs/shells/oh-my-zsh/default.nix +++ b/pkgs/shells/oh-my-zsh/default.nix @@ -7,12 +7,12 @@ stdenv.mkDerivation rec { name = "oh-my-zsh-git-${version}"; - version = "2016-07-05"; + version = "2016-07-15"; src = fetchgit { url = "https://github.com/robbyrussell/oh-my-zsh"; - rev = "644bc641ad48c74c88631d79d48ec9b6f3f5a3e5"; - sha256 = "1lmblfcd68pnc38bn6yjqs7sap5qinj37xv881a1rx4q0w38an07"; + rev = "96a2092e377139fbcd95d7b7ac703b740daa22f6"; + sha256 = "0v3hzpfj98mfz0y06qch2hf14iz0vpb9pfysw8hc4mnp0jzh5vz1"; }; phases = "installPhase"; diff --git a/pkgs/tools/archivers/p7zip/default.nix b/pkgs/tools/archivers/p7zip/default.nix index 63487b460343..7c952a8f7294 100644 --- a/pkgs/tools/archivers/p7zip/default.nix +++ b/pkgs/tools/archivers/p7zip/default.nix @@ -1,14 +1,12 @@ { stdenv, fetchurl }: -let - version = "15.14.1"; -in stdenv.mkDerivation rec { name = "p7zip-${version}"; + version = "16.02"; src = fetchurl { url = "mirror://sourceforge/p7zip/p7zip_${version}_src_all.tar.bz2"; - sha256 = "1m15iwglyjpiw82m7dbpykz8s55imch34w20w09l34116vdb97b9"; + sha256 = "5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f"; }; preConfigure = '' diff --git a/pkgs/tools/archivers/xarchiver/default.nix b/pkgs/tools/archivers/xarchiver/default.nix index ea59cb8319e8..507e777a7c37 100644 --- a/pkgs/tools/archivers/xarchiver/default.nix +++ b/pkgs/tools/archivers/xarchiver/default.nix @@ -1,18 +1,20 @@ -{ stdenv, fetchurl, gtk2, pkgconfig, intltool }: +{ stdenv, fetchFromGitHub, gtk, pkgconfig, intltool }: stdenv.mkDerivation rec { - version = "0.5.4"; + version = "0.5.4.6"; name = "xarchiver-${version}"; - src = fetchurl { - url = "mirror://sourceforge/xarchiver/${name}.tar.bz2"; - sha256 = "1x1f8m71cvv2p1364rz99iqs2caxj7yrb46aikz6xigwg4wsfgz6"; + src = fetchFromGitHub { + owner = "ib"; + repo = "xarchiver"; + rev = "${name}"; + sha256 = "1w6b4cchd4prswrn981a7bkq44ad51xm2qiwlpzy43ynql14q877"; }; - buildInputs = [ gtk2 pkgconfig intltool ]; + buildInputs = [ gtk pkgconfig intltool ]; meta = { - description = "GTK+2 only frontend to 7z,zip,rar,tar,bzip2, gzip,arj, lha, rpm and deb (open and extract only)"; + description = "GTK+ frontend to 7z,zip,rar,tar,bzip2, gzip,arj, lha, rpm and deb (open and extract only)"; homepage = http://sourceforge.net/projects/xarchiver/; maintainers = [ stdenv.lib.maintainers.domenkozar ]; license = stdenv.lib.licenses.gpl2; diff --git a/pkgs/tools/graphics/nip2/default.nix b/pkgs/tools/graphics/nip2/default.nix index e61488e202d3..fb88a8c37d4c 100644 --- a/pkgs/tools/graphics/nip2/default.nix +++ b/pkgs/tools/graphics/nip2/default.nix @@ -1,17 +1,17 @@ { stdenv, fetchurl, pkgconfig, glib, libxml2, flex, bison, vips, gnome, -fftw, gsl, goffice_0_8, libgsf }: +fftw, gsl, goffice, libgsf }: stdenv.mkDerivation rec { - name = "nip2-8.0"; + name = "nip2-8.3.0"; src = fetchurl { url = "http://www.vips.ecs.soton.ac.uk/supported/current/${name}.tar.gz"; - sha256 = "10ybac0qrz63x1yk1d0gpv9z1vzpadyii2qhrai6lllplzw6jqx7"; + sha256 = "0vr12gyfvhxx2a28y74lzfg379d1fk0g9isc69k0vdgpn4y1i8aa"; }; buildInputs = [ pkgconfig glib libxml2 flex bison vips - gnome.gtk fftw gsl goffice_0_8 libgsf + gnome.gtk fftw gsl goffice libgsf ]; meta = with stdenv.lib; { diff --git a/pkgs/tools/graphics/vips/default.nix b/pkgs/tools/graphics/vips/default.nix index 7b0cbc16e11a..6ff2ee5cd442 100644 --- a/pkgs/tools/graphics/vips/default.nix +++ b/pkgs/tools/graphics/vips/default.nix @@ -4,11 +4,11 @@ }: stdenv.mkDerivation rec { - name = "vips-8.2.2"; + name = "vips-8.3.1"; src = fetchurl { url = "http://www.vips.ecs.soton.ac.uk/supported/current/${name}.tar.gz"; - sha256 = "12b319aicr129cpi5sixwd3q91y97vwwva6b044zy54px4s8ls0g"; + sha256 = "01hh1baar2r474kny24fcq6ddshcvq104207mqxnkis0as6pzjq9"; }; buildInputs = diff --git a/pkgs/tools/misc/disper/default.nix b/pkgs/tools/misc/disper/default.nix index 777f7b486752..449f0f20b80d 100644 --- a/pkgs/tools/misc/disper/default.nix +++ b/pkgs/tools/misc/disper/default.nix @@ -1,14 +1,19 @@ -{stdenv, fetchurl, python}: +{stdenv, fetchurl, python, xorg, makeWrapper}: stdenv.mkDerivation rec { name = "disper-0.3.1"; - buildInputs = [python]; + buildInputs = [python makeWrapper]; preConfigure = '' export makeFlags="PREFIX=$out" ''; + postInstall = '' + wrapProgram $out/bin/disper \ + --prefix "LD_LIBRARY_PATH" : "${xorg.libXrandr.out}/lib:${xorg.libX11.out}/lib" + ''; + src = fetchurl { url = http://ppa.launchpad.net/disper-dev/ppa/ubuntu/pool/main/d/disper/disper_0.3.1.tar.gz; sha256 = "1l8brcpfn4iascb454ym0wrv5kqyz4f0h8k6db54nc3zhfwy7vvw"; diff --git a/pkgs/tools/misc/ethtool/default.nix b/pkgs/tools/misc/ethtool/default.nix index 9ffc4723dfd3..363aaf3f389a 100644 --- a/pkgs/tools/misc/ethtool/default.nix +++ b/pkgs/tools/misc/ethtool/default.nix @@ -1,11 +1,12 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - name = "ethtool-4.5"; + name = "ethtool-${version}"; + version = "4.6"; src = fetchurl { url = "mirror://kernel/software/network/ethtool/${name}.tar.xz"; - sha256 = "0fyakzpcrjb7hkaj9ccpcgza7r2im17qzxy9w6xzbiss5hrk8a5v"; + sha256 = "e90589a9349d008cce8c0510ac4e8878efdc0ddb1b732a9a4cc333b101313415"; }; meta = with stdenv.lib; { diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix index e8c8d9830c7b..6ba2b8817849 100644 --- a/pkgs/tools/misc/fzf/default.nix +++ b/pkgs/tools/misc/fzf/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "fzf-${version}"; - version = "0.13.2"; + version = "0.13.3"; rev = "${version}"; goPackagePath = "github.com/junegunn/fzf"; @@ -11,13 +11,13 @@ buildGoPackage rec { inherit rev; owner = "junegunn"; repo = "fzf"; - sha256 = "12dr0wib2ajs64a8d3l3zmgj2y8rklkc3xrvgscxgiv29lrlmvfz"; + sha256 = "0mfrlb91akzrj0qpjpaa9bkp6m9z95z56glamry73qy21vbnj58m"; }; buildInputs = [ ncurses ]; goDeps = ./deps.json; - + patchPhase = '' sed -i -e "s|expand(':h:h').'/bin/fzf'|'$bin/bin/fzf'|" plugin/fzf.vim sed -i -e "s|expand(':h:h').'/bin/fzf-tmux'|'$bin/bin/fzf-tmux'|" plugin/fzf.vim @@ -28,4 +28,11 @@ buildGoPackage rec { mkdir -p $out/share/vim-plugins ln -s $out/share/go/src/github.com/junegunn/fzf $out/share/vim-plugins/${name} ''; + + meta = with stdenv.lib; { + homepage = https://github.com/junegunn/fzf; + description = "A command-line fuzzy finder written in Go"; + license = licenses.mit; + platforms = platforms.unix; + }; } diff --git a/pkgs/tools/misc/gti/default.nix b/pkgs/tools/misc/gti/default.nix index 39e28073abce..3705dd832e9d 100644 --- a/pkgs/tools/misc/gti/default.nix +++ b/pkgs/tools/misc/gti/default.nix @@ -11,6 +11,10 @@ stdenv.mkDerivation rec { sha256 = "1wki7d61kcmv9s3xayky9cz84qa773x3y1z88y768hq8ifwadcbn"; }; + prePatch = '' + substituteInPlace Makefile --replace gcc cc + ''; + installPhase = '' mkdir -p $out/bin $out/share/man/man6 cp gti $out/bin diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix index b6f55bdcc207..12ecf11517c7 100644 --- a/pkgs/tools/misc/youtube-dl/default.nix +++ b/pkgs/tools/misc/youtube-dl/default.nix @@ -12,11 +12,11 @@ buildPythonApplication rec { name = "youtube-dl-${version}"; - version = "2016.07.09.2"; + version = "2016.07.16"; src = fetchurl { url = "https://yt-dl.org/downloads/${version}/${name}.tar.gz"; - sha256 = "0qs99ss1w22apx3n2173j5mly7h0ngfgkkgz07bn30235saf0fd3"; + sha256 = "017x2hqc2bacypjmn9ac9f91y9y6afydl0z7dich5l627494hvfg"; }; buildInputs = [ makeWrapper zip pandoc ]; diff --git a/pkgs/tools/networking/ndjbdns/default.nix b/pkgs/tools/networking/ndjbdns/default.nix index 2a7e996f8db2..256f50e5c546 100644 --- a/pkgs/tools/networking/ndjbdns/default.nix +++ b/pkgs/tools/networking/ndjbdns/default.nix @@ -1,11 +1,12 @@ { stdenv, fetchurl, systemd, pkgconfig }: stdenv.mkDerivation rec { - version = "1.05.9"; + version = "1.06"; name = "ndjbdns-${version}"; + src = fetchurl { url = "http://pjp.dgplug.org/ndjbdns/${name}.tar.gz"; - sha256 = "0gf3hlmr6grcn6dzflf83lqqfp6hk3ldhbc7z0a1rrh059m93ap5"; + sha256 = "09qi5a9abqm08iqmxj74fzzq9x1w5lzr1jlbzj2hl8hz0g2sgraw"; }; buildInputs = [ pkgconfig systemd ]; @@ -21,4 +22,4 @@ stdenv.mkDerivation rec { platforms = platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix index 064745f88558..a0cb0795a261 100644 --- a/pkgs/tools/networking/openssh/default.nix +++ b/pkgs/tools/networking/openssh/default.nix @@ -45,6 +45,9 @@ stdenv.mkDerivation rec { ./locale_archive.patch ./fix-host-key-algorithms-plus.patch ./CVE-2015-8325.patch + + # See discussion in https://github.com/NixOS/nixpkgs/pull/16966 + ./dont_create_privsep_path.patch ] ++ optional withGssapiPatches gssapiSrc; @@ -66,11 +69,6 @@ stdenv.mkDerivation rec { ++ optional stdenv.isDarwin "--disable-libutil" ++ optional (!linkOpenssl) "--without-openssl"; - preConfigure = '' - configureFlagsArray+=("--with-privsep-path=$out/empty") - mkdir -p $out/empty - ''; - enableParallelBuilding = true; hardeningEnable = [ "pie" ]; diff --git a/pkgs/tools/networking/openssh/dont_create_privsep_path.patch b/pkgs/tools/networking/openssh/dont_create_privsep_path.patch new file mode 100644 index 000000000000..b6d432d5c5de --- /dev/null +++ b/pkgs/tools/networking/openssh/dont_create_privsep_path.patch @@ -0,0 +1,11 @@ +diff -ur openssh-7.2p2_orig/Makefile.in openssh-7.2p2/Makefile.in +--- openssh-7.2p2_orig/Makefile.in 2016-03-09 19:04:48.000000000 +0100 ++++ openssh-7.2p2/Makefile.in 2016-07-16 09:56:05.643903293 +0200 +@@ -301,7 +301,6 @@ + $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)5 + $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8 + $(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir) +- (umask 022 ; $(srcdir)/mkinstalldirs $(DESTDIR)$(PRIVSEP_PATH)) + $(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT) + $(INSTALL) -m 0755 $(STRIP_OPT) scp$(EXEEXT) $(DESTDIR)$(bindir)/scp$(EXEEXT) + $(INSTALL) -m 0755 $(STRIP_OPT) ssh-add$(EXEEXT) $(DESTDIR)$(bindir)/ssh-add$(EXEEXT) diff --git a/pkgs/tools/networking/proxychains/default.nix b/pkgs/tools/networking/proxychains/default.nix index 2b85cef70c55..ed19f9d1674f 100644 --- a/pkgs/tools/networking/proxychains/default.nix +++ b/pkgs/tools/networking/proxychains/default.nix @@ -1,10 +1,13 @@ -{ stdenv, fetchgit } : -stdenv.mkDerivation { - name = "proxychains-4.0.1-head"; - src = fetchgit { - url = https://github.com/haad/proxychains.git; - rev = "c9b8ce35b24f9d4e80563242b759dff54867163f"; - sha256 = "163h3d3lpglbzjadf8a9kfaf0i1ds25r7si6ll6d5khn1835zik5"; +{ stdenv, fetchFromGitHub } : +stdenv.mkDerivation rec { + name = "proxychains-${version}"; + version = "4.2.0"; + + src = fetchFromGitHub { + owner = "haad"; + repo = "proxychains"; + rev = name; + sha256 = "015skh3z1jmm8kxbm3nkqv1w56kcvabdmcbmpwzywxr4xnh3x3pc"; }; meta = { diff --git a/pkgs/tools/networking/shncpd/default.nix b/pkgs/tools/networking/shncpd/default.nix new file mode 100644 index 000000000000..be2bc6a75a17 --- /dev/null +++ b/pkgs/tools/networking/shncpd/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + name = "shncpd-${version}"; + version = "2016-06-22"; + + src = fetchFromGitHub { + owner = "jech"; + repo = "shncpd"; + rev = "62ef688db7a6535ce11e66c8c93ab64a1bb09484"; + sha256 = "1sj7a77isc2jmh7gw2naw9l9366kjx6jb909h7spj7daxdwvji8f"; + }; + + hardeningEnable = [ "pie" ]; + + preConfigure = '' + makeFlags=( "PREFIX=$out" ) + ''; + + meta = with stdenv.lib; { + description = "Simple, stupid and slow HNCP daemon"; + homepage = https://www.irif.univ-paris-diderot.fr/~jch/software/homenet/shncpd.html; + license = licenses.mit; + platforms = platforms.linux; + maintainers = [ maintainers.fpletz ]; + }; +} diff --git a/pkgs/tools/networking/vtun/default.nix b/pkgs/tools/networking/vtun/default.nix index b0397149e60d..09f48d9fa1ad 100644 --- a/pkgs/tools/networking/vtun/default.nix +++ b/pkgs/tools/networking/vtun/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, openssl, lzo, zlib, yacc, flex }: +{ stdenv, fetchurl, fetchpatch, openssl, lzo, zlib, yacc, flex }: stdenv.mkDerivation rec { name = "vtun-3.0.3"; @@ -8,7 +8,13 @@ stdenv.mkDerivation rec { sha256 = "1jxrxp3klhc8az54d5qn84cbc0vdafg319jh84dxkrswii7vxp39"; }; - patchPhase = '' + patches = [ + (fetchpatch { url = http://sources.debian.net/data/main/v/vtun/3.0.3-2.2/debian/patches/08-gcc5-inline.patch; + sha256 = "18sys97v2hx6vac5zp3ld7sa6kz4izv3g9dnkm0lflbaxhym2vs1"; + }) + ]; + + postPatch = '' sed -i -e 's/-m 755//' -e 's/-o root -g 0//' Makefile.in sed -i '/strip/d' Makefile.in ''; diff --git a/pkgs/tools/package-management/packagekit/default.nix b/pkgs/tools/package-management/packagekit/default.nix index bdd02e58cbb6..dbac7be10d79 100644 --- a/pkgs/tools/package-management/packagekit/default.nix +++ b/pkgs/tools/package-management/packagekit/default.nix @@ -1,57 +1,54 @@ -{ stdenv, fetchurl, intltool, glib, pkgconfig, polkit, python, sqlite }: +{ stdenv, fetchFromGitHub, intltool, glib, pkgconfig, polkit, python, sqlite, systemd +, gobjectIntrospection, vala, gtk_doc, autoreconfHook, autoconf-archive +, nix, boost +, enableCommandNotFound ? false +, enableBashCompletion ? false, bashCompletion ? null }: + +with stdenv.lib; stdenv.mkDerivation rec { - name = "packagekit-${version}"; - version = "1.1.1"; + name = "packagekit-2016-06-03"; - src = fetchurl { - sha256 = "1i6an483vmm6y39szr2alq5vf6kfxhk3j5ca79qrshcj9jjlhcs8"; - url = "http://www.freedesktop.org/software/PackageKit/releases/PackageKit-${version}.tar.xz"; + src = fetchFromGitHub { + owner = "hughsie"; + repo = "PackageKit"; + rev = "99fd83bbb26badf43c6a17a9f0c6dc054c7484c8"; + sha256 = "0y42vl6r1wh57sbjfkn4khjs78q54wshf4p0v4nly9s7hydxpi6a"; }; - buildInputs = [ glib polkit python ]; - propagatedBuildInputs = [ sqlite ]; - nativeBuildInputs = [ intltool pkgconfig ]; + buildInputs = [ glib polkit systemd python gobjectIntrospection vala ] + ++ optional enableBashCompletion bashCompletion; + propagatedBuildInputs = [ sqlite nix boost ]; + nativeBuildInputs = [ intltool pkgconfig autoreconfHook autoconf-archive gtk_doc ]; + + preAutoreconf = '' + gtkdocize + intltoolize + ''; configureFlags = [ - "--disable-static" - "--disable-python3" - "--disable-networkmanager" - "--disable-connman" - "--disable-systemd" - "--disable-bash-completion" - "--disable-gstreamer-plugin" - "--disable-gtk-module" - "--disable-command-not-found" + "--enable-systemd" + "--enable-nix" + "--disable-dummy" "--disable-cron" - "--disable-daemon-tests" - "--disable-alpm" - "--disable-aptcc" - "--enable-dummy" - "--disable-entropy" - "--disable-hif" - "--disable-pisi" - "--disable-poldek" - "--disable-portage" - "--disable-ports" - "--disable-katja" - "--disable-urpmi" - "--disable-yum" - "--disable-zypp" - ]; + "--disable-introspection" + "--disable-offline-update" + "--localstatedir=/var" + "--sysconfdir=/etc" + "--with-dbus-sys=$(out)/etc/dbus-1/system.d" + "--with-systemdsystemunitdir=$(out)/lib/systemd/system/" + ] + ++ optional (!enableBashCompletion) "--disable-bash-completion" + ++ optional (!enableCommandNotFound) "--disable-command-not-found"; enableParallelBuilding = true; - preInstall = '' - # Don't install anything to e.g. $out/var/cache: - for dir in src data; do - substituteInPlace $dir/Makefile \ - --replace " install-data-hook" "" \ - --replace " install-databaseDATA" "" - done - ''; + installFlags = [ + "sysconfdir=\${out}/etc" + "localstatedir=\${TMPDIR}" + ]; - meta = with stdenv.lib; { + meta = { description = "System to facilitate installing and updating packages"; longDescription = '' PackageKit is a system designed to make installing and updating software @@ -66,6 +63,6 @@ stdenv.mkDerivation rec { homepage = http://www.packagekit.org/; license = licenses.gpl2Plus; platforms = platforms.linux; - maintainers = with maintainers; [ nckx ]; + maintainers = with maintainers; [ nckx matthewbauer ]; }; } diff --git a/pkgs/tools/security/keybase/default.nix b/pkgs/tools/security/keybase/default.nix new file mode 100644 index 000000000000..87a0596f6f08 --- /dev/null +++ b/pkgs/tools/security/keybase/default.nix @@ -0,0 +1,28 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "keybase-${version}"; + version = "1.0.16"; + rev = "v${version}"; + + goPackagePath = "github.com/keybase/client"; + subPackages = [ "go/keybase" ]; + + dontRenameImports = true; + + src = fetchFromGitHub { + owner = "keybase"; + repo = "client"; + inherit rev; + sha256 = "0p62cqpfgx9b5kfnviqpig27i20yv9bg5mq61am5xrmkp68jk35b"; + }; + + buildFlags = [ "-tags production" ]; + + meta = with stdenv.lib; { + homepage = https://www.keybase.io/; + description = "The Keybase official command-line utility and service."; + platforms = platforms.linux; + maintainers = with maintainers; [ carlsverre ]; + }; +} diff --git a/pkgs/tools/security/minisign/default.nix b/pkgs/tools/security/minisign/default.nix index 373ebc1e6ff9..1a573048aa4e 100644 --- a/pkgs/tools/security/minisign/default.nix +++ b/pkgs/tools/security/minisign/default.nix @@ -1,12 +1,14 @@ -{ stdenv, fetchurl, cmake, libsodium }: +{ stdenv, fetchFromGitHub, cmake, libsodium }: stdenv.mkDerivation rec { name = "minisign-${version}"; version = "0.6"; - src = fetchurl { - url = "https://github.com/jedisct1/minisign/archive/${version}.tar.gz"; - sha256 = "029g8ian72fy07k73nf451dw1yggav6crjjc2x6kv4nfpq3pl9pj"; + src = fetchFromGitHub { + repo = "minisign"; + owner = "jedisct1"; + rev = version; + sha256 = "1m71ngxaij3q1dw602kjgj22y5xfjlxrrkjdmx1v4p36y0n6wl92"; }; nativeBuildInputs = [ cmake ]; @@ -22,5 +24,6 @@ stdenv.mkDerivation rec { homepage = https://jedisct1.github.io/minisign/; license = licenses.isc; maintainers = with maintainers; [ joachifm ]; + platforms = platforms.unix; }; } diff --git a/pkgs/tools/security/nasty/default.nix b/pkgs/tools/security/nasty/default.nix index 35bbb3bae48d..fb078674ea74 100644 --- a/pkgs/tools/security/nasty/default.nix +++ b/pkgs/tools/security/nasty/default.nix @@ -9,6 +9,10 @@ stdenv.mkDerivation rec { sha256 = "1dznlxr728k1pgy1kwmlm7ivyl3j3rlvkmq34qpwbwbj8rnja1vn"; }; + # does not apply cleanly with patchPhase/fetchpatch + # https://sources.debian.net/src/nasty/0.6-3/debian/patches/02_add_largefile_support.patch + CFLAGS = "-D_FILE_OFFSET_BITS=64"; + buildInputs = [ gpgme ]; installPhase = '' diff --git a/pkgs/tools/security/sslscan/default.nix b/pkgs/tools/security/sslscan/default.nix index 50cc380b970e..f6777a0e979f 100644 --- a/pkgs/tools/security/sslscan/default.nix +++ b/pkgs/tools/security/sslscan/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "sslscan-${version}"; - version = "1.11.5"; + version = "1.11.7"; src = fetchurl { url = "https://github.com/rbsec/sslscan/archive/${version}-rbsec.tar.gz"; - sha256 = "0mcg8hyx1r9sq716bw1r554fcsf512khgcms2ixxb1c31ng6lhq6"; + sha256 = "0wygz2gm9asvhpfy44333y4pkdja1sbr41hc6mhkxg7a4ys8f9qs"; }; buildInputs = [ openssl ]; diff --git a/pkgs/tools/security/sudo/default.nix b/pkgs/tools/security/sudo/default.nix index b2af5451b8b5..e2c69377df5a 100644 --- a/pkgs/tools/security/sudo/default.nix +++ b/pkgs/tools/security/sudo/default.nix @@ -4,14 +4,14 @@ }: stdenv.mkDerivation rec { - name = "sudo-1.8.16"; + name = "sudo-1.8.17p1"; src = fetchurl { urls = [ "ftp://ftp.sudo.ws/pub/sudo/${name}.tar.gz" "ftp://ftp.sudo.ws/pub/sudo/OLD/${name}.tar.gz" ]; - sha256 = "0k86sm9ilhxhvnfwq3092zhfxazj3kddn0y2mirz0nqjqmpq50rd"; + sha256 = "c690d707fb561b3ecdf6a6de5563bc0b769388eff201c851edbace408bb155cc"; }; configureFlags = [ diff --git a/pkgs/tools/text/platinum-searcher/default.nix b/pkgs/tools/text/platinum-searcher/default.nix index 9eae37c6d1a7..21a49d493aa7 100644 --- a/pkgs/tools/text/platinum-searcher/default.nix +++ b/pkgs/tools/text/platinum-searcher/default.nix @@ -2,8 +2,8 @@ buildGoPackage rec { name = "the_platinum_searcher-${version}"; - version = "2.1.1"; - rev = "v2.1.1"; + version = "2.1.3"; + rev = "v2.1.3"; goPackagePath = "github.com/monochromegane/the_platinum_searcher"; @@ -11,7 +11,7 @@ buildGoPackage rec { inherit rev; owner = "monochromegane"; repo = "the_platinum_searcher"; - sha256 = "06cs936w3l64ikszcysdm9ijn52kwgi1ffjxkricxbdb677gsk23"; + sha256 = "09pkdfh7fqn3x4l9zaw5wzk20k7nfdwry7br9vfy3vv3fwv61ynp"; }; goDeps = ./deps.json; diff --git a/pkgs/tools/virtualization/nixos-container/default.nix b/pkgs/tools/virtualization/nixos-container/default.nix new file mode 100644 index 000000000000..0763536533f0 --- /dev/null +++ b/pkgs/tools/virtualization/nixos-container/default.nix @@ -0,0 +1,17 @@ +{ substituteAll, perl, perlPackages, shadow, utillinux }: + +substituteAll { + name = "nixos-container"; + dir = "bin"; + isExecutable = true; + src = ./nixos-container.pl; + perl = "${perl}/bin/perl -I${perlPackages.FileSlurp}/lib/perl5/site_perl"; + su = "${shadow.su}/bin/su"; + inherit utillinux; + + postInstall = '' + t=$out/etc/bash_completion.d + mkdir -p $t + cp ${./nixos-container-completion.sh} $t/nixos-container + ''; +} diff --git a/nixos/modules/virtualisation/nixos-container-completion.sh b/pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh similarity index 100% rename from nixos/modules/virtualisation/nixos-container-completion.sh rename to pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh diff --git a/nixos/modules/virtualisation/nixos-container.pl b/pkgs/tools/virtualization/nixos-container/nixos-container.pl similarity index 100% rename from nixos/modules/virtualisation/nixos-container.pl rename to pkgs/tools/virtualization/nixos-container/nixos-container.pl diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ca99598f2ab4..86a73864091d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -167,6 +167,8 @@ in fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {}); + fetchMavenArtifact = callPackage ../build-support/fetchmavenartifact { }; + packer = callPackage ../development/tools/packer { }; fetchpatch = callPackage ../build-support/fetchpatch { }; @@ -2166,6 +2168,8 @@ in keybase = callPackage ../applications/misc/keybase { }; + keybase-go = callPackage ../tools/security/keybase { }; + keychain = callPackage ../tools/misc/keychain { }; keyfuzz = callPackage ../tools/inputmethods/keyfuzz { }; @@ -2888,7 +2892,9 @@ in p7zip = callPackage ../tools/archivers/p7zip { }; - packagekit = callPackage ../tools/package-management/packagekit { }; + packagekit = callPackage ../tools/package-management/packagekit { + nix = nixUnstable; + }; pal = callPackage ../tools/misc/pal { }; @@ -3466,6 +3472,8 @@ in solvespace = callPackage ../applications/graphics/solvespace { }; + sonarr = callPackage ../servers/sonarr { }; + sonata = callPackage ../applications/audio/sonata { inherit (python3Packages) buildPythonApplication python isPy3k dbus pygobject3 mpd2; }; @@ -3913,6 +3921,8 @@ in udunits = callPackage ../development/libraries/udunits { }; + uemacs = callPackage ../applications/editors/uemacs { }; + uhttpmock = callPackage ../development/libraries/uhttpmock { }; uim = callPackage ../tools/inputmethods/uim { @@ -3927,6 +3937,8 @@ in units = callPackage ../tools/misc/units { }; + unittest-cpp = callPackage ../development/libraries/unittest-cpp { }; + unrar = callPackage ../tools/archivers/unrar { }; xar = callPackage ../tools/compression/xar { }; @@ -4705,8 +4717,6 @@ in hugs = callPackage ../development/interpreters/hugs { }; - path64 = callPackage ../development/compilers/path64 { }; - openjdk7 = if stdenv.isDarwin then callPackage ../development/compilers/openjdk-darwin { } @@ -4734,6 +4744,8 @@ in jdk = if stdenv.isDarwin then self.jdk7 else self.jdk8; jre = if stdenv.isDarwin then self.jre7 else self.jre8; + openshot-qt = callPackage ../applications/video/openshot-qt { }; + oraclejdk = self.jdkdistro true false; oraclejdk7 = self.oraclejdk7distro true false; @@ -5733,7 +5745,7 @@ in glpk = null; suitesparse = null; jdk = null; - openblas = openblasCompat; + openblas = openblas; }; octaveFull = (lowPrio (callPackage ../development/interpreters/octave { qt = qt4; @@ -5808,6 +5820,10 @@ in inherit (darwin) CF configd; self = python35; }); + python36 = callPackage ../development/interpreters/python/3.6 { + inherit (darwin) CF configd; + self = python36; + }; pypy = callPackage ../development/interpreters/pypy { self = pypy; }; @@ -6240,6 +6256,8 @@ in docutils = pythonPackages.docutils; + doctl = callPackage ../development/tools/doctl { }; + dot2tex = pythonPackages.dot2tex; doxygen = callPackage ../development/tools/documentation/doxygen { @@ -6563,6 +6581,8 @@ in shellcheck = self.haskellPackages.ShellCheck; + shncpd = callPackage ../tools/networking/shncpd { }; + sigrok-cli = callPackage ../development/tools/sigrok-cli { }; simpleTpmPk11 = callPackage ../tools/security/simple-tpm-pk11 { }; @@ -8134,6 +8154,7 @@ in libjpeg_original = callPackage ../development/libraries/libjpeg { }; libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { }; + libjpeg_drop = callPackage ../development/libraries/libjpeg-drop { }; libjpeg = if stdenv.isLinux then self.libjpeg_turbo else self.libjpeg_original; # some problems, both on FreeBSD and Darwin libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix { @@ -8386,6 +8407,8 @@ in libu2f-server = callPackage ../development/libraries/libu2f-server { }; + libui = callPackage ../development/libraries/libui { }; + libunity = callPackage ../development/libraries/libunity { }; libunistring = callPackage ../development/libraries/libunistring { }; @@ -8672,7 +8695,9 @@ in notify-sharp = callPackage ../development/libraries/notify-sharp { }; - ncurses = callPackage ../development/libraries/ncurses { }; + ncurses5 = callPackage ../development/libraries/ncurses { abiVersion = "5"; }; + ncurses6 = callPackage ../development/libraries/ncurses { abiVersion = "6"; }; + ncurses = if stdenv.isDarwin then ncurses5 else ncurses6; neardal = callPackage ../development/libraries/neardal { }; @@ -9845,6 +9870,11 @@ in self = python35Packages; }); + python36Packages = (callPackage ./python-packages.nix { + python = python36; + self = python36Packages; + }); + pypyPackages = callPackage ./python-packages.nix { python = pypy; self = pypyPackages; @@ -10156,13 +10186,19 @@ in neard = callPackage ../servers/neard { }; - nginx = callPackage ../servers/http/nginx { + nginx = callPackage ../servers/http/nginx/stable.nix { # We don't use `with` statement here on purpose! # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334 modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ]; }; - # nginxUnstable currently points to stable because that's newest: - nginxUnstable = nginx; + + nginxMainline = callPackage ../servers/http/nginx/mainline.nix { + # We don't use `with` statement here on purpose! + # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334 + modules = [ nginxModules.dav nginxModules.moreheaders ]; + }; + + nginxUnstable = nginxMainline; nginxModules = callPackage ../servers/http/nginx/modules.nix { }; @@ -10727,6 +10763,10 @@ in firejail = callPackage ../os-specific/linux/firejail {}; + fnotifystat = callPackage ../os-specific/linux/fnotifystat { }; + + forkstat = callPackage ../os-specific/linux/forkstat { }; + freefall = callPackage ../os-specific/linux/freefall { inherit (linuxPackages) kernel; }; @@ -10828,6 +10868,10 @@ in openisns = callPackage ../os-specific/linux/open-isns { }; + powerstat = callPackage ../os-specific/linux/powerstat { }; + + smemstat = callPackage ../os-specific/linux/smemstat { }; + tgt = callPackage ../tools/networking/tgt { }; # -- Linux kernel expressions ------------------------------------------------ @@ -11148,7 +11192,12 @@ in linux_grsec_nixos = callPackage ../build-support/grsecurity { inherit (lib) overrideDerivation; kernel = callPackage ../os-specific/linux/kernel/linux-grsecurity.nix { - inherit (self.linux_4_5) kernelPatches; + kernelPatches = with self.kernelPatches; [ bridge_stp_helper qat_common_Makefile ] + ++ lib.optionals ((platform.kernelArch or null) == "mips") + [ kernelPatches.mips_fpureg_emu + kernelPatches.mips_fpu_sigill + kernelPatches.mips_ext3_n32 + ]; }; grsecPatch = self.kernelPatches.grsecurity_testing; kernelPatches = [ self.kernelPatches.grsecurity_nixos_kmod ]; @@ -11809,6 +11858,9 @@ in liberation_ttf_binary = callPackage ../data/fonts/redhat-liberation-fonts/binary.nix { }; liberation_ttf = self.liberation_ttf_binary; + liberationsansnarrow = callPackage ../data/fonts/liberationsansnarrow { }; + liberationsansnarrow_binary = callPackage ../data/fonts/liberationsansnarrow/binary.nix { }; + libertine = callPackage ../data/fonts/libertine { }; lmmath = callPackage ../data/fonts/lmodern/lmmath.nix {}; @@ -12176,6 +12228,8 @@ in bibletime = callPackage ../applications/misc/bibletime { }; + bitkeeper = callPackage ../applications/version-management/bitkeeper { }; + bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee { }; bitlbee-plugins = callPackage ../applications/networking/instant-messengers/bitlbee/plugins.nix { }; @@ -12747,6 +12801,8 @@ in evopedia = callPackage ../applications/misc/evopedia { }; + gpg-mdp = callPackage ../applications/misc/gpg-mdp { }; + keepassx = callPackage ../applications/misc/keepassx { }; keepassx2 = callPackage ../applications/misc/keepassx/2.0.nix { }; @@ -12891,7 +12947,7 @@ in }; firefox-beta-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin { - channel = "beta"; + generated = import ../applications/networking/browsers/firefox-bin/beta_sources.nix; gconf = pkgs.gnome.GConf; inherit (pkgs.gnome) libgnome libgnomeui; inherit (pkgs.gnome3) defaultIconTheme; @@ -12904,20 +12960,6 @@ in desktopName = "Firefox Beta"; }; - firefox-developer-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin { - channel = "developer"; - gconf = pkgs.gnome.GConf; - inherit (pkgs.gnome) libgnome libgnomeui; - inherit (pkgs.gnome3) defaultIconTheme; - }; - - firefox-developer-bin = self.wrapFirefox firefox-developer-bin-unwrapped { - browserName = "firefox"; - name = "firefox-developer-bin-" + - (builtins.parseDrvName firefox-developer-bin-unwrapped.name).version; - desktopName = "Firefox Developer Edition"; - }; - firestr = qt5.callPackage ../applications/networking/p2p/firestr { boost = boost155; }; @@ -13209,6 +13251,8 @@ in hugin = callPackage ../applications/graphics/hugin { }; + hugo = callPackage ../applications/misc/hugo { }; + hydrogen = callPackage ../applications/audio/hydrogen { }; slack = callPackage ../applications/networking/instant-messengers/slack { }; @@ -13810,6 +13854,8 @@ in pijul = callPackage ../applications/version-management/pijul { }; + planner = callPackage ../applications/office/planner { }; + playonlinux = callPackage ../applications/misc/playonlinux { stdenv = stdenv_32bit; }; @@ -13984,6 +14030,8 @@ in pcsx2 = callPackage_i686 ../misc/emulators/pcsx2 { }; + pekwm = callPackage ../applications/window-managers/pekwm { }; + pencil = callPackage ../applications/graphics/pencil { xulrunner = firefox-unwrapped; }; @@ -14828,7 +14876,7 @@ in vym = callPackage ../applications/misc/vym { }; - w3m = callPackage ../applications/networking/browsers/w3m { + w3m = callPackage ../applications/networking/browsers/w3m { graphicsSupport = !stdenv.isDarwin; }; @@ -15309,6 +15357,8 @@ in cockatrice = qt5.callPackage ../games/cockatrice { }; + commandergenius = callPackage ../games/commandergenius { }; + confd = callPackage ../tools/system/confd { }; construoBase = lowPrio (callPackage ../games/construo { @@ -16911,6 +16961,8 @@ in nixos-artwork = callPackage ../data/misc/nixos-artwork { }; + nixos-container = callPackage ../tools/virtualization/nixos-container { }; + norwester-font = callPackage ../data/fonts/norwester {}; nut = callPackage ../applications/misc/nut { }; @@ -17181,6 +17233,10 @@ in webfs = callPackage ../servers/http/webfs { }; + wikicurses = callPackage ../applications/misc/wikicurses { + pythonPackages = python3Packages; + }; + wineMinimal = callPackage ../misc/emulators/wine { wineRelease = config.wine.release or "stable"; wineBuild = config.wine.build or "wine32"; diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index 8913dc1ef59e..87813571d9aa 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -6,7 +6,7 @@ { # The system (e.g., `i686-linux') for which to build the packages. - system ? builtins.currentSystem + system , # The standard environment to use. Only used for bootstrapping. If # null, the default standard environment is used. @@ -19,21 +19,8 @@ && system != "x86_64-solaris" && system != "x86_64-kfreebsd-gnu") -, # Allow a configuration attribute set to be passed in as an - # argument. Otherwise, it's read from $NIXPKGS_CONFIG or - # ~/.nixpkgs/config.nix. - # - # [For NixOS (nixos-rebuild), use nixpkgs.config option to set.] - config ? let - inherit (builtins) getEnv pathExists; - - configFile = getEnv "NIXPKGS_CONFIG"; - homeDir = getEnv "HOME"; - configFile2 = homeDir + "/.nixpkgs/config.nix"; - in - if configFile != "" && pathExists configFile then import configFile - else if homeDir != "" && pathExists configFile2 then import configFile2 - else {} +, # Allow a configuration attribute set to be passed in as an argument. + config ? {} , crossSystem ? null , platform ? null diff --git a/pkgs/top-level/impure.nix b/pkgs/top-level/impure.nix new file mode 100644 index 000000000000..e90668159279 --- /dev/null +++ b/pkgs/top-level/impure.nix @@ -0,0 +1,24 @@ +/* Impure default args for `pkgs/top-level/default.nix`. See that file + for the meaning of each argument. */ + +{ # Fallback: Assume we are building packages for the current (host, in GNU + # Autotools parlance) system. + system ? builtins.currentSystem + +, # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or + # $HOME/.nixpkgs/config.nix. + config ? let + inherit (builtins) getEnv pathExists; + + configFile = getEnv "NIXPKGS_CONFIG"; + homeDir = getEnv "HOME"; + configFile2 = homeDir + "/.nixpkgs/config.nix"; + in + if configFile != "" && pathExists configFile then import configFile + else if homeDir != "" && pathExists configFile2 then import configFile2 + else {} + +, ... +} @ args: + +import ./. (args // { inherit system config; }) diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix index da3579a6595b..b664dceaa954 100644 --- a/pkgs/top-level/make-tarball.nix +++ b/pkgs/top-level/make-tarball.nix @@ -40,7 +40,7 @@ releaseTools.sourceTarball rec { echo 'abort "Illegal use of in Nixpkgs."' > $TMPDIR/barf.nix # Make sure that Nixpkgs does not use - if grep -r ' to refer to itself." exit 1 fi diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix index f08117903be9..1e042bedb4fd 100644 --- a/pkgs/top-level/php-packages.nix +++ b/pkgs/top-level/php-packages.nix @@ -209,11 +209,11 @@ let composer = pkgs.stdenv.mkDerivation rec { name = "composer-${version}"; - version = "1.0.0-alpha11"; + version = "1.2.0"; src = pkgs.fetchurl { url = "https://getcomposer.org/download/${version}/composer.phar"; - sha256 = "1b41ad352p4296c2j7cdq27wp06w28080bjxnjpmw536scb7yd27"; + sha256 = "15chwfsqmwmhry3bv13a5y4ih1vzb0j8h1dfd49pnzzd8lai706w"; }; phases = [ "installPhase" ]; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 21700fe82d1d..f8ca093b1bfe 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -10,6 +10,7 @@ let isPy33 = python.majorVersion == "3.3"; isPy34 = python.majorVersion == "3.4"; isPy35 = python.majorVersion == "3.5"; + isPy36 = python.majorVersion == "3.6"; isPyPy = python.executable == "pypy"; isPy3k = strings.substring 0 1 python.majorVersion == "3"; @@ -30,6 +31,7 @@ let if isPy33 then "python33" else if isPy34 then "python34" else if isPy35 then "python35" else + if isPy36 then "python36" else if isPyPy then "pypy" else ""; modules = python.modules or { @@ -42,7 +44,7 @@ let in modules // { - inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication; + inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication; # helpers @@ -4373,6 +4375,12 @@ in modules // { propagatedBuildInputs = with self; [ pkgs.libffi pycparser ]; buildInputs = with self; [ pytest ]; + patchPhase = '' + substituteInPlace testing/cffi0/test_ownlib.py --replace "gcc" "cc" + ''; + + NIX_CFLAGS_COMPILE="-Wno-shift-negative-value"; + checkPhase = '' py.test ''; @@ -7050,6 +7058,27 @@ in modules // { }; }; + jupyterlab = buildPythonPackage rec { + name = "jupyterlab-${version}"; + version = "0.1.1"; + + src = pkgs.fetchurl { + url = "mirror://pypi/j/jupyterlab/${name}.tar.gz"; + sha256 = "c1a08f4d1b2bb1bf06db090db30df988a22ffbfa05606e7eb026e364969388da"; + }; + + propagatedBuildInputs = with self; [ notebook ]; + + # No tests in archive + doCheck = false; + + meta = { + description = "Jupyter lab environment notebook server extension."; + license = with licenses; [ bsd3 ]; + homepage = "http://jupyter.org/"; + }; + }; + lti = let self' = (self.override {self = self';}) // {pytest = self.pytest_27;}; mock_1_0_1 = self'.mock.overrideDerivation (_: rec { @@ -9332,6 +9361,8 @@ in modules // { # Only test dependencies buildInputs = with self; [ pkgs.git gevent geventhttpclient pkgs.glibcLocales mock fastimport ]; + doCheck = !stdenv.isDarwin; + meta = { description = "Simple Python implementation of the Git file formats and protocols"; homepage = http://samba.org/~jelmer/dulwich/; @@ -12390,7 +12421,7 @@ in modules // { propagatedBuildInputs = with self; [ pkgs.file ]; patchPhase = '' - substituteInPlace magic.py --replace "ctypes.util.find_library('magic')" "'${pkgs.file}/lib/libmagic.so'" + substituteInPlace magic.py --replace "ctypes.util.find_library('magic')" "'${pkgs.file}/lib/libmagic.${if stdenv.isDarwin then "dylib" else "so"}'" ''; doCheck = false; @@ -12427,12 +12458,12 @@ in modules // { m2crypto = buildPythonPackage rec { - version = "0.23.0"; + version = "0.24.0"; name = "m2crypto-${version}"; src = pkgs.fetchurl { url = "mirror://pypi/M/M2Crypto/M2Crypto-${version}.tar.gz"; - sha256 = "1ac3b6eafa5ff7e2a0796675316d7569b28aada45a7ab74042ad089d15a9567f"; + sha256 = "1s2y0pf2zg7xf4nfwrw7zhwbk615r5a7bgi5wwkwzh6jl50n99c0"; }; buildInputs = with self; [ pkgs.swig2 pkgs.openssl ]; @@ -20465,14 +20496,19 @@ in modules // { }); rpy2 = buildPythonPackage rec { - name = "rpy2-2.5.6"; + name = "rpy2-2.8.2"; disabled = isPyPy; src = pkgs.fetchurl { url = "mirror://pypi/r/rpy2/${name}.tar.gz"; - sha256 = "d0d584c435b5ed376925a95a4525dbe87de7fa9260117e9f208029e0c919ad06"; + sha256 = "2c1a313df4e64236dcfe1078ce847b8e3c180656c894928d3a4b391aacb9b24c"; }; buildInputs = with pkgs; [ readline R pcre lzma bzip2 zlib icu ]; - propagatedBuildInputs = [ self.singledispatch ]; + propagatedBuildInputs = with self; [ singledispatch six ]; + + # According to manual this is how the testsuite should be invoked + checkPhase = '' + ${python.interpreter} -m rpy2.tests + ''; meta = { homepage = http://rpy.sourceforge.net/rpy2; description = "Python interface to R";