Merge remote-tracking branch 'upstream/master' into hardened-stdenv

Changed files
+4188 -7148
lib
maintainers
nixos
pkgs
applications
audio
eq10q
pd-plugins
puremapping
zexy
plugin-torture
puredata
editors
emacs-25
geany
uemacs
vis
graphics
ImageMagick
gimp
pencil
shotwell
misc
emem
gpg-mdp
hugo
mediainfo
mediainfo-gui
multimon-ng
rxvt_unicode-plugins
urxvt-font-size
slic3r
wikicurses
networking
office
kmymoney
libreoffice
mendeley
planner
science
electronics
fritzing
logic
math
version-management
bitkeeper
git-and-tools
diff-so-fancy
guitone
video
virtualization
window-managers
build-support
docker
fetchmavenartifact
fetchurl
data
fonts
liberationsansnarrow
desktops
gnome-3
3.18
misc
gnome-packagekit
gnome-software
3.20
apps
evolution
core
evolution-data-server
gnome-online-accounts
gnome-session
gnome-software
games
gnome-sudoku
misc
gnome-packagekit
gspell
pidgin
kde-5
development
games
commandergenius
d1x-rebirth
d2x-rebirth
misc
emulators
ppsspp
themes
adapta
blackbird
vim-plugins
patches
vim2nix
additional-nix-code
os-specific
linux
busybox
firmware
firmware-linux-nonfree
fnotifystat
forkstat
lightum
lxc
powerstat
smemstat
servers
shells
oh-my-zsh
tools
archivers
p7zip
xarchiver
graphics
misc
disper
ethtool
fzf
gti
youtube-dl
networking
package-management
packagekit
security
keybase
minisign
nasty
sslscan
sudo
text
platinum-searcher
virtualization
top-level
+13 -7
.travis.yml
···
+
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
+1 -1
README.md
···
* [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)
+1 -1
default.nix
···
else
-
import ./pkgs/top-level
+
import ./pkgs/top-level/impure.nix
+2
lib/maintainers.nix
···
guibert = "David Guibert <david.guibert@gmail.com>";
havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
+
hce = "Hans-Christian Esperer <hc@hcesperer.org>";
henrytill = "Henry Till <henrytill@gmail.com>";
hiberno = "Christian Lask <hiberno@hiberno.net>";
hinton = "Tom Hinton <t@larkery.com>";
···
sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>";
shell = "Shell Turner <cam.turn@gmail.com>";
shlevy = "Shea Levy <shea@shealevy.com>";
+
siddharthist = "Langston Barrett <langston.barrett@gmail.com>";
simonvandel = "Simon Vandel Sillesen <simon.vandel@gmail.com>";
sjagoe = "Simon Jagoe <simon@simonjagoe.com>";
sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>";
+57 -46
maintainers/scripts/travis-nox-review-pr.sh
···
#! /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 '<nixpkgs>' --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
+
;;
+
+
nixos-options)
+
echo "=== Checking NixOS options"
+
+
nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr options --show-trace
+
;;
+
+
nixos-manual)
+
echo "=== Checking NixOS manuals"
+
+
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"
-
echo "=== Checking NixOS options"
-
nix-build nixos/release.nix -A options --show-trace
+
nix-shell --packages nixpkgs-lint --run "nixpkgs-lint -f $TRAVIS_BUILD_DIR"
+
;;
-
echo "=== Checking tarball creation"
-
nix-build pkgs/top-level/release.nix -A tarball --show-trace
-
fi
+
pr)
+
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
+
echo "=== No pull request found"
+
else
+
echo "=== Building pull request #$TRAVIS_PULL_REQUEST"
-
if [[ $TRAVIS_PULL_REQUEST == false ]]; then
-
echo "=== Not a pull request"
-
else
-
echo "=== Checking PR"
+
token=""
+
if [ -n "$GITHUB_TOKEN" ]; then
+
token="--token $GITHUB_TOKEN"
+
fi
-
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-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
+71 -82
nixos/modules/config/fonts/fontconfig-ultimate.nix
···
with lib;
let fcBool = x: if x then "<bool>true</bool>" else "<bool>false</bool>";
-
cfg = config.fonts.fontconfig.ultimate;
-
fontconfigUltimateConf = pkgs.writeText "ultimate-conf" ''
-
<?xml version="1.0"?>
-
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-
<fontconfig>
-
-
${optionalString (!cfg.allowBitmaps) ''
-
<!-- Reject bitmap fonts -->
-
<selectfont>
-
<rejectfont>
-
<pattern>
-
<patelt name="scalable"><bool>false</bool></patelt>
-
</pattern>
-
</rejectfont>
-
</selectfont>
-
''}
-
-
${optionalString cfg.allowType1 ''
-
<!-- Reject Type 1 fonts -->
-
<selectfont>
-
<rejectfont>
-
<pattern>
-
<patelt name="fontformat">
-
<string>Type 1</string>
-
</patelt>
-
</pattern>
-
</rejectfont>
-
</selectfont>
-
''}
-
-
<!-- Use embedded bitmaps in fonts like Calibri? -->
-
<match target="font">
-
<edit name="embeddedbitmap" mode="assign">
-
${fcBool cfg.useEmbeddedBitmaps}
-
</edit>
-
</match>
-
-
<!-- Force autohint always -->
-
<match target="font">
-
<edit name="force_autohint" mode="assign">
-
${fcBool cfg.forceAutohint}
-
</edit>
-
</match>
-
-
<!-- Render some monospace TTF fonts as bitmaps -->
-
<match target="pattern">
-
<edit name="bitmap_monospace" mode="assign">
-
${fcBool cfg.renderMonoTTFAsBitmap}
-
</edit>
-
</match>
-
-
</fontconfig>
-
'';
-
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
{
···
};
-
config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
+
config =
+
let ultimate = config.fonts.fontconfig.ultimate;
+
fontconfigUltimateConf = ''
+
<?xml version="1.0"?>
+
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+
<fontconfig>
+
+
${optionalString (!ultimate.allowBitmaps) ''
+
<!-- Reject bitmap fonts -->
+
<selectfont>
+
<rejectfont>
+
<pattern>
+
<patelt name="scalable"><bool>false</bool></patelt>
+
</pattern>
+
</rejectfont>
+
</selectfont>
+
''}
+
+
${optionalString ultimate.allowType1 ''
+
<!-- Reject Type 1 fonts -->
+
<selectfont>
+
<rejectfont>
+
<pattern>
+
<patelt name="fontformat">
+
<string>Type 1</string>
+
</patelt>
+
</pattern>
+
</rejectfont>
+
</selectfont>
+
''}
+
+
<!-- Use embedded bitmaps in fonts like Calibri? -->
+
<match target="font">
+
<edit name="embeddedbitmap" mode="assign">
+
${fcBool ultimate.useEmbeddedBitmaps}
+
</edit>
+
</match>
+
+
<!-- Force autohint always -->
+
<match target="font">
+
<edit name="force_autohint" mode="assign">
+
${fcBool ultimate.forceAutohint}
+
</edit>
+
</match>
+
+
<!-- Render some monospace TTF fonts as bitmaps -->
+
<match target="pattern">
+
<edit name="bitmap_monospace" mode="assign">
+
${fcBool ultimate.renderMonoTTFAsBitmap}
+
</edit>
+
</match>
+
+
${optionalString (ultimate.substitutions != "none") ''
+
<!-- Type 1 font substitutions -->
+
<include ignore_missing="yes">${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${ultimate.substitutions}</include>
+
''}
+
+
<include ignore_missing="yes">${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d</include>
+
+
</fontconfig>
+
'';
+
in mkIf (config.fonts.fontconfig.enable && ultimate.enable) {
-
fonts.fontconfig.confPkgs = [ confPkg ];
-
-
environment.variables = cfg.rendering;
+
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;
};
+128 -134
nixos/modules/config/fonts/fontconfig.nix
···
with lib;
-
let cfg = config.fonts.fontconfig;
-
fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
-
renderConf = pkgs.writeText "render-conf" ''
-
<?xml version='1.0'?>
-
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-
<fontconfig>
-
-
<!-- Default rendering settings -->
-
<match target="font">
-
<edit mode="assign" name="hinting">
-
${fcBool cfg.hinting.enable}
-
</edit>
-
<edit mode="assign" name="autohint">
-
${fcBool cfg.hinting.autohint}
-
</edit>
-
<edit mode="assign" name="hintstyle">
-
<const>hint${cfg.hinting.style}</const>
-
</edit>
-
<edit mode="assign" name="antialias">
-
${fcBool cfg.antialias}
-
</edit>
-
<edit mode="assign" name="rgba">
-
<const>${cfg.subpixel.rgba}</const>
-
</edit>
-
<edit mode="assign" name="lcdfilter">
-
<const>lcd${cfg.subpixel.lcdfilter}</const>
-
</edit>
-
</match>
-
-
${optionalString (cfg.dpi != 0) ''
-
<match target="pattern">
-
<edit name="dpi" mode="assign">
-
<double>${toString cfg.dpi}</double>
-
</edit>
-
</match>
-
''}
-
-
</fontconfig>
-
'';
-
genericAliasConf =
-
let genDefault = fonts: name:
-
optionalString (fonts != []) ''
-
<alias>
-
<family>${name}</family>
-
<prefer>
-
${concatStringsSep ""
-
(map (font: ''
-
<family>${font}</family>
-
'') fonts)}
-
</prefer>
-
</alias>
-
'';
-
in
-
pkgs.writeText "generic-alias-conf" ''
-
<?xml version='1.0'?>
-
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-
<fontconfig>
-
-
<!-- Default fonts -->
-
${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
-
-
${genDefault cfg.defaultFonts.serif "serif"}
-
-
${genDefault cfg.defaultFonts.monospace "monospace"}
-
-
</fontconfig>
-
'';
-
cacheConf = let
-
cache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
-
in
-
pkgs.writeText "cache-conf" ''
-
<?xml version='1.0'?>
-
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-
<fontconfig>
-
<!-- Font directories -->
-
${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
-
<!-- Pre-generated font caches -->
-
<cachedir>${cache pkgs.fontconfig}</cachedir>
-
${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
-
<cachedir>${cache pkgs.pkgsi686Linux.fontconfig}</cachedir>
-
''}
-
</fontconfig>
-
'';
-
userConf = pkgs.writeText "user-conf" ''
-
<?xml version="1.0"?>
-
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-
<fontconfig>
-
<include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
-
<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
-
</fontconfig>
-
'';
-
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 = {
···
running X11 applications or any other program that uses
Fontconfig, you can turn this option off and prevent a
dependency on all those fonts.
-
'';
-
};
-
-
confPkgs = mkOption {
-
internal = true;
-
type = with types; listOf path;
-
default = [ ];
-
description = ''
-
Fontconfig configuration packages.
'';
};
···
};
-
config = mkIf cfg.enable {
-
fonts.fontconfig.confPkgs = [ confPkg ];
+
config =
+
let fontconfig = config.fonts.fontconfig;
+
fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
+
renderConf = ''
+
<?xml version='1.0'?>
+
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+
<fontconfig>
-
environment.etc.fonts.source =
-
let fontConf = pkgs.symlinkJoin {
-
name = "fontconfig-etc";
-
paths = cfg.confPkgs;
-
};
-
in "${fontConf}/etc/fonts/";
+
<!-- Default rendering settings -->
+
<match target="font">
+
<edit mode="assign" name="hinting">
+
${fcBool fontconfig.hinting.enable}
+
</edit>
+
<edit mode="assign" name="autohint">
+
${fcBool fontconfig.hinting.autohint}
+
</edit>
+
<edit mode="assign" name="hintstyle">
+
<const>hint${fontconfig.hinting.style}</const>
+
</edit>
+
<edit mode="assign" name="antialias">
+
${fcBool fontconfig.antialias}
+
</edit>
+
<edit mode="assign" name="rgba">
+
<const>${fontconfig.subpixel.rgba}</const>
+
</edit>
+
<edit mode="assign" name="lcdfilter">
+
<const>lcd${fontconfig.subpixel.lcdfilter}</const>
+
</edit>
+
</match>
+
+
${optionalString (fontconfig.dpi != 0) ''
+
<match target="pattern">
+
<edit name="dpi" mode="assign">
+
<double>${toString fontconfig.dpi}</double>
+
</edit>
+
</match>
+
''}
+
+
</fontconfig>
+
'';
+
genericAliasConf = ''
+
<?xml version='1.0'?>
+
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+
<fontconfig>
+
+
<!-- Default fonts -->
+
${optionalString (fontconfig.defaultFonts.sansSerif != []) ''
+
<alias>
+
<family>sans-serif</family>
+
<prefer>
+
${concatStringsSep "\n"
+
(map (font: "<family>${font}</family>")
+
fontconfig.defaultFonts.sansSerif)}
+
</prefer>
+
</alias>
+
''}
+
${optionalString (fontconfig.defaultFonts.serif != []) ''
+
<alias>
+
<family>serif</family>
+
<prefer>
+
${concatStringsSep "\n"
+
(map (font: "<family>${font}</family>")
+
fontconfig.defaultFonts.serif)}
+
</prefer>
+
</alias>
+
''}
+
${optionalString (fontconfig.defaultFonts.monospace != []) ''
+
<alias>
+
<family>monospace</family>
+
<prefer>
+
${concatStringsSep "\n"
+
(map (font: "<family>${font}</family>")
+
fontconfig.defaultFonts.monospace)}
+
</prefer>
+
</alias>
+
''}
+
+
</fontconfig>
+
'';
+
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 ''
+
<?xml version='1.0'?>
+
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+
<fontconfig>
+
<!-- Font directories -->
+
${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
+
<!-- Pre-generated font caches -->
+
<cachedir>${cache pkgs.fontconfig}</cachedir>
+
${optionalString (pkgs.stdenv.isx86_64 && config.fonts.fontconfig.cache32Bit) ''
+
<cachedir>${cache pkgs.pkgsi686Linux.fontconfig}</cachedir>
+
''}
+
</fontconfig>
+
'';
-
environment.systemPackages = [ pkgs.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 = ''
+
<?xml version="1.0"?>
+
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+
<fontconfig>
+
<include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
+
<include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
+
</fontconfig>
+
'';
+
};
+
+
environment.systemPackages = [ pkgs.fontconfig ];
+
+
};
}
+1
nixos/modules/config/pulseaudio.nix
···
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no";
Restart = "on-failure";
};
+
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
};
sockets.pulseaudio = {
+3
nixos/modules/module-list.nix
···
./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
···
./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
···
./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
+10 -10
nixos/modules/security/grsecurity.nix
···
|| 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;
···
description = ''
Whether to automatically lock grsecurity tunables
(<option>boot.kernel.sysctl."kernel.grsecurity.*"</option>). Disable
-
this to allow configuration of grsecurity features while the system is
-
running. The lock can be manually engaged by activating the
-
<literal>grsec-lock</literal> service unit.
+
this to allow runtime configuration of grsecurity features. Activate
+
the <literal>grsec-lock</literal> service unit to prevent further
+
configuration until the next reboot.
'';
};
···
(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 ];
···
# 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
···
"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;
+1 -1
nixos/modules/services/continuous-integration/jenkins/default.nix
···
'';
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}
+1 -1
nixos/modules/services/misc/cgminer.nix
···
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";
};
+61
nixos/modules/services/misc/packagekit.nix
···
+
{ 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;
+
+
};
+
+
}
+44
nixos/modules/services/misc/sonarr.nix
···
+
{ 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";
+
};
+
+
};
+
}
+17
nixos/modules/services/monitoring/grafana.nix
···
envOptions = {
PATHS_DATA = cfg.dataDir;
+
PATHS_PLUGINS = "${cfg.dataDir}/plugins";
PATHS_LOGS = "${cfg.dataDir}/log";
SERVER_PROTOCOL = cfg.protocol;
···
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;
···
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 = {
···
"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"];
···
};
preStart = ''
ln -fs ${cfg.package}/share/grafana/conf ${cfg.dataDir}
+
ln -fs ${cfg.package}/share/grafana/vendor ${cfg.dataDir}
'';
};
+80
nixos/modules/services/monitoring/sysstat.nix
···
+
{ 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";
+
};
+
};
+
}
+225
nixos/modules/services/x11/compton.nix
···
+
{ 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 <literal>compton(1)</literal> 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 <literal>compton(1)</literal> 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: <literal>glx</literal> or <literal>xrender</literal>.
+
'';
+
};
+
+
vSync = mkOption {
+
type = types.str;
+
default = "none";
+
example = "opengl-swc";
+
description = ''
+
Enable vertical synchronization using the specified method.
+
See <literal>compton(1)</literal> 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 ];
+
};
+
+
}
+1
nixos/modules/services/x11/desktop-managers/gnome3.nix
···
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
+47 -3
nixos/modules/services/x11/desktop-managers/kde5.nix
···
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;
}
···
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
···
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
+1 -1
nixos/modules/services/x11/display-managers/default.nix
···
${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
''}
+96 -4
nixos/modules/services/x11/display-managers/lightdm.nix
···
let
-
dmcfg = config.services.xserver.displayManager;
+
xcfg = config.services.xserver;
+
dmcfg = xcfg.displayManager;
xEnv = config.systemd.services."display-manager".environment;
cfg = dmcfg.lightdm;
···
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
···
};
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 = ''
···
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 <option>autoLogin.user</option>.
+
'';
+
};
+
+
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 = {
···
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;
+5 -4
nixos/modules/services/x11/display-managers/sddm.nix
···
${cfg.stopScript}
'';
+
cfgFile = pkgs.writeText "sddm.conf" ''
[General]
HaltCommand=${pkgs.systemd}/bin/systemctl poweroff
···
type = types.bool;
default = false;
description = ''
-
Automatically log in as the sepecified <option>autoLogin.user</option>.
+
Automatically log in as <option>autoLogin.user</option>.
'';
};
···
type = types.nullOr types.str;
default = null;
description = ''
-
User to be used for the autologin.
+
User to be used for the automatic login.
'';
};
···
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.
'';
};
};
+2
nixos/modules/services/x11/hardware/libinput.nix
···
environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ];
+
services.udev.packages = [ pkgs.libinput ];
+
services.xserver.config =
''
# Automatically enable the libinput driver for all touchpads.
+1 -1
nixos/modules/services/x11/redshift.nix
···
RestartSec = 3;
Restart = "always";
};
-
environment = { DISPLAY = ":0"; };
+
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
};
};
+1 -7
nixos/modules/services/x11/unclutter.nix
···
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;
···
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} \
+1
nixos/modules/services/x11/window-managers/default.nix
···
./jwm.nix
./metacity.nix
./openbox.nix
+
./pekwm.nix
./notion.nix
./ratpoison.nix
./sawfish.nix
+25
nixos/modules/services/x11/window-managers/pekwm.nix
···
+
{ 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 ];
+
};
+
}
+4 -22
nixos/modules/system/boot/luksroot.nix
···
${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
}
···
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
···
$out/bin/ykinfo -V
$out/bin/openssl-wrap version
''}
-
'';
-
-
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);
+11 -1
nixos/modules/system/boot/plymouth.nix
···
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
···
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
'';
};
+1 -2
nixos/modules/system/boot/stage-1-init.sh
···
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.
+9 -1
nixos/modules/system/boot/stage-1.nix
···
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);
···
description = ''
Shell commands to be executed immediately after the stage 1
filesystems have been mounted.
+
'';
+
};
+
+
boot.initrd.preFailCommands = mkOption {
+
default = "";
+
type = types.lines;
+
description = ''
+
Shell commands to be executed before the failure prompt is shown.
'';
};
+1 -1
nixos/modules/system/boot/systemd-lib.nix
···
${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/
+9 -2
nixos/modules/system/boot/systemd.nix
···
"systemd-poweroff.service"
"halt.target"
"systemd-halt.service"
-
"ctrl-alt-del.target"
"shutdown.target"
"umount.target"
"final.target"
···
"systemd-hostnamed.service"
"systemd-binfmt.service"
]
-
++ cfg.additionalUpstreamSystemUnits;
upstreamSystemWants =
···
default = "multi-user.target";
type = types.str;
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 {
+17 -1
nixos/modules/tasks/filesystems/zfs.nix
···
("$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" ]; };
+2 -18
nixos/modules/virtualisation/containers.nix
···
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"
···
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"
'';
···
networking.dhcpcd.denyInterfaces = [ "ve-*" ];
-
environment.systemPackages = [ nixos-container ];
+
environment.systemPackages = [ pkgs.nixos-container ];
});
}
nixos/modules/virtualisation/nixos-container-completion.sh pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh
nixos/modules/virtualisation/nixos-container.pl pkgs/tools/virtualization/nixos-container/nixos-container.pl
+3 -1
nixos/modules/virtualisation/qemu-vm.nix
···
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))
'')}
+1
nixos/release.nix
···
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 {};
+42
nixos/tests/hibernate.nix
···
+
# 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");
+
'';
+
+
})
+4
nixos/tests/installer.nix
···
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 ];
+3 -3
pkgs/applications/audio/eq10q/default.nix
···
{ 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 ];
+3 -2
pkgs/applications/audio/pd-plugins/puremapping/default.nix
···
{ 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";
};
-1
pkgs/applications/audio/pd-plugins/zexy/default.nix
···
for i in ${puredata}/include/pd/*; do
ln -s $i .
done
-
patchShebangs
./bootstrap.sh
./configure --enable-lpt=no --prefix=$out
'';
+9 -8
pkgs/applications/audio/plugin-torture/default.nix
···
-
{ 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 ];
···
installPhase = ''
mkdir -p $out/bin
cp plugin-torture $out/bin/
-
cp README $out/bin/
+
cp find-safe-plugins $out/bin/
'';
meta = with stdenv.lib; {
+3 -3
pkgs/applications/audio/puredata/default.nix
···
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 = ''
+7 -3
pkgs/applications/editors/emacs-25/default.nix
···
, autoconf, automake
, withX ? !stdenv.isDarwin
, withGTK3 ? false, gtk3 ? null
+
, withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null
, withGTK2 ? true, gtk2
}:
···
assert withGTK3 -> withX || stdenv.isDarwin;
assert withGTK2 -> !withGTK3 && gtk2 != null;
assert withGTK3 -> !withGTK2 && gtk3 != null;
+
assert withXwidgets -> withGTK3 && webkitgtk24x != null;
let
toolkit =
···
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";
+2
pkgs/applications/editors/geany/with-vte.nix
···
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
"
+38
pkgs/applications/editors/uemacs/default.nix
···
+
{ 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;
+
};
+
}
+21 -14
pkgs/applications/editors/vis/default.nix
···
-
{ 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";
};
···
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;";
···
--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 ];
};
}
-
+2 -2
pkgs/applications/graphics/ImageMagick/default.nix
···
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.
+6 -13
pkgs/applications/graphics/ImageMagick/imagetragick.patch
···
-
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 @@
-
<!-- <policy domain="resource" name="time" value="3600"/> -->
-
<!-- <policy domain="system" name="precision" value="6"/> -->
-
<policy domain="cache" name="shared-secret" value="passphrase"/>
-
+
-
+ <policy domain="coder" rights="none" pattern="EPHEMERAL" />
-
+ <policy domain="coder" rights="none" pattern="URL" />
-
+ <policy domain="coder" rights="none" pattern="HTTPS" />
-
+ <policy domain="coder" rights="none" pattern="MVG" />
-
+ <policy domain="coder" rights="none" pattern="MSL" />
-
</policymap>
+
67a68,72
+
> <policy domain="coder" rights="none" pattern="EPHEMERAL" />
+
> <policy domain="coder" rights="none" pattern="URL" />
+
> <policy domain="coder" rights="none" pattern="HTTPS" />
+
> <policy domain="coder" rights="none" pattern="MVG" />
+
> <policy domain="coder" rights="none" pattern="MSL" />
+2 -2
pkgs/applications/graphics/gimp/2.8.nix
···
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)
···
src = fetchurl {
url = "http://download.gimp.org/pub/gimp/v2.8/${name}.tar.bz2";
-
sha256 = "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm";
+
sha256 = "0halh6sl3d2j9gahyabj6h6r3yyldcy7sfb4qrfazpkqqr3j5p9r";
};
buildInputs =
+3
pkgs/applications/graphics/pencil/default.nix
···
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;
};
}
+7 -5
pkgs/applications/graphics/shotwell/default.nix
···
{ 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";
···
'';
-
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
+2 -2
pkgs/applications/misc/emem/default.nix
···
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 = [ ];
+34
pkgs/applications/misc/gpg-mdp/default.nix
···
+
{ 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
+
'';
+
}
+18
pkgs/applications/misc/hugo/default.nix
···
+
{ 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;
+
}
+44
pkgs/applications/misc/hugo/deps.json
···
+
[
+
{
+
"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"
+
]
+
}
+
]
+2 -2
pkgs/applications/misc/mediainfo-gui/default.nix
···
, 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 ];
+2 -2
pkgs/applications/misc/mediainfo/default.nix
···
{ 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 ];
+2
pkgs/applications/misc/multimon-ng/default.nix
···
nativeBuildInputs = [ qmake4Hook ];
+
qmakeFlags = [ "multimon-ng.pro" ];
+
installPhase = ''
mkdir -p $out/bin
cp multimon-ng $out/bin
+3 -2
pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix
···
-
{ stdenv, fetchFromGitHub, xrdb }:
+
{ stdenv, fetchFromGitHub, xrdb, xlsfonts }:
stdenv.mkDerivation {
name = "urxvt-font-size-2015-05-22";
···
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
+1 -1
pkgs/applications/misc/slic3r/default.nix
···
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 {
+22
pkgs/applications/misc/wikicurses/default.nix
···
+
{ 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;
+
};
+
+
}
+
+3 -3
pkgs/applications/networking/bittorrentsync/2.0.x.nix
···
{ 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";
};
})
+183 -183
pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
···
# 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"; }
];
}
+2 -12
pkgs/applications/networking/browsers/firefox-bin/default.nix
···
, 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;
···
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";
-12
pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix
···
-
# 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"; }
-
];
-
}
+2 -2
pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
···
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)
···
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')
-53
pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb
···
-
#!/usr/bin/env ruby
-
require "open-uri"
-
-
version =
-
if ARGV.empty?
-
$stderr.puts("Usage: ruby generate_sources_dev.rb <version> > 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
+182 -182
pkgs/applications/networking/browsers/firefox-bin/sources.nix
···
{
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"; }
];
}
+8 -4
pkgs/applications/networking/instant-messengers/teamspeak/client.nix
···
stdenv.mkDerivation rec {
name = "teamspeak-client-${version}";
-
version = "3.0.19.1";
+
version = "3.0.19.3";
src = fetchurl {
urls = [
···
"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
···
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;
};
+11 -3
pkgs/applications/networking/mailreaders/mutt/default.nix
···
-
{ stdenv, fetchurl, ncurses, which, perl, autoreconfHook
+
{ stdenv, fetchurl, fetchpatch, ncurses, which, perl, autoreconfHook
, gdbm ? null
, openssl ? null
, cyrus_sasl ? null
···
++ 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";
-4450
pkgs/applications/networking/mailreaders/mutt/sidebar.patch
···
-
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 : _("<default>"));
-
+ printw (TITLE_FMT "%s", _("sign as: "), PgpSignAs ? PgpSignAs : _("<default>"));
-
-
if ((WithCrypto & APPLICATION_SMIME)
-
&& (msg->security & APPLICATION_SMIME) && (msg->security & SIGN)) {
-
- printw ("%s%s", _(" sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
-
+ printw (TITLE_FMT "%s", _("sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
-
}
-
-
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 = "<random>";
-
-
- 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 @@
-
-
</sect2>
-
-
+<sect2 id="intro-sidebar">
-
+ <title>Sidebar</title>
-
+ <para>
-
+ 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.
-
+ </para>
-
+ <para>
-
+ This part of the manual is suitable for beginners.
-
+ If you already know Mutt you could skip ahead to the main
-
+ <link linkend="sidebar">Sidebar guide</link>.
-
+ If you just want to get started, you could use the sample
-
+ <link linkend="sidebar-muttrc">Sidebar muttrc</link>.
-
+ </para>
-
+ <para>
-
+ This version of Sidebar is based on Terry Chan's
-
+ <ulink url="http://www.lunar-linux.org/mutt-sidebar/">2015-11-11 release</ulink>.
-
+ It contains many
-
+ <emphasis role="bold"><link linkend="intro-sidebar-features">new features</link></emphasis>,
-
+ lots of
-
+ <emphasis role="bold"><link linkend="intro-sidebar-bugfixes">bugfixes</link></emphasis>
-
+ and a generous helping of
-
+ <emphasis role="bold">new documentation</emphasis> which you are already reading.
-
+ </para>
-
+ <para>
-
+ To check if Mutt supports <quote>Sidebar</quote>, look for the string
-
+ <literal>+USE_SIDEBAR</literal> in the mutt version.
-
+ </para>
-
+<screen>
-
+mutt -v
-
+</screen>
-
+ <para>
-
+ <emphasis role="bold">Let's turn on the Sidebar:</emphasis>
-
+ </para>
-
+ <screen>set sidebar_visible</screen>
-
+ <para>
-
+ You will see something like this.
-
+ A list of mailboxes on the left.
-
+ A list of emails, from the selected mailbox, on the right.
-
+ </para>
-
+<screen>
-
+<emphasis role="indicator">Fruit [1] 3/8</emphasis>| 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
-
+ |<emphasis role="indicator"> 6 N + Mar 24 Samuel Harris (353) Tangerine </emphasis>
-
+ | 7 N + Sep 05 Sofia Graham (335) Cherry
-
+ | 8 N Sep 16 Ewan Brown (105) Ugli
-
+ |
-
+ |
-
+</screen>
-
+<para>
-
+ This user has four mailboxes: <quote>Fruit</quote>,
-
+ <quote>Cars</quote>, <quote>Animals</quote> and
-
+ <quote>Seas</quote>.
-
+</para>
-
+<para>
-
+ The current, open, mailbox is <quote>Fruit</quote>. We can
-
+ also see information about the other mailboxes. For example:
-
+ The <quote>Animals</quote> mailbox contains, 1 flagged email, 2
-
+ new emails out of a total of 6 emails.
-
+</para>
-
+ <sect3 id="intro-sidebar-navigation">
-
+ <title>Navigation</title>
-
+ <para>
-
+ The Sidebar adds some new <link linkend="sidebar-functions">functions</link>
-
+ to Mutt.
-
+ </para>
-
+ <para>
-
+ The user pressed the <quote>c</quote> key to
-
+ <literal>&lt;change-folder&gt;</literal> to the
-
+ <quote>Animals</quote> mailbox. The Sidebar automatically
-
+ updated the indicator to match.
-
+ </para>
-
+<screen>
-
+Fruit [1] 3/8| 1 Jan 03 Tia Gibson (362) Caiman
-
+<emphasis role="indicator">Animals [1] 2/6</emphasis>| 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
-
+ |<emphasis role="indicator"> 5 N + Nov 12 Evelyn Rogers (453) Tapir </emphasis>
-
+ | 6 N + Nov 16 Callum Harrison (498) Hedgehog
-
+ |
-
+ |
-
+ |
-
+ |
-
+</screen>
-
+ <para>
-
+ Let's map some functions:
-
+ </para>
-
+<screen>
-
+bind index,pager \CP sidebar-prev <emphasis role="comment"># Ctrl-Shift-P - Previous Mailbox</emphasis>
-
+bind index,pager \CN sidebar-next <emphasis role="comment"># Ctrl-Shift-N - Next Mailbox</emphasis>
-
+bind index,pager \CO sidebar-open <emphasis role="comment"># Ctrl-Shift-O - Open Highlighted Mailbox</emphasis>
-
+</screen>
-
+ <para>
-
+ Press <quote>Ctrl-Shift-N</quote> (Next mailbox) twice will
-
+ move the Sidebar <emphasis role="bold">highlight</emphasis> to
-
+ down to the <quote>Seas</quote> mailbox.
-
+ </para>
-
+<screen>
-
+Fruit [1] 3/8| 1 Jan 03 Tia Gibson (362) Caiman
-
+<emphasis role="indicator">Animals [1] 2/6</emphasis>| 2 + Jan 22 Rhys Lee ( 48) Dolphin
-
+Cars 4| 3 ! Aug 16 Ewan Brown (333) Hummingbird
-
+<emphasis role="highlight">Seas 1/7</emphasis>| 4 Sep 25 Grace Hall ( 27) Capybara
-
+ |<emphasis role="indicator"> 5 N + Nov 12 Evelyn Rogers (453) Tapir </emphasis>
-
+ | 6 N + Nov 16 Callum Harrison (498) Hedgehog
-
+ |
-
+ |
-
+ |
-
+ |
-
+</screen>
-
+ <note>
-
+ Functions <literal>&lt;sidebar-next&gt;</literal> and
-
+ <literal>&lt;sidebar-prev&gt;</literal> move the Sidebar
-
+ <emphasis role="bold">highlight</emphasis>.
-
+ They <emphasis role="bold">do not</emphasis> change the open
-
+ mailbox.
-
+ </note>
-
+ <para>
-
+ Press <quote>Ctrl-Shift-O</quote>
-
+ (<literal>&lt;sidebar-open&gt;</literal>)
-
+ to open the highlighted mailbox.
-
+ </para>
-
+<screen>
-
+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
-
+<emphasis role="indicator">Seas 1/7</emphasis>|<emphasis role="indicator"> 4 N + Feb 23 Isla Hussain (348) Balearic Sea </emphasis>
-
+ |
-
+ |
-
+ |
-
+ |
-
+ |
-
+ |
-
+</screen>
-
+ </sect3>
-
+ <sect3 id="intro-sidebar-features">
-
+ <title>Features</title>
-
+ <para>
-
+ The Sidebar shows a list of mailboxes in a panel.
-
+ <para>
-
+ </para>
-
+ Everything about the Sidebar can be configured.
-
+ </para>
-
+ <itemizedlist>
-
+ <title><link linkend="intro-sidebar-basics">State of the Sidebar</link></title>
-
+ <listitem><para>Visibility</para></listitem>
-
+ <listitem><para>Width</para></listitem>
-
+ </itemizedlist>
-
+ <itemizedlist>
-
+ <title><link linkend="intro-sidebar-limit">Which mailboxes are displayed</link></title>
-
+ <listitem><para>Display all</para></listitem>
-
+ <listitem><para>Limit to mailboxes with new mail</para></listitem>
-
+ <listitem><para>Whitelist mailboxes to display always</para></listitem>
-
+ </itemizedlist>
-
+ <itemizedlist>
-
+ <title><link linkend="sidebar-sort">The order in which mailboxes are displayed</link></title>
-
+ <title></title>
-
+ <listitem><para>Unsorted (order of mailboxes commands)</para></listitem>
-
+ <listitem><para>Sorted alphabetically</para></listitem>
-
+ <listitem><para>Sorted by number of new mails</para></listitem>
-
+ </itemizedlist>
-
+ <itemizedlist>
-
+ <title><link linkend="intro-sidebar-colors">Color</link></title>
-
+ <listitem><para>Sidebar indicators and divider</para></listitem>
-
+ <listitem><para>Mailboxes depending on their type</para></listitem>
-
+ <listitem><para>Mailboxes depending on their contents</para></listitem>
-
+ </itemizedlist>
-
+ <itemizedlist>
-
+ <title><link linkend="sidebar-functions">Key bindings</link></title>
-
+ <listitem><para>Hide/Unhide the Sidebar</para></listitem>
-
+ <listitem><para>Select previous/next mailbox</para></listitem>
-
+ <listitem><para>Select previous/next mailbox with new mail</para></listitem>
-
+ <listitem><para>Page up/down through a list of mailboxes</para></listitem>
-
+ </itemizedlist>
-
+ <itemizedlist>
-
+ <title>Misc</title>
-
+ <listitem><para><link linkend="intro-sidebar-format">Formatting string for mailbox</link></para></listitem>
-
+ <listitem><para><link linkend="sidebar-next-new-wrap">Wraparound searching</link></para></listitem>
-
+ <listitem><para><link linkend="intro-sidebar-abbrev">Flexible mailbox abbreviations</link></para></listitem>
-
+ <listitem><para>Support for Unicode mailbox names (utf-8)</para></listitem>
-
+ </itemizedlist>
-
+ </sect3>
-
+ <sect3 id="intro-sidebar-display">
-
+ <title>Display</title>
-
+ <para>
-
+ Everything about the Sidebar can be configured.
-
+ </para>
-
+ <itemizedlist>
-
+ <title>For a quick reference:</title>
-
+ <listitem><para><link linkend="sidebar-variables">Sidebar variables to set</link> </para></listitem>
-
+ <listitem><para><link linkend="sidebar-colors">Sidebar colors to apply</link></para></listitem>
-
+ <listitem><para><link linkend="sidebar-sort">Sidebar sort methods</link></para></listitem>
-
+ </itemizedlist>
-
+ <sect4 id="intro-sidebar-basics">
-
+ <title>Sidebar Basics</title>
-
+ <para>
-
+ The most important variable is <literal>$sidebar_visible</literal>.
-
+ You can set this in your <quote>muttrc</quote>, or bind a key to the
-
+ function <literal>&lt;sidebar-toggle-visible&gt;</literal>.
-
+ </para>
-
+<screen>
-
+set sidebar_visible <emphasis role="comment"># Make the Sidebar visible by default</emphasis>
-
+bind index,pager B sidebar-toggle-visible <emphasis role="comment"># Use 'B' to switch the Sidebar on and off</emphasis>
-
+</screen>
-
+ <para>
-
+ 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.
-
+ </para>
-
+ <para>
-
+ 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.
-
+ </para>
-
+<screen>
-
+set sidebar_width = 25 <emphasis role="comment"># Plenty of space</emphasis>
-
+set sidebar_divider_char = '│' <emphasis role="comment"># Pretty line-drawing character</emphasis>
-
+</screen>
-
+ </sect4>
-
+ <sect4 id="intro-sidebar-format">
-
+ <title>Sidebar Format String</title>
-
+ <para>
-
+ <literal>$sidebar_format</literal> allows you to customize the Sidebar display.
-
+ For an introduction, read <link linkend="index-format">format strings</link>
-
+ including the section about <link linkend="formatstrings-conditionals">conditionals</link>.
-
+ </para>
-
+ <para>
-
+ The default value is <literal>%B%?F? [%F]?%* %?N?%N/?%S</literal>
-
+ </para>
-
+ <itemizedlist>
-
+ <title>Which breaks down as:</title>
-
+ <listitem><para><literal>%B</literal> - Mailbox name</para></listitem>
-
+ <listitem><para><literal>%?F? [%F]?</literal> - If flagged emails <literal>[%F]</literal>, otherwise nothing</para></listitem>
-
+ <listitem><para><literal>%* </literal> - Pad with spaces</para></listitem>
-
+ <listitem><para><literal>%?N?%N/?</literal> - If new emails <literal>%N/</literal>, otherwise nothing</para></listitem>
-
+ <listitem><para><literal>%S</literal> - Total number of emails</para></listitem>
-
+ </itemizedlist>
-
+ <table>
-
+ <title>sidebar_format</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Format</entry>
-
+ <entry>Notes</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry>%B</entry>
-
+ <entry></entry>
-
+ <entry>Name of the mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%S</entry>
-
+ <entry>*</entry>
-
+ <entry>Size of mailbox (total number of messages)</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%N</entry>
-
+ <entry>*</entry>
-
+ <entry>Number of New messages in the mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%F</entry>
-
+ <entry>*</entry>
-
+ <entry>Number of Flagged messages in the mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%!</entry>
-
+ <entry></entry>
-
+ <entry>
-
+ <quote>!</quote>: one flagged message;
-
+ <quote>!!</quote>: two flagged messages;
-
+ <quote>n!</quote>: n flagged messages (for n &gt; 2).
-
+ Otherwise prints nothing.
-
+ </entry>
-
+ </row>
-
+ <row>
-
+ <entry>%d</entry>
-
+ <entry>* ‡</entry>
-
+ <entry>Number of deleted messages</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%L</entry>
-
+ <entry>* ‡</entry>
-
+ <entry>Number of messages after limiting</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%t</entry>
-
+ <entry>* ‡</entry>
-
+ <entry>Number of tagged messages</entry>
-
+ </row>
-
+ <row>
-
+ <entry>%&gt;X</entry>
-
+ <entry></entry>
-
+ <entry>Right justify the rest of the string and pad with <quote>X</quote></entry>
-
+ </row>
-
+ <row>
-
+ <entry>%|X</entry>
-
+ <entry></entry>
-
+ <entry>Pad to the end of the line with
-
+ <quote>X</quote></entry>
-
+ </row>
-
+ <row>
-
+ <entry>%*X</entry>
-
+ <entry></entry>
-
+ <entry>Soft-fill with character <quote>X</quote>as pad</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ <para>
-
+ * = Can be optionally printed if nonzero
-
+ </para>
-
+ <para>
-
+ ‡ = Only applicable to the current folder
-
+ </para>
-
+ <para>
-
+ Here are some examples.
-
+ They show the number of (F)lagged, (N)ew and (S)ize.
-
+ </para>
-
+ <table>
-
+ <title>sidebar_format</title>
-
+ <tgroup cols="2">
-
+ <thead>
-
+ <row>
-
+ <entry>Format</entry>
-
+ <entry>Example</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>
-
+ <entry><screen>mailbox [F] N/S</screen></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>%B%* %F:%N:%S</literal></entry>
-
+ <entry><screen>mailbox F:N:S</screen></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>%B %?N?(%N)?%* %S</literal></entry>
-
+ <entry><screen>mailbox (N) S</screen></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>%B%* ?F?%F/?%N</literal></entry>
-
+ <entry><screen>mailbox F/S</screen></entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect4>
-
+ <sect4 id="intro-sidebar-abbrev">
-
+ <title>Abbreviating Mailbox Names</title>
-
+ <para>
-
+ <literal>$sidebar_delim_chars</literal> tells Sidebar
-
+ how to split up mailbox paths. For local directories
-
+ use <quote>/</quote>; for IMAP folders use <quote>.</quote>
-
+ </para>
-
+ <sect5 id="intro-sidebar-abbrev-ex1">
-
+ <title>Example 1</title>
-
+ <para>
-
+ This example works well if your mailboxes have unique names
-
+ after the last separator.
-
+ </para>
-
+ <para>
-
+ Add some mailboxes of diffent depths.
-
+ </para>
-
+<screen>
-
+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
-
+</screen>
-
+ <para>
-
+ Shorten the names:
-
+ </para>
-
+<screen>
-
+set sidebar_short_path <emphasis role="comment"># Shorten mailbox names</emphasis>
-
+set sidebar_delim_chars="/" <emphasis role="comment"># Delete everything up to the last / character</emphasis>
-
+</screen>
-
+ <para>
-
+ The screenshot below shows what the Sidebar would look like
-
+ before and after shortening.
-
+ </para>
-
+<screen>
-
+|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
-
+</screen>
-
+ </sect5>
-
+ <sect5 id="intro-sidebar-abbrev-ex2">
-
+ <title>Example 2</title>
-
+ <para>
-
+ This example works well if you have lots of mailboxes which are arranged
-
+ in a tree.
-
+ </para>
-
+ <para>
-
+ Add some mailboxes of diffent depths.
-
+ </para>
-
+<screen>
-
+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
-
+</screen>
-
+ <para>
-
+ Shorten the names:
-
+ </para>
-
+<screen>
-
+set sidebar_short_path <emphasis role="comment"># Shorten mailbox names</emphasis>
-
+set sidebar_delim_chars="/" <emphasis role="comment"># Delete everything up to the last / character</emphasis>
-
+set sidebar_folder_indent <emphasis role="comment"># Indent folders whose names we've shortened</emphasis>
-
+set sidebar_indent_string=" " <emphasis role="comment"># Indent with two spaces</emphasis>
-
+</screen>
-
+ <para>
-
+ The screenshot below shows what the Sidebar would look like
-
+ before and after shortening.
-
+ </para>
-
+<screen>
-
+|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
-
+</screen>
-
+ <para>
-
+ 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).
-
+ </para>
-
+ </sect5>
-
+ </sect4>
-
+ <sect4 id="intro-sidebar-limit">
-
+ <title>Limiting the Number of Mailboxes</title>
-
+ <para>
-
+ If you have a lot of mailboxes, sometimes it can be useful to hide
-
+ the ones you aren't using. <literal>$sidebar_new_mail_only</literal>
-
+ tells Sidebar to only show mailboxes that contain new, or flagged, email.
-
+ </para>
-
+ <para>
-
+ If you want some mailboxes to be always visible, then use the
-
+ <literal>sidebar_whitelist</literal> command. It takes a list of
-
+ mailboxes as parameters.
-
+ </para>
-
+<screen>
-
+set sidebar_new_mail_only <emphasis role="comment"># Only mailboxes with new/flagged email</emphasis>
-
+sidebar_whitelist fruit fruit/apple <emphasis role="comment"># Always display these two mailboxes</emphasis>
-
+</screen>
-
+ </sect4>
-
+ </sect3>
-
+ <sect3 id="intro-sidebar-colors">
-
+ <title>Colors</title>
-
+ <para>
-
+ Here is a sample color scheme:
-
+ </para>
-
+<screen>
-
+color sidebar_indicator default color17 <emphasis role="comment"># Dark blue background</emphasis>
-
+color sidebar_highlight white color238 <emphasis role="comment"># Grey background</emphasis>
-
+color sidebar_spoolfile yellow default <emphasis role="comment"># Yellow</emphasis>
-
+color sidebar_new green default <emphasis role="comment"># Green</emphasis>
-
+color sidebar_flagged red default <emphasis role="comment"># Red</emphasis>
-
+color sidebar_divider color8 default <emphasis role="comment"># Dark grey</emphasis>
-
+</screen>
-
+ <para>
-
+ There is a priority order when coloring Sidebar mailboxes.
-
+ e.g. If a mailbox has new mail it will have the
-
+ <literal>sidebar_new</literal> color, even if it also contains
-
+ flagged mails.
-
+ </para>
-
+ <table id="table-intro-sidebar-colors">
-
+ <title>Sidebar Color Priority</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Priority</entry>
-
+ <entry>Color</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry>Highest</entry>
-
+ <entry><literal>sidebar_indicator</literal></entry>
-
+ <entry>Mailbox is open</entry>
-
+ </row>
-
+ <row>
-
+ <entry></entry>
-
+ <entry><literal>sidebar_highlight</literal></entry>
-
+ <entry>Mailbox is highlighed</entry>
-
+ </row>
-
+ <row>
-
+ <entry></entry>
-
+ <entry><literal>sidebar_spoolfile</literal></entry>
-
+ <entry>Mailbox is the spoolfile (receives incoming mail)</entry>
-
+ </row>
-
+ <row>
-
+ <entry></entry>
-
+ <entry><literal>sidebar_new</literal></entry>
-
+ <entry>Mailbox contains new mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry></entry>
-
+ <entry><literal>sidebar_flagged</literal></entry>
-
+ <entry>Mailbox contains flagged mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry>Lowest</entry>
-
+ <entry>(None)</entry>
-
+ <entry>Mailbox does not match above</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect3>
-
+ <sect3 id="intro-sidebar-bugfixes">
-
+ <title>Bug-fixes</title>
-
+ <para>
-
+ If you haven't used Sidebar before, you can ignore this section.
-
+ </para>
-
+ <para>
-
+ These bugs have been fixed since the previous Sidebar release: 2015-11-11.
-
+ </para>
-
+ <itemizedlist>
-
+ <listitem><para>Fix bug when starting in compose mode</para></listitem>
-
+ <listitem><para>Fix bug with empty sidebar_divider_char string</para></listitem>
-
+ <listitem><para>Fix bug with header wrapping</para></listitem>
-
+ <listitem><para>Correctly handle utf8 character sequences</para></listitem>
-
+ <listitem><para>Fix a bug in mh_buffy_update</para></listitem>
-
+ <listitem><para>Fix refresh -- time overflowed short</para></listitem>
-
+ <listitem><para>Protect against empty format strings</para></listitem>
-
+ <listitem><para>Limit Sidebar width to COLS</para></listitem>
-
+ <listitem><para>Handle unmailboxes * safely</para></listitem>
-
+ <listitem><para>Refresh Sidebar after timeout</para></listitem>
-
+ </itemizedlist>
-
+ </sect3>
-
+ <sect3 id="intro-sidebar-config-changes">
-
+ <title>Config Changes</title>
-
+ <para>
-
+ If you haven't used Sidebar before, you can ignore this section.
-
+ </para>
-
+ <para>
-
+ 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.
-
+ </para>
-
+ <table id="table-intro-sidebar-config-changes">
-
+ <title>Config Changes</title>
-
+ <tgroup cols="2">
-
+ <thead>
-
+ <row>
-
+ <entry>Old Name</entry>
-
+ <entry>New Name</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry><literal>$sidebar_delim</literal></entry>
-
+ <entry><literal>$sidebar_divider_char</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_folderindent</literal></entry>
-
+ <entry><literal>$sidebar_folder_indent</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_indentstr</literal></entry>
-
+ <entry><literal>$sidebar_indent_string</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_newmail_only</literal></entry>
-
+ <entry><literal>$sidebar_new_mail_only</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_refresh</literal></entry>
-
+ <entry><literal>$sidebar_refresh_time</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_shortpath</literal></entry>
-
+ <entry><literal>$sidebar_short_path</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>$sidebar_sort</literal></entry>
-
+ <entry><literal>$sidebar_sort_method</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>&lt;sidebar-scroll-down&gt;</literal></entry>
-
+ <entry><literal>&lt;sidebar-page-down&gt;</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>&lt;sidebar-scroll-up&gt;</literal></entry>
-
+ <entry><literal>&lt;sidebar-page-up&gt;</literal></entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect3>
-
+</sect2>
-
+
-
<sect2 id="intro-help">
-
<title>Help</title>
-
-
@@ -6773,6 +7390,17 @@
-
</para>
-
-
<para>
-
+Mutt will set the <literal>COLUMNS</literal> 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:
-
+</para>
-
+
-
+<screen>
-
+text/html; lynx -dump -width ${COLUMNS:-80} %s; copiousoutput
-
+</screen>
-
+
-
+<para>
-
Note that when using the built-in pager, <emphasis>only</emphasis>
-
entries with this flag will be considered a handler for a MIME type
-
&mdash; all other entries will be ignored.
-
@@ -7467,6 +8095,16 @@
-
-
</sect2>
-
-
+<sect2 id="mutt-patches">
-
+<title>Mutt Patches</title>
-
+<para>
-
+Mutt may also be <quote>patched</quote> to support smaller features.
-
+These patches should add a free-form string to the end Mutt's version string.
-
+Running <literal>mutt -v</literal> might show:
-
+<screen>patch-1.6.1.sidebar.20160502</screen>
-
+</para>
-
+</sect2>
-
+
-
<sect2 id="url-syntax">
-
<title>URL Syntax</title>
-
-
@@ -8081,6 +8719,469 @@
-
-
</sect1>
-
-
+<sect1 id="sidebar">
-
+ <title>Sidebar Patch</title>
-
+ <subtitle>Overview of mailboxes</subtitle>
-
+
-
+ <sect2 id="sidebar-patch">
-
+ <title>Patch</title>
-
+
-
+ <para>
-
+ To check if Mutt supports <quote>Sidebar</quote>, look for
-
+ <quote>+USE_SIDEBAR</quote> in the mutt version.
-
+ See: <xref linkend="compile-time-features"/>.
-
+ </para>
-
+
-
+ <itemizedlist>
-
+ <title>Dependencies:</title>
-
+ <listitem><para>mutt-1.6.1</para></listitem>
-
+ </itemizedlist>
-
+
-
+ <para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-intro">
-
+ <title>Introduction</title>
-
+
-
+ <para>
-
+ 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.
-
+ </para>
-
+
-
+ <para>
-
+ This part of the manual is a reference guide.
-
+ If you want a simple introduction with examples see the
-
+ <link linkend="intro-sidebar">Sidebar Howto</link>.
-
+ If you just want to get started, you could use the sample
-
+ <link linkend="sidebar-muttrc">Sidebar muttrc</link>.
-
+ </para>
-
+
-
+ <para>
-
+ This version of Sidebar is based on Terry Chan's
-
+ <ulink url="http://www.lunar-linux.org/mutt-sidebar/">2015-11-11 release</ulink>.
-
+ It contains many
-
+ <emphasis role="bold"><link linkend="intro-sidebar-features">new features</link></emphasis>,
-
+ lots of
-
+ <emphasis role="bold"><link linkend="intro-sidebar-bugfixes">bugfixes</link></emphasis>.
-
+ </para>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-variables">
-
+ <title>Variables</title>
-
+
-
+ <table id="table-sidebar-variables">
-
+ <title>Sidebar Variables</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Name</entry>
-
+ <entry>Type</entry>
-
+ <entry>Default</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry><literal>sidebar_delim_chars</literal></entry>
-
+ <entry>string</entry>
-
+ <entry><literal>/.</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_divider_char</literal></entry>
-
+ <entry>string</entry>
-
+ <entry><literal>|</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_folder_indent</literal></entry>
-
+ <entry>boolean</entry>
-
+ <entry><literal>no</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_format</literal></entry>
-
+ <entry>string</entry>
-
+ <entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_indent_string</literal></entry>
-
+ <entry>string</entry>
-
+ <entry><literal>&nbsp;&nbsp;</literal> (two spaces)</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_new_mail_only</literal></entry>
-
+ <entry>boolean</entry>
-
+ <entry><literal>no</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_next_new_wrap</literal></entry>
-
+ <entry>boolean</entry>
-
+ <entry><literal>no</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_refresh_time</literal></entry>
-
+ <entry>number</entry>
-
+ <entry><literal>60</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_short_path</literal></entry>
-
+ <entry>boolean</entry>
-
+ <entry><literal>no</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_sort_method</literal></entry>
-
+ <entry>enum</entry>
-
+ <entry><literal>SORT_ORDER</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_visible</literal></entry>
-
+ <entry>boolean</entry>
-
+ <entry><literal>no</literal></entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_whitelist</literal></entry>
-
+ <entry>list</entry>
-
+ <entry>(empty)</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_width</literal></entry>
-
+ <entry>number</entry>
-
+ <entry><literal>20</literal></entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-functions">
-
+ <title>Functions</title>
-
+
-
+ <para>
-
+ Sidebar adds the following functions to Mutt.
-
+ By default, none of them are bound to keys.
-
+ </para>
-
+
-
+ <table id="table-sidebar-functions">
-
+ <title>Sidebar Functions</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Menus</entry>
-
+ <entry>Function</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-next&gt;</literal></entry>
-
+ <entry>Move the highlight to next mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-next-new&gt;</literal></entry>
-
+ <entry>Move the highlight to next mailbox with new mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-open&gt;</literal></entry>
-
+ <entry>Open highlighted mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-page-down&gt;</literal></entry>
-
+ <entry>Scroll the Sidebar down 1 page</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-page-up&gt;</literal></entry>
-
+ <entry>Scroll the Sidebar up 1 page</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-prev&gt;</literal></entry>
-
+ <entry>Move the highlight to previous mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-prev-new&gt;</literal></entry>
-
+ <entry>Move the highlight to previous mailbox with new mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry><literal>&lt;sidebar-toggle-visible&gt;</literal></entry>
-
+ <entry>Make the Sidebar (in)visible</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-commands">
-
+ <title>Commands</title>
-
+ <cmdsynopsis>
-
+ <command>sidebar_whitelist</command>
-
+ <arg choice="plain">
-
+ <replaceable class="parameter">mailbox</replaceable>
-
+ </arg>
-
+ <arg choice="opt" rep="repeat">
-
+ <replaceable class="parameter">mailbox</replaceable>
-
+ </arg>
-
+ </cmdsynopsis>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-colors">
-
+ <title>Colors</title>
-
+
-
+ <table id="table-sidebar-colors">
-
+ <title>Sidebar Colors</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Name</entry>
-
+ <entry>Default Color</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry><literal>sidebar_divider</literal></entry>
-
+ <entry>default</entry>
-
+ <entry>The dividing line between the Sidebar and the Index/Pager panels</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_flagged</literal></entry>
-
+ <entry>default</entry>
-
+ <entry>Mailboxes containing flagged mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_highlight</literal></entry>
-
+ <entry>underline</entry>
-
+ <entry>Cursor to select a mailbox</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_indicator</literal></entry>
-
+ <entry>mutt <literal>indicator</literal></entry>
-
+ <entry>The mailbox open in the Index panel</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_new</literal></entry>
-
+ <entry>default</entry>
-
+ <entry>Mailboxes containing new mail</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>sidebar_spoolfile</literal></entry>
-
+ <entry>default</entry>
-
+ <entry>Mailbox that receives incoming mail</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+
-
+ If the <literal>sidebar_indicator</literal> color isn't set, then the default Mutt
-
+ indicator color will be used (the color used in the index panel).
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-sort">
-
+ <title>Sort</title>
-
+
-
+ <table id="table-sidebar-sort">
-
+ <title>Sidebar Sort</title>
-
+ <tgroup cols="2">
-
+ <thead>
-
+ <row>
-
+ <entry>Sort</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry><literal>alpha</literal></entry>
-
+ <entry>Alphabetically by path</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>count</literal></entry>
-
+ <entry>Total number of messages</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>flagged</literal></entry>
-
+ <entry>Number of flagged messages</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>name</literal></entry>
-
+ <entry>Alphabetically by path</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>new</literal></entry>
-
+ <entry>Number of new messages</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>path</literal></entry>
-
+ <entry>Alphabetically by path</entry>
-
+ </row>
-
+ <row>
-
+ <entry><literal>unsorted</literal></entry>
-
+ <entry>Do not resort the paths</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-muttrc">
-
+ <title>Muttrc</title>
-
+<screen>
-
+<emphasis role="comment"># This is a complete list of sidebar-related configuration.
-
+
-
+# --------------------------------------------------------------------------
-
+# VARIABLES - shown with their default values
-
+# --------------------------------------------------------------------------
-
+
-
+# Should the Sidebar be shown?</emphasis>
-
+set sidebar_visible = no
-
+
-
+<emphasis role="comment"># How wide should the Sidebar be in screen columns?
-
+# Note: Some characters, e.g. Chinese, take up two columns each.</emphasis>
-
+set sidebar_width = 20
-
+
-
+<emphasis role="comment"># Should the mailbox paths be abbreviated?</emphasis>
-
+set sidebar_short_path = no
-
+
-
+<emphasis role="comment"># 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.</emphasis>
-
+set sidebar_delim_chars = '/.'
-
+
-
+<emphasis role="comment"># If the mailbox path is abbreviated, should it be indented?</emphasis>
-
+set sidebar_folder_indent = no
-
+
-
+<emphasis role="comment"># Indent mailbox paths with this string.</emphasis>
-
+set sidebar_indent_string = ' '
-
+
-
+<emphasis role="comment"># Make the Sidebar only display mailboxes that contain new, or flagged,
-
+# mail.</emphasis>
-
+set sidebar_new_mail_only = no
-
+
-
+<emphasis role="comment"># Any mailboxes that are whitelisted will always be visible, even if the
-
+# sidebar_new_mail_only option is enabled.</emphasis>
-
+sidebar_whitelist '/home/user/mailbox1'
-
+sidebar_whitelist '/home/user/mailbox2'
-
+
-
+<emphasis role="comment"># When searching for mailboxes containing new mail, should the search wrap
-
+# around when it reaches the end of the list?</emphasis>
-
+set sidebar_next_new_wrap = no
-
+
-
+<emphasis role="comment"># 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.</emphasis>
-
+set sidebar_divider_char = '|'
-
+
-
+<emphasis role="comment"># Display the Sidebar mailboxes using this format string.</emphasis>
-
+set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'
-
+
-
+<emphasis role="comment"># Sidebar will not refresh its list of mailboxes any more frequently than
-
+# this number of seconds. This will help reduce disk/network traffic.</emphasis>
-
+set sidebar_refresh_time = 60
-
+
-
+<emphasis role="comment"># 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</emphasis>
-
+set sidebar_sort_method = 'unsorted'
-
+
-
+<emphasis role="comment"># --------------------------------------------------------------------------
-
+# FUNCTIONS - shown with an example mapping
-
+# --------------------------------------------------------------------------
-
+
-
+# Move the highlight to the previous mailbox</emphasis>
-
+bind index,pager \Cp sidebar-prev
-
+
-
+<emphasis role="comment"># Move the highlight to the next mailbox</emphasis>
-
+bind index,pager \Cn sidebar-next
-
+
-
+<emphasis role="comment"># Open the highlighted mailbox</emphasis>
-
+bind index,pager \Co sidebar-open
-
+
-
+<emphasis role="comment"># Move the highlight to the previous page
-
+# This is useful if you have a LOT of mailboxes.</emphasis>
-
+bind index,pager &lt;F3&gt; sidebar-page-up
-
+
-
+<emphasis role="comment"># Move the highlight to the next page
-
+# This is useful if you have a LOT of mailboxes.</emphasis>
-
+bind index,pager &lt;F4&gt; sidebar-page-down
-
+
-
+<emphasis role="comment"># Move the highlight to the previous mailbox containing new, or flagged,
-
+# mail.</emphasis>
-
+bind index,pager &lt;F5&gt; sidebar-prev-new
-
+
-
+<emphasis role="comment"># Move the highlight to the next mailbox containing new, or flagged, mail.</emphasis>
-
+bind index,pager &lt;F6&gt; sidebar-next-new
-
+
-
+<emphasis role="comment"># Toggle the visibility of the Sidebar.</emphasis>
-
+bind index,pager B sidebar-toggle-visible
-
+
-
+<emphasis role="comment"># --------------------------------------------------------------------------
-
+# 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.</emphasis>
-
+color indicator cyan black
-
+
-
+<emphasis role="comment"># Color of the highlighted, but not open, mailbox.</emphasis>
-
+color sidebar_highlight black color8
-
+
-
+<emphasis role="comment"># Color of the divider separating the Sidebar from Mutt panels</emphasis>
-
+color sidebar_divider color8 black
-
+
-
+<emphasis role="comment"># Color to give mailboxes containing flagged mail</emphasis>
-
+color sidebar_flagged red black
-
+
-
+<emphasis role="comment"># Color to give mailboxes containing new mail</emphasis>
-
+color sidebar_new green black
-
+
-
+<emphasis role="comment"># --------------------------------------------------------------------------
-
+
-
+# vim: syntax=muttrc</emphasis>
-
+</screen>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-see-also">
-
+ <title>See Also</title>
-
+
-
+ <itemizedlist>
-
+ <listitem><para><link linkend="regexp">Regular Expressions</link></para></listitem>
-
+ <listitem><para><link linkend="patterns">Patterns</link></para></listitem>
-
+ <listitem><para><link linkend="color">Color command</link></para></listitem>
-
+ <listitem><para><link linkend="notmuch">notmuch patch</link></para></listitem>
-
+ </itemizedlist>
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-known-bugs">
-
+ <title>Known Bugs</title>
-
+ Unsorted isn't
-
+ </sect2>
-
+
-
+ <sect2 id="sidebar-credits">
-
+ <title>Credits</title>
-
+ <itemizedlist>
-
+ <listitem><para>Justin Hibbits <email>jrh29@po.cwru.edu</email></para></listitem>
-
+ <listitem><para>Thomer M. Gil <email>mutt@thomer.com</email></para></listitem>
-
+ <listitem><para>David Sterba <email>dsterba@suse.cz</email></para></listitem>
-
+ <listitem><para>Evgeni Golov <email>evgeni@debian.org</email></para></listitem>
-
+ <listitem><para>Fabian Groffen <email>grobian@gentoo.org</email></para></listitem>
-
+ <listitem><para>Jason DeTiberus <email>jdetiber@redhat.com</email></para></listitem>
-
+ <listitem><para>Stefan Assmann <email>sassmann@kpanic.de</email></para></listitem>
-
+ <listitem><para>Steve Kemp <email>steve@steve.org.uk</email></para></listitem>
-
+ <listitem><para>Terry Chan <email>tchan@lunar-linux.org</email></para></listitem>
-
+ <listitem><para>Tyler Earnest <email>tylere@rne.st</email></para></listitem>
-
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
-
+ </itemizedlist>
-
+ </sect2>
-
+</sect1>
-
+
-
</chapter>
-
-
<chapter id="security">
-
@@ -9237,6 +10338,17 @@
-
-
<listitem>
-
<cmdsynopsis>
-
+<command><link linkend="sidebar-whitelist">sidebar_whitelist</link></command>
-
+<arg choice="plain">
-
+<replaceable class="parameter">item</replaceable>
-
+</arg>
-
+<arg choice="plain">
-
+<replaceable class="parameter">command</replaceable>
-
+</arg>
-
+</cmdsynopsis>
-
+</listitem>
-
+<listitem>
-
+<cmdsynopsis>
-
<command><link linkend="source">source</link></command>
-
<arg choice="plain">
-
<replaceable class="parameter">filename</replaceable>
-
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 <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
-
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 "\<sidebar-next\>"
-
+syntax match muttrcFunction contained "\<sidebar-next-new\>"
-
+syntax match muttrcFunction contained "\<sidebar-open\>"
-
+syntax match muttrcFunction contained "\<sidebar-page-down\>"
-
+syntax match muttrcFunction contained "\<sidebar-page-up\>"
-
+syntax match muttrcFunction contained "\<sidebar-prev\>"
-
+syntax match muttrcFunction contained "\<sidebar-prev-new\>"
-
+syntax match muttrcFunction contained "\<sidebar-toggle-visible\>"
-
+
-
+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 <unistd.h>
-
#include <stdlib.h>
-
@@ -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<sidebar-next-new>\fP command will not stop and the end of
-
+ ** the list of mailboxes, but wrap around to the beginning. The
-
+ ** \fC<sidebar-prev-new>\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 | '<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 |
-
+
-
+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>
-
+
-
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 <jrh29@po.cwru.edu>
-
+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
-
+ * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>
-
+ *
-
+ * 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 <jrh29@po.cwru.edu>
-
+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
-
+ * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>
-
+ *
-
+ * 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);
-797
pkgs/applications/networking/mailreaders/mutt/trash.patch
···
-
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 @@
-
-
</sect2>
-
-
+<sect2 id="mutt-patches">
-
+<title>Mutt Patches</title>
-
+<para>
-
+Mutt may also be <quote>patched</quote> to support smaller features.
-
+These patches should add a free-form string to the end Mutt's version string.
-
+Running <literal>mutt -v</literal> might show:
-
+<screen>patch-1.6.1.sidebar.20160502</screen>
-
+</para>
-
+</sect2>
-
+
-
<sect2 id="url-syntax">
-
<title>URL Syntax</title>
-
-
@@ -8081,6 +8091,175 @@
-
-
</sect1>
-
-
+<sect1 id="trash-folder">
-
+ <title>Trash Folder Patch</title>
-
+ <subtitle>Automatically move "deleted" emails to a trash bin</subtitle>
-
+
-
+ <sect2 id="trash-folder-patch">
-
+ <title>Patch</title>
-
+
-
+ <para>
-
+ To check if Mutt supports <quote>Trash Folder</quote>, look for
-
+ <quote>patch-trash</quote> in the mutt version.
-
+ See: <xref linkend="mutt-patches"/>.
-
+ </para>
-
+
-
+ If IMAP is enabled, this patch will use it
-
+
-
+ <itemizedlist>
-
+ <title>Dependencies:</title>
-
+ <listitem><para>mutt-1.6.1</para></listitem>
-
+ <listitem><para>IMAP support</para></listitem>
-
+ </itemizedlist>
-
+
-
+ <para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-intro">
-
+ <title>Introduction</title>
-
+
-
+ <para>
-
+ In Mutt, when you <quote>delete</quote> an email it is first marked
-
+ deleted. The email isn't really gone until
-
+ <link linkend="index-map">&lt;sync-mailbox&gt;</link> is called.
-
+ This happens when the user leaves the folder, or the function is called
-
+ manually.
-
+ </para>
-
+
-
+ <para>
-
+ After <literal>&lt;sync-mailbox&gt;</literal> has been called the email is gone forever.
-
+ </para>
-
+
-
+ <para>
-
+ The <link linkend="trash">$trash</link> variable defines a folder in
-
+ which to keep old emails. As before, first you mark emails for
-
+ deletion. When &lt;sync-mailbox&gt; is called the emails are moved to
-
+ the trash folder.
-
+ </para>
-
+
-
+ <para>
-
+ The <literal>$trash</literal> path can be either a full directory,
-
+ or be relative to the <link linkend="folder">$folder</link>
-
+ variable, like the <literal>mailboxes</literal> command.
-
+ </para>
-
+
-
+ <note>
-
+ Emails deleted from the trash folder are gone forever.
-
+ </note>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-variables">
-
+ <title>Variables</title>
-
+ <table id="table-trash-variables">
-
+ <title>Trash Variables</title>
-
+ <tgroup cols="3">
-
+ <thead>
-
+ <row>
-
+ <entry>Name</entry>
-
+ <entry>Type</entry>
-
+ <entry>Default</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry>trash</entry>
-
+ <entry>string</entry>
-
+ <entry>(none)</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-functions">
-
+ <title>Functions</title>
-
+ <table id="table-trash-functions">
-
+ <title>Trash Functions</title>
-
+ <tgroup cols="4">
-
+ <thead>
-
+ <row>
-
+ <entry>Menus</entry>
-
+ <entry>Default Key</entry>
-
+ <entry>Function</entry>
-
+ <entry>Description</entry>
-
+ </row>
-
+ </thead>
-
+ <tbody>
-
+ <row>
-
+ <entry>index,pager</entry>
-
+ <entry>(none)</entry>
-
+ <entry><literal>&lt;purge-message&gt;</literal></entry>
-
+ <entry>really delete the current entry, bypassing the trash folder</entry>
-
+ </row>
-
+ </tbody>
-
+ </tgroup>
-
+ </table>
-
+ </sect2>
-
+
-
+<!--
-
+ <sect2 id="trash-folder-commands">
-
+ <title>Commands</title>
-
+ <para>None</para>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-colors">
-
+ <title>Colors</title>
-
+ <para>None</para>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-sort">
-
+ <title>Sort</title>
-
+ <para>None</para>
-
+ </sect2>
-
+-->
-
+
-
+ <sect2 id="trash-folder-muttrc">
-
+ <title>Muttrc</title>
-
+<screen>
-
+<emphasis role="comment"># 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</emphasis>
-
+set trash='+Trash'
-
+set trash='/home/flatcap/Mail/Trash'
-
+
-
+<emphasis role="comment"># The default delete key 'd' will move an email to the 'trash' folder
-
+# Bind 'D' to REALLY delete an email</emphasis>
-
+bind index D purge-message
-
+
-
+<emphasis role="comment"># Note: Deleting emails from the 'trash' folder will REALLY delete them.
-
+
-
+# vim: syntax=muttrc</emphasis>
-
+</screen>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-see-also">
-
+ <title>See Also</title>
-
+
-
+ <itemizedlist>
-
+ <listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
-
+ <listitem><para><link linkend="folder-hook">folder-hook</link></para></listitem>
-
+ </itemizedlist>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-known-bugs">
-
+ <title>Known Bugs</title>
-
+ <para>None</para>
-
+ </sect2>
-
+
-
+ <sect2 id="trash-folder-credits">
-
+ <title>Credits</title>
-
+ <itemizedlist>
-
+ <listitem><para>Cedric Duval <email>cedricduval@free.fr</email></para></listitem>
-
+ <listitem><para>Benjamin Kuperman <email>kuperman@acm.org</email></para></listitem>
-
+ <listitem><para>Paul Miller <email>paul@voltar.org</email></para></listitem>
-
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
-
+ </itemizedlist>
-
+ </sect2>
-
+</sect1>
-
+
-
</chapter>
-
-
<chapter id="security">
-
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 "\<purge-message\>"
-
+
-
+" 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 <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.
-
+
-
+ > 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) | '<purge-message>' | really delete the current entry, bypassing the trash folder |
-
+
-
+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>
-
+
+2 -2
pkgs/applications/networking/syncthing/default.nix
···
{ 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 ];
+4 -3
pkgs/applications/office/kmymoney/default.nix
···
, 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 = [
+2
pkgs/applications/office/libreoffice/default.nix
···
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";
+2
pkgs/applications/office/libreoffice/still.nix
···
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";
+1 -1
pkgs/applications/office/mendeley/default.nix
···
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
+45
pkgs/applications/office/planner/default.nix
···
+
{ 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 ];
+
};
+
}
+10
pkgs/applications/science/electronics/fritzing/default.nix
···
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/;
+3 -3
pkgs/applications/science/logic/coq/8.5.nix
···
{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 "";
···
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 ];
···
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}
'';
+2 -2
pkgs/applications/science/logic/tptp/default.nix
···
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 ];
+3 -3
pkgs/applications/science/logic/why3/default.nix
···
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; [
+2 -2
pkgs/applications/science/math/LiE/default.nix
···
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
'';
}
+2 -2
pkgs/applications/science/math/jags/default.nix
···
{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" ];
+52
pkgs/applications/version-management/bitkeeper/default.nix
···
+
{ 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 ];
+
};
+
}
+2 -2
pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
···
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];
···
owner = "so-fancy";
repo = "diff-so-fancy";
rev = "v${version}";
-
sha256 = "08dv9xlrsyjr1ylm83lbsv2p5asfia4ib97bwgcacsdxxh5zyqh9";
+
sha256 = "0wp5civn70jzil1gbygx6ccrxfrmc8xx90v7zgf36rqi2yhvv64m";
};
buildPhase = null;
+2
pkgs/applications/version-management/guitone/default.nix
···
buildInputs = [ qt4 qmake4Hook pkgconfig graphviz ];
+
qmakeFlags = [ "guitone.pro" ];
+
meta = {
description = "Qt4 based GUI for monotone";
homepage = http://guitone.thomaskeller.biz;
+48
pkgs/applications/video/openshot-qt/default.nix
···
+
{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;
+
};
+
}
+31
pkgs/applications/video/openshot-qt/libopenshot-audio.nix
···
+
{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;
+
};
+
}
+46
pkgs/applications/video/openshot-qt/libopenshot.nix
···
+
{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;
+
};
+
}
+5 -1
pkgs/applications/virtualization/rkt/default.nix
···
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
+27 -11
pkgs/applications/window-managers/compton/default.nix
···
-
{ 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 {
···
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;
+4 -2
pkgs/applications/window-managers/compton/git.nix
···
{ 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";
···
pcre
];
+
propagatedBuildInputs = [ xwininfo ];
+
installFlags = "PREFIX=$(out)";
meta = with stdenv.lib; {
···
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.
'';
+39
pkgs/applications/window-managers/pekwm/default.nix
···
+
{ 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;
+
};
+
}
+31 -29
pkgs/applications/window-managers/sway/default.nix
···
, 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; [ ];
+
};
+
}
+16 -16
pkgs/build-support/docker/tarsum.go
···
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))
-
}
+
fmt.Println(ts.Sum(nil))
+
}
+75
pkgs/build-support/fetchmavenartifact/default.nix
···
+
# 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;
+
}
+1
pkgs/build-support/fetchurl/mirrors.nix
···
# SourceForge.
sourceforge = [
+
http://downloads.sourceforge.net/
http://prdownloads.sourceforge.net/
http://heanet.dl.sourceforge.net/sourceforge/
http://surfnet.dl.sourceforge.net/sourceforge/
+22
pkgs/data/fonts/liberationsansnarrow/binary.nix
···
+
{ 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;
+
}
+39
pkgs/data/fonts/liberationsansnarrow/default.nix
···
+
{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
+
];
+
};
+
}
+10 -6
pkgs/desktops/gnome-3/3.18/default.nix
···
let
pkgsFun = overrides:
-
let
+
let
self = self_ // overrides;
self_ = with self; {
···
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
···
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;
};
···
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;
};
···
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
+26
pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix
···
+
{ 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";
+
};
+
}
+31
pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix
···
+
{ 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.";
+
};
+
}
+5 -4
pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix
···
# 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";
};
}
+5 -4
pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix
···
# 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";
};
}
+5 -4
pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix
···
# 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";
};
}
+5 -4
pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix
···
# 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";
};
}
+27
pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix
···
+
{ 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.";
+
};
+
}
+10
pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix
···
+
# 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";
+
};
+
}
+8 -4
pkgs/desktops/gnome-3/3.20/default.nix
···
let
pkgsFun = overrides:
-
let
+
let
self = self_ // overrides;
self_ = with self; {
···
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
···
gnome-screenshot = callPackage ./core/gnome-screenshot { };
gnome_settings_daemon = callPackage ./core/gnome-settings-daemon { };
+
+
gnome-software = callPackage ./core/gnome-software { };
gnome-system-log = callPackage ./core/gnome-system-log { };
···
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;
};
···
pomodoro = callPackage ./misc/pomodoro { };
gnome-video-effects = callPackage ./misc/gnome-video-effects { };
+
+
gnome-packagekit = callPackage ./misc/gnome-packagekit { };
};
in self; # pkgsFun
+5 -4
pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix
···
# 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";
};
}
+20
pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix
···
+
{ 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";
+
};
+
}
+10
pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix
···
+
# 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";
+
};
+
}
+2 -2
pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix
···
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";
};
}
+2 -2
pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix
···
{ stdenv, fetchFromGitHub, glib }:
stdenv.mkDerivation rec {
-
version = "1.0";
+
version = "1.0.1";
basename = "pidgin-im-gnome-shell-extension";
name = "${basename}-${version}";
···
owner = "muffinmad";
repo = "${basename}";
rev = "v${version}";
-
sha256 = "0vj4w9qqx9gads24w3f6v6mfh5va28bp8rc4w7lz0vhp7njmy1yy";
+
sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr";
};
buildInputs = [ glib ];
+20 -31
pkgs/desktops/kde-5/applications/ark/default.nix
···
-
{ kdeApp
-
, lib
-
, extra-cmake-modules
-
, kdoctools
-
, karchive
-
, kconfig
-
, kcrash
-
, kdbusaddons
-
, ki18n
-
, kiconthemes
-
, khtml
-
, kio
-
, kservice
-
, kpty
-
, kwidgetsaddons
-
, libarchive
-
, p7zip
-
, unrar
-
, unzipNLS
-
, zip
+
{
+
kdeApp, lib,
+
+
extra-cmake-modules, kdoctools, makeQtWrapper,
+
+
karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio,
+
kservice, kpty, kwidgetsaddons, libarchive,
+
+
# Archive tools
+
p7zip, unrar, unzipNLS, zip
}:
-
let PATH = lib.makeBinPath [
-
p7zip unrar unzipNLS zip
-
];
-
in
-
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 ];
+7 -28
pkgs/desktops/kde-5/applications/kate.nix
···
-
{ 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 {
···
maintainers = [ lib.maintainers.ttuegel ];
};
nativeBuildInputs = [
-
extra-cmake-modules
-
kdoctools
+
extra-cmake-modules kdoctools makeQtWrapper
];
propagatedBuildInputs = [
kactivities ki18n kio ktexteditor kwindowsystem plasma-framework qtscript
+1 -1
pkgs/desktops/kde-5/applications/spectacle.nix
···
kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications
kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor
];
-
postFixup = ''
+
postInstall = ''
wrapQtProgram "$out/bin/spectacle"
'';
}
+2 -9
pkgs/desktops/kde-5/frameworks/baloo.nix
···
{ 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 ];
};
+16 -9
pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh
···
_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
···
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
···
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
+2 -9
pkgs/desktops/kde-5/frameworks/kconfig.nix
···
{ 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 ];
}
+2 -3
pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix
···
{ 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"
'';
}
+2 -5
pkgs/desktops/kde-5/frameworks/kcoreaddons.nix
···
-
{ kdeFramework, lib, makeQtWrapper
+
{ kdeFramework, lib
, extra-cmake-modules
, shared_mime_info
}:
···
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"
-
'';
}
+2 -8
pkgs/desktops/kde-5/frameworks/kdbusaddons.nix
···
{ 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 ];
-
};
}
+2 -5
pkgs/desktops/kde-5/frameworks/kdeclarative.nix
···
{ 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"
-
'';
}
+2 -5
pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix
···
-
{ kdeFramework, lib, makeQtWrapper
+
{ kdeFramework, lib
, extra-cmake-modules
, kcompletion
, kconfig
···
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"
-
'';
}
+2 -2
pkgs/desktops/kde-5/frameworks/kdoctools/default.nix
···
{ kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45
-
, docbook5_xsl, karchive, ki18n, makeQtWrapper, perl, perlPackages
+
, docbook5_xsl, karchive, ki18n, perl, perlPackages
}:
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"
+1 -5
pkgs/desktops/kde-5/frameworks/kglobalaccel.nix
···
, 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"
-
'';
}
+2 -5
pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix
···
{ kdeFramework, lib, copyPathsToStore
-
, extra-cmake-modules, makeQtWrapper
+
, extra-cmake-modules
, karchive, kconfigwidgets, ki18n, breeze-icons, kitemviews, qtsvg
}:
···
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"
-
'';
}
+6 -4
pkgs/desktops/kde-5/frameworks/kinit/default.nix
···
-
{ 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);
}
+4 -4
pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch
···
-
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) {
+1
pkgs/desktops/kde-5/frameworks/kinit/series
···
kinit-libpath.patch
+
start_kdeinit-path.patch
+13
pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch
···
+
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 <string.h>
+
#include <unistd.h>
+
+
-#define EXECUTE CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit"
+
+#define EXECUTE "/var/setuid-wrappers/start_kdeinit"
+
+
#if KDEINIT_OOM_PROTECT
+
+2 -8
pkgs/desktops/kde-5/frameworks/kio/default.nix
···
, 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
···
qtx11extras
];
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-
postInstall = ''
-
wrapQtProgram "$out/bin/kcookiejar5"
-
wrapQtProgram "$out/bin/ktelnetservice5"
-
wrapQtProgram "$out/bin/ktrash5"
-
wrapQtProgram "$out/bin/protocoltojson"
-
'';
}
+1 -5
pkgs/desktops/kde-5/frameworks/kjs.nix
···
{ 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 ];
}
+2 -6
pkgs/desktops/kde-5/frameworks/kjsembed.nix
···
{ 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"
-
'';
}
+1 -5
pkgs/desktops/kde-5/frameworks/kpackage/default.nix
···
, 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"
-
'';
}
-43
pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh
···
-
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
+2 -2
pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix
···
{ kdeFramework, lib, copyPathsToStore
-
, extra-cmake-modules, makeQtWrapper, perl
+
, extra-cmake-modules, perl
, karchive, kconfig, kguiaddons, kiconthemes, kparts
, libgit2
, qtscript, qtxmlpatterns
···
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
+2 -6
pkgs/desktops/kde-5/frameworks/kwallet.nix
···
{ 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"
-
'';
}
+2 -5
pkgs/desktops/kde-5/frameworks/plasma-framework.nix
···
, 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"
-
'';
}
+1 -5
pkgs/desktops/kde-5/frameworks/solid.nix
···
{ 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"
-
'';
}
+12 -27
pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix
···
-
{ 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
···
rm "$out/bin/startplasmacompositor"
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
'';
}
+35 -13
pkgs/desktops/kde-5/plasma/startkde/default.nix
···
-
{ 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
kconfig kinit kservice
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"
''
+19 -17
pkgs/desktops/kde-5/plasma/startkde/startkde.sh
···
#!@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
···
kcminputrc Mouse cursorSize ''
ksplashrc KSplash Theme Breeze
ksplashrc KSplash Engine KSplashQML
-
kdeglobals KScreen ScaleFactor 1
+
kdeglobals KScreen ScreenScaleFactors ''
kcmfonts General forceFontDPI 0
EOF
···
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
···
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
···
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
···
xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
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
+1 -1
pkgs/development/compilers/elm/default.nix
···
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; };
+7 -7
pkgs/development/compilers/elm/packages/elm-compiler.nix
···
, 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;
···
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
···
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;
}
+20 -11
pkgs/development/compilers/elm/packages/elm-format.nix
···
, 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;
···
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;
}
+6 -5
pkgs/development/compilers/elm/packages/elm-make.nix
···
{ 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";
+16 -13
pkgs/development/compilers/elm/packages/elm-package.nix
···
{ 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";
+8 -8
pkgs/development/compilers/elm/packages/elm-reactor-elm.nix
···
{
"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";
};
}
+13 -10
pkgs/development/compilers/elm/packages/elm-reactor.nix
···
-
{ 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";
+6 -5
pkgs/development/compilers/elm/packages/elm-repl.nix
···
, 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
···
];
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;
}
+1 -1
pkgs/development/compilers/elm/packages/release.nix
···
# 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 { };
+8 -8
pkgs/development/compilers/elm/update-elm.rb
···
#!/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 }:"
+2 -2
pkgs/development/compilers/ghc/6.10.2-binary.nix
···
-
{stdenv, lib, fetchurl, perl, libedit, ncurses, gmp}:
+
{stdenv, lib, fetchurl, perl, libedit, ncurses5, gmp}:
stdenv.mkDerivation rec {
version = "6.10.2";
···
(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
+2 -2
pkgs/development/compilers/ghc/7.0.4-binary.nix
···
-
{stdenv, fetchurl, perl, ncurses, gmp, libiconv}:
+
{stdenv, fetchurl, perl, ncurses5, gmp, libiconv}:
stdenv.mkDerivation rec {
version = "7.0.4";
···
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
+2 -2
pkgs/development/compilers/ghc/7.4.2-binary.nix
···
-
{stdenv, fetchurl, perl, ncurses, gmp, libiconv, makeWrapper}:
+
{stdenv, fetchurl, perl, ncurses5, gmp, libiconv, makeWrapper}:
stdenv.mkDerivation rec {
version = "7.4.2";
···
# 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" {} \;
-35
pkgs/development/compilers/path64/default.nix
···
-
{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 ];
-
}
+2 -2
pkgs/development/compilers/sbcl/default.nix
···
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 = ''
+198
pkgs/development/go-modules/libs.json
···
},
+
"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": {
"type": "git",
···
"url": "https://github.com/ogier/pflag",
"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"
+1 -1
pkgs/development/guile-modules/guile-sdl/default.nix
···
nativeBuildInputs = [ guile ];
buildInputs = [
-
SDL SDL_image SDL_ttf SDL_mixer
+
SDL.dev SDL_image SDL_ttf SDL_mixer
];
GUILE_AUTO_COMPILE = 0;
+9
pkgs/development/haskell-modules/configuration-common.nix
···
'';
})) 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;
+8
pkgs/development/haskell-modules/configuration-hackage2nix.yaml
···
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
+2 -2
pkgs/development/haskell-modules/default.nix
···
allCabalFiles = pkgs.fetchFromGitHub {
owner = "commercialhaskell";
repo = "all-cabal-hashes";
-
rev = "461610ab6f0cf581e186643c037f1981755792d9";
-
sha256 = "0x2577lfd5cbbaivl72273kw93gcmxvbjybk7w4h2ic3zvs1fnvm";
+
rev = "72f1318540eff69544eb8c14a16f630d0c5448b8";
+
sha256 = "1czi1rajk2726mqrw3qp7a43h26acbjw54ll3ns063yzg9hg469m";
};
inherit (stdenv.lib) fix' extends;
+8 -5
pkgs/development/interpreters/octave/default.nix
···
{ 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
}:
···
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)
···
++ (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;
···
"--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
···
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;
};
}
+5 -3
pkgs/development/interpreters/python/2.6/default.nix
···
-
{ 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 }:
···
[ 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;
···
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;
+4 -3
pkgs/development/interpreters/python/2.7/default.nix
···
{ stdenv, fetchurl, self, callPackage, python27Packages
, bzip2, openssl, gettext
+
, less
, includeModules ? false
···
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 =
···
++ 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;
+11 -9
pkgs/development/interpreters/python/2.7/no-ldconfig.patch
···
-
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):
···
-
- # 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:
···
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])
+7
pkgs/development/interpreters/python/3.3/default.nix
···
, bzip2
, db
, gdbm
+
, less
, libX11, xproto
, lzma
, ncurses
···
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}";
···
inherit majorVersion version;
inherit buildInputs;
+
inherit propagatedBuildInputs;
src = fetchurl {
url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz";
+7
pkgs/development/interpreters/python/3.4/default.nix
···
, bzip2
, db
, gdbm
+
, less
, libX11, xproto
, lzma
, ncurses
···
libX11
xproto
] ++ optionals stdenv.isDarwin [ CF configd ];
+
+
propagatedBuildInputs = [
+
less
+
];
+
in
stdenv.mkDerivation {
name = "python3-${fullVersion}";
···
inherit majorVersion version;
inherit buildInputs;
+
inherit propagatedBuildInputs;
src = fetchurl {
url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz";
+7
pkgs/development/interpreters/python/3.5/default.nix
···
, bzip2
, db
, gdbm
+
, less
, libX11, xproto
, lzma
, ncurses
···
libX11
xproto
] ++ optionals stdenv.isDarwin [ CF configd ];
+
+
propagatedBuildInputs = [
+
less
+
];
+
in
stdenv.mkDerivation {
name = "python3-${fullVersion}";
···
inherit majorVersion version;
inherit buildInputs;
+
inherit propagatedBuildInputs;
src = fetchurl {
url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz";
+145
pkgs/development/interpreters/python/3.6/default.nix
···
+
{ 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 ];
+
};
+
}
+15
pkgs/development/interpreters/python/3.6/setup-hook.sh
···
+
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)
+13 -10
pkgs/development/libraries/appstream-glib/default.nix
···
-
{ 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";
···
homepage = https://github.com/hughsie/appstream-glib;
license = licenses.lgpl21Plus;
platforms = platforms.linux;
-
maintainers = with maintainers; [ lethalman ];
+
maintainers = with maintainers; [ lethalman matthewbauer ];
};
-
}
+6 -3
pkgs/development/libraries/fltk/default.nix
···
{ stdenv, composableDerivation, fetchurl, pkgconfig, xlibsWrapper, inputproto, libXi
, freeglut, mesa, libjpeg, zlib, libXinerama, libXft, libpng
, cfg ? {}
+
, darwin, libtiff, freetype
}:
let inherit (composableDerivation) edf; in
···
'';
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;
···
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;
};
}
-
+1
pkgs/development/libraries/fontconfig/default.nix
···
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 \
+2
pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
···
<!-- /var/cache/fontconfig is useful for non-nixos systems -->
<cachedir>/var/cache/fontconfig</cachedir>
+
<!-- fontconfig distribution conf.d -->
+
<include><xsl:value-of select="$fontconfig" />/etc/fonts/conf.d</include>
<!-- versioned system-wide config -->
<include ignore_missing="yes">/etc/fonts/<xsl:value-of select="$fontconfigConfigVersion" />/conf.d</include>
+5 -1
pkgs/development/libraries/libinput/default.nix
···
, 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;
···
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";
+12
pkgs/development/libraries/libinput/udev-absolute-path.patch
···
+
--- 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
+36
pkgs/development/libraries/libjpeg-drop/default.nix
···
+
{ 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;
+
};
+
}
+2 -2
pkgs/development/libraries/libmediainfo/default.nix
···
{ 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 ];
+2 -2
pkgs/development/libraries/libmsgpack/default.nix
···
{ 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";
};
})
+1 -1
pkgs/development/libraries/libtomcrypt/default.nix
···
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";
};
+3 -3
pkgs/development/libraries/libtommath/default.nix
···
{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];
+25
pkgs/development/libraries/libui/default.nix
···
+
{ 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;
+
};
+
}
+4 -5
pkgs/development/libraries/ncurses/default.nix
···
{ 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
···
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
+46
pkgs/development/libraries/ncurses/gcc-5.patch
···
+
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" <dickey@invisible-island.net>
+
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 <<EOF
+
+s/ / /g
+
+s/^ //
+
+s/ $//
+
+s/P_NCURSES_BOOL/NCURSES_BOOL/g
+
+EOF
+
+
+
+# A patch discussed here:
+
+# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+
+# introduces spurious #line markers. Work around that by ignoring the system's
+
+# attempt to define "bool" and using our own symbol here.
+
+sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $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 \
+3 -1
pkgs/development/libraries/qrupdate/default.nix
···
buildFlags = [ "lib" "solib" ];
-
installTargets = "install";
+
installTargets = if stdenv.isDarwin
+
then ["install-staticlib" "install-shlib"]
+
else "install";
buildInputs = [ gfortran openblas ];
}
+6 -6
pkgs/development/libraries/qt-3/default.nix
···
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";
};
···
-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
+12 -14
pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
···
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" \
"$@"
}
···
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" \
"$@"
}
···
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)
+13 -91
pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
···
-
if [[ -z "$QMAKE" ]]; then
-
-
_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
-
}
-
-
_qtLinkModule() {
-
if [ -d "$1/mkspecs" ]; then
-
# $1 is a Qt module
-
_qtLinkDependencyDir "$1" mkspecs
-
-
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
+
qmakeConfigurePhase() {
+
runHook preConfigure
-
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"
-
}
+
qmake PREFIX=$out $qmakeFlags
-
_qtRmQmake() {
-
rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
+
runHook postConfigure
}
-
_qtSetQmakePath() {
-
export PATH="$qtOut/bin${PATH:+:}$PATH"
-
}
+
if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
+
configurePhase=qmakeConfigurePhase
+
fi
-
_qtMultioutModuleDevs() {
+
_qtModuleMultioutDevsPre() {
# We cannot simply set these paths in configureFlags because libQtCore retains
# references to the paths it was built with.
moveToOutput "bin" "${!outputDev}"
···
# 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"
···
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" <<EOF
-
[Paths]
-
Prefix = $qtOut
-
Plugins = lib/qt5/plugins
-
Imports = lib/qt5/imports
-
Qml2Imports = lib/qt5/qml
-
Documentation = share/doc/qt5
-
EOF
-
-
export QMAKE="$qtOut/bin/qmake"
-
-
envHooks+=(_qtLinkModule)
-
# Set PATH to find qmake first in a preConfigure hook
-
# It must run after all the envHooks!
-
postHooks+=(_qtSetQmakePath)
-
-
if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
-
configurePhase=qmakeConfigurePhase
-
fi
-
if [ -n "$NIX_QT_SUBMODULE" ]; then
-
postInstallHooks+=(_qtRmQmake _qtRmModules)
-
preFixupHooks+=(_qtMultioutModuleDevs)
-
else
-
postInstallHooks+=(_qtRmQtOut)
-
fi
-
+
preFixupHooks+=(_qtModuleMultioutDevsPre)
+
postFixupHooks+=(_qtModuleMultioutDevsPost)
fi
+1
pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
···
fixQtModuleCMakeConfig "Xml"
'';
+
inherit lndir;
setupHook = ./setup-hook.sh;
enableParallelBuilding = true;
+122 -3
pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
···
addToSearchPathOnceWithCustomDelimiter ' ' "$@"
}
-
_qtPropagateRuntimeDependencies() {
+
_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
···
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
}
-
envHooks+=(_qtPropagateRuntimeDependencies)
+
crossEnvHooks+=(_qtPropagate)
+
+
_qtPropagateNative() {
+
for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
+
if [ -d "$1/$dir" ]; then
+
propagateOnce propagatedNativeBuildInputs "$1"
+
break
+
fi
+
done
+
if [ -z "$crossConfig" ]; then
+
addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
+
addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
+
addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
+
fi
+
}
+
+
envHooks+=(_qtPropagateNative)
_qtMultioutDevs() {
# This is necessary whether the package is a Qt module or not
···
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE${NIX_CFLAGS_COMPILE:+ }-fPIC"
export NIX_QT_PIC=1
fi
+
+
_qtSetCMakePrefix() {
+
export CMAKE_PREFIX_PATH="$NIX_QT5_TMP${CMAKE_PREFIX_PATH:+:}${CMAKE_PREFIX_PATH}"
+
}
+
+
_qtRmTmp() {
+
if [ -z "$NIX_QT_SUBMODULE" ]; then
+
rm -fr "$NIX_QT5_TMP"
+
else
+
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read file; do
+
if [ ! -d "$NIX_QT5_TMP/$file" ]; then
+
rm -f "$NIX_QT5_TMP/$file"
+
fi
+
done
+
+
cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read dir; do
+
if [ -d "$NIX_QT5_TMP/$dir" ]; then
+
rmdir --ignore-fail-on-non-empty -p "$NIX_QT5_TMP/$dir"
+
fi
+
done
+
+
rm "$NIX_QT5_TMP/nix-support/qt-inputs"
+
fi
+
}
+
+
_qtSetQmakePath() {
+
export PATH="$NIX_QT5_TMP/bin${PATH:+:}$PATH"
+
}
+
+
if [ -z "$NIX_QT5_TMP" ]; then
+
if [ -z "$NIX_QT_SUBMODULE" ]; then
+
NIX_QT5_TMP=$(mktemp -d)
+
else
+
NIX_QT5_TMP=$out
+
fi
+
postInstallHooks+=(_qtRmTmp)
+
+
mkdir -p "$NIX_QT5_TMP/nix-support"
+
for subdir in bin include lib mkspecs share; do
+
mkdir "$NIX_QT5_TMP/$subdir"
+
echo "$subdir/" >> "$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" <<EOF
+
[Paths]
+
Prefix = $NIX_QT5_TMP
+
Plugins = lib/qt5/plugins
+
Imports = lib/qt5/imports
+
Qml2Imports = lib/qt5/qml
+
Documentation = share/doc/qt5
+
EOF
+
echo "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
-1
pkgs/development/libraries/qt-5/5.5/qtlocation.nix
···
name = "qtlocation";
qtInputs = [ qtbase qtmultimedia ];
postFixup = ''
-
fixQtModuleCMakeConfig "Location"
fixQtModuleCMakeConfig "Positioning"
'';
}
+12 -14
pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh
···
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" \
"$@"
}
···
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" \
"$@"
}
···
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)
-4
pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
···
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
···
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
+3 -1
pkgs/development/libraries/tk/generic.nix
···
"--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;
+26
pkgs/development/libraries/unittest-cpp/default.nix
···
+
{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];
+
};
+
}
+3 -2
pkgs/development/libraries/webkitgtk/2.4.nix
···
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";
···
src = fetchurl {
url = "http://webkitgtk.org/releases/${name}.tar.xz";
-
sha256 = "0r651ar3p0f8zwl7764kyimxk5hy88cwy116pv8cl5l8hbkjkpxg";
+
sha256 = "1xsvnvyvlywwyf6m9ainpsg87jkxjmd37q6zgz9cxb7v3c2ym2jq";
};
CC = "cc";
···
configureFlags = with stdenv.lib; [
"--disable-geolocation"
+
"--disable-jit"
(optionalString enableIntrospection "--enable-introspection")
] ++ optional withGtk2 [
"--with-gtk=2.0"
+3 -24
pkgs/development/r-modules/default.nix
···
"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
···
"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
···
"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
···
"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
···
"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
···
"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
···
"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
···
"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
···
"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
···
"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
+5 -7
pkgs/development/tools/analysis/cppcheck/default.nix
···
{ 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 ];
···
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;
+5 -5
pkgs/development/tools/continuous-integration/jenkins/default.nix
···
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; {
···
homepage = http://jenkins-ci.org;
license = licenses.mit;
platforms = platforms.all;
-
maintainers = [ maintainers.coconnor ];
+
maintainers = with maintainers; [ coconnor fpletz ];
};
}
+23
pkgs/development/tools/doctl/default.nix
···
+
{ 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 ];
+
};
+
}
+2 -2
pkgs/development/tools/mypy-lang/default.nix
···
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 ];
+2 -2
pkgs/development/tools/scalafmt/default.nix
···
{ 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";
+5 -5
pkgs/development/tools/vagrant/default.nix
···
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";
···
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; {
···
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
'';
}
+1 -1
pkgs/development/web/nodejs/nodejs.nix
···
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;
};
}
+2 -2
pkgs/development/web/nodejs/v5.nix
···
}@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";
};
})
+54
pkgs/games/commandergenius/default.nix
···
+
{ 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 <<EOF
+
execute_process(COMMAND sdl2-config --cflags
+
OUTPUT_VARIABLE CFLAGS)
+
string(REGEX REPLACE "^-I" "" CFLAGS2 \''${CFLAGS})
+
string(REGEX REPLACE " .*" "" SDLINC \''${CFLAGS2})
+
INCLUDE_DIRECTORIES(\''${SDLINC})
+
EOF
+
'';
+
+
configurePhase = ''
+
cmake -DUSE_SDL2=yes -DBUILD_TARGET=LINUX -DCMAKE_INSTALL_PREFIX:PATH=$out -DCPACK_PACKAGE_INSTALL_DIRECTORY=$out
+
sed -i 's_/usr/share_$out_g' cmake_install.cmake
+
sed -i 's_/usr/share_$out_g' src/cmake_install.cmake
+
'';
+
+
installTargets = [ ];
+
+
installPhase = ''
+
mkdir -p $out/bin
+
cp src/CGeniusExe $out/bin
+
'';
+
+
meta = {
+
description = "Modern Interpreter for the Commander Keen Games";
+
longdescription = ''
+
Commander Genius is an open-source clone of
+
Commander Keen which allows you to play
+
the games, and some of the mods
+
made for it. All of the original data files
+
are required to do so
+
'';
+
homepage = "https://github.com/gerstrong/Commander-Genius";
+
maintainers = with stdenv.lib.maintainers; [ hce ];
+
license = stdenv.lib.licenses.gpl2;
+
};
+
}
+1 -1
pkgs/games/d1x-rebirth/default.nix
···
meta = {
homepage = http://www.dxx-rebirth.com/;
description = "Source Port of the Descent 1 engine";
-
license = stdenv.lib.licenses.mit;
+
license = stdenv.lib.licenses.unfree;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [viric];
};
+1 -1
pkgs/games/d2x-rebirth/default.nix
···
meta = {
homepage = http://www.dxx-rebirth.com/;
description = "Source Port of the Descent 2 engine";
-
license = stdenv.lib.licenses.mit;
+
license = stdenv.lib.licenses.unfree;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [viric];
};
+2
pkgs/misc/emulators/ppsspp/default.nix
···
buildInputs = [ zlib libpng pkgconfig qt4 qmake4Hook ]
++ (if withGamepads then [ SDL ] else [ ]);
+
qmakeFlags = [ "PPSSPPQt.pro" ];
+
preConfigure = "cd Qt";
installPhase = "mkdir -p $out/bin && cp ppsspp $out/bin";
+8 -6
pkgs/misc/themes/adapta/default.nix
···
-
{ stdenv, fetchFromGitHub, autoreconfHook, gtk-engine-murrine }:
+
{ stdenv, fetchFromGitHub, autoreconfHook, sass, inkscape, glib, which, gtk-engine-murrine }:
stdenv.mkDerivation rec {
name = "adapta-gtk-theme-${version}";
-
version = "3.21.2";
+
version = "3.21.3.68";
meta = with stdenv.lib; {
description = "An adaptive GTK+ theme based on Material Design";
homepage = "https://github.com/tista500/Adapta";
-
license = licenses.gpl2;
+
license = with licenses; [ gpl2 cc-by-sa-30 ];
platforms = platforms.linux;
maintainers = [ maintainers.SShrike ];
};
···
src = fetchFromGitHub {
owner = "tista500";
repo = "Adapta";
-
rev = "c48da995abc46087c22b05d2cdb0975d10774641";
-
sha256 = "17w9nsrwqwgafswyvhc5h8ld2ggi96ix5fjv6yf1hfz3l1ln9qg7";
+
rev = version;
+
sha256 = "0wwsmsyxfdgsc7fj1kn4r9zsgs09prizwkjljmirwrfdm6j3387p";
};
preferLocalBuild = true;
buildInputs = [ gtk-engine-murrine ];
-
nativeBuildInputs = [ autoreconfHook ];
+
nativeBuildInputs = [ autoreconfHook sass inkscape glib.dev which ];
+
+
postPatch = "patchShebangs .";
configureFlags = "--enable-chrome --disable-unity";
}
+6 -11
pkgs/misc/themes/blackbird/default.nix
···
-
{ stdenv, fetchFromGitHub, gtk-engine-murrine }:
+
{ stdenv, fetchFromGitHub, autoreconfHook, gtk-engine-murrine }:
stdenv.mkDerivation rec {
pname = "Blackbird";
-
version = "2016-04-10";
+
version = "2016-07-04";
name = "${pname}-${version}";
src = fetchFromGitHub {
repo = "${pname}";
owner = "shimmerproject";
-
rev = "e9f780993c957e3349f97b0e2e6fabdc36ccefb0";
-
sha256 = "00fdd63lnb2gmsn6cbdkanvh3rvz48jg08gmzg372byhj70m63hi";
+
rev = "ab4a30ee5110c59241b739e7c54956c3244e5b2a";
+
sha256 = "1qy32n21bqq3zwn9di01fbiqv67cqr9n7jmbpcmn9v8yb5p572w3";
};
-
buildInputs = [ gtk-engine-murrine ];
-
-
dontBuild = true;
+
nativeBuildInputs = [ autoreconfHook ];
-
installPhase = ''
-
mkdir -p $out/share/themes/${pname}
-
cp -a * $out/share/themes/${pname}/
-
'';
+
buildInputs = [ gtk-engine-murrine ];
meta = {
description = "Dark Desktop Suite for Gtk, Xfce and Metacity";
+86 -50
pkgs/misc/vim-plugins/default.nix
···
};
Syntastic = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "Syntastic-2016-07-08";
+
name = "Syntastic-2016-07-16";
src = fetchgit {
url = "git://github.com/scrooloose/syntastic";
-
rev = "87f3e80b443870ce821f82dd1b3dba5bd66b51b2";
-
sha256 = "09prhzp58470naj8ws2m1pjgj1h675jsiyc6vmfdjsqk6ly2ypg0";
+
rev = "8ab7705b21cbe5f1c70750dee89bf8b711890a82";
+
sha256 = "1gk12lzyqgjh4qzq46m3i70h4xzf9whgdahigf6nr0yqxd6w90rw";
};
dependencies = [];
···
};
The_NERD_Commenter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "The_NERD_Commenter-2016-06-10";
+
name = "The_NERD_Commenter-2016-07-14";
src = fetchgit {
url = "git://github.com/scrooloose/nerdcommenter";
-
rev = "e2d47bec2662d5fcd324d17e22dc37f38c97bf2d";
-
sha256 = "099i7jksdp4c4m7imv96xji4lbjscdns37fsr2qgn7zw5pjgjbw4";
+
rev = "c3d6a2069bb0286c9633fbbffb4983797f7b8822";
+
sha256 = "0xwnx8ggqpik9jnyb4a69v7z789ffrfnxc3frl644x7bhndgaa1v";
};
dependencies = [];
···
};
deoplete-nvim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "deoplete-nvim-2016-07-10";
+
name = "deoplete-nvim-2016-07-14";
src = fetchgit {
url = "git://github.com/Shougo/deoplete.nvim";
-
rev = "8102bbb73f942b232b6bcc00b8699fbe3b3f370c";
-
sha256 = "083056maiscxyyln09659qv3c7kayps2vm697p459yyhfyir742f";
+
rev = "e3cb71b4053041dffb250733bd9531814bfa4af9";
+
sha256 = "1wz3q1020f8vb7s9nncdgji045iz2nlqp59j06gbli9cjvgfhg60";
};
dependencies = [];
···
};
vim-css-color = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-css-color-2016-06-12";
+
name = "vim-css-color-2016-07-14";
src = fetchgit {
url = "git://github.com/ap/vim-css-color";
-
rev = "ba98bd138ee15dbf6b6dc3b7080c0e65e0657c76";
-
sha256 = "0l76yqd3cvdm41dx720skbphwqsza51xaf7vi8jlknsqnrb6z1kf";
+
rev = "86dff1b9c2a549994042c4548a47514350c25b6d";
+
sha256 = "1wzkcprn6sky03v6yg0dkijmdva3jszrpwzbld1744m8ylbdgf0i";
};
dependencies = [];
};
neomake = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "neomake-2016-07-11";
+
name = "neomake-2016-07-16";
src = fetchgit {
url = "git://github.com/benekastah/neomake";
-
rev = "14e894edc35d17b927e5540ceb6d101bbda9f51c";
-
sha256 = "1ccgfvvxsl213zlgf801yxwg51kpi5z37z175w4gh9cj8953mgxh";
+
rev = "5560a4dd58a47a0af2ae128d707e822b54c55c72";
+
sha256 = "01l7ws2m3pm90q5985rrpc7rqcgv93ypg3swy1n1sfn0m0vm1a4l";
};
dependencies = [];
···
};
+
elm-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+
name = "elm-vim-2016-06-22";
+
src = fetchgit {
+
url = "git://github.com/elmcast/elm-vim";
+
rev = "6527c8a9e1d1af31c81e60b6b40bf3316c7fbdf2";
+
sha256 = "0aj1cd5dy7z48lf6vzg76r787hgs4z5f11bczvvs1h99qik1rgbc";
+
};
+
dependencies = [];
+
+
};
+
vim-localvimrc = buildVimPluginFrom2Nix { # created by nix#NixDerivation
name = "vim-localvimrc-2016-06-06";
src = fetchgit {
···
};
vim-go = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-go-2016-07-07";
+
name = "vim-go-2016-07-14";
src = fetchgit {
url = "git://github.com/fatih/vim-go";
-
rev = "ab01e7e5a6bf858c1f519a831a4db1d978b92298";
-
sha256 = "1g76hasdyncjds6yl38dkb5nwp6sb8aqzp9d7xxhwarlnnihj1la";
+
rev = "789de8e4e8c505c3058f407750165f0148ea1d02";
+
sha256 = "0hnq3abl6qvwk9rynk8pmi8slfikdaxf5irrx0xvddp38giydws1";
};
dependencies = [];
···
};
idris-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "idris-vim-2016-01-29";
+
name = "idris-vim-2016-07-15";
src = fetchgit {
url = "git://github.com/idris-hackers/idris-vim";
-
rev = "e1711749f5078f5a9fa53cd15a37627ea9d239f2";
-
sha256 = "0mbywk1mwbx3hjzrv7ypp5m800xjj08hxlfmd0piljg41xwkgk5q";
+
rev = "aeca73e9432c21da6eb35fceaef957f191b3d56a";
+
sha256 = "1q38sf4dabirhrr3i89p271ixap90im0x3pf39s3fc9jmb3m2jm8";
};
dependencies = [];
···
};
vim-orgmode = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-orgmode-2016-07-08";
+
name = "vim-orgmode-2016-07-12";
src = fetchgit {
url = "git://github.com/jceb/vim-orgmode";
-
rev = "54057d58888ad29672cd0cd782be5fc8b1a3a709";
-
sha256 = "134dsnfpkzq9gd3d8b9pvy7c5yvy9yxjyvidg927ha1lpilf4kp9";
+
rev = "e76c0f07e9193e08df2b8eeb95ef6240b494797f";
+
sha256 = "00ys1qf8hbigrdxshs5xvg662xcd6qaiw2g1nr21pfs682qdjsyf";
};
dependencies = [];
···
};
vimtex = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vimtex-2016-07-10";
+
name = "vimtex-2016-07-16";
src = fetchgit {
url = "git://github.com/lervag/vimtex";
-
rev = "c16bd147092bfe7ac63f39cd449f36e14e42e948";
-
sha256 = "18p7vmas0754r9n227v68wry285vr4y90v3kxcnn9hl60xxb3ba9";
+
rev = "8dd4ed77dbd547a819b1220aa2e298e0ae6e5643";
+
sha256 = "0n5zbhgf0ks0b166p94m7i3cfkh6v2zc6srci0rp45byi4mwpddz";
};
dependencies = [];
···
};
vim-racer = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-racer-2016-06-27";
+
name = "vim-racer-2016-07-14";
src = fetchgit {
url = "git://github.com/racer-rust/vim-racer";
-
rev = "a72b26bb25cb65be29fd1912e9344eaa860fce5e";
-
sha256 = "01xg6mmnlx5l37rsb7w0dbgy36pd6zyq7gcigdbj0pgqd39w30fv";
+
rev = "ea2a41ddc3e1e504a542f6add0f6f2c10d97a099";
+
sha256 = "1vwxs9mqcvp3haqyx0si5hiw61vg2s2hm1alipb5s69sb38f047s";
};
dependencies = [];
···
};
rust-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "rust-vim-2016-06-21";
+
name = "rust-vim-2016-07-16";
src = fetchgit {
url = "git://github.com/rust-lang/rust.vim";
-
rev = "5dd7ab99103c05a56e059b39ad9f63274d2ae72e";
-
sha256 = "0az35kfcpavz6sbh6mf0mmv7mp5zbnqmnljpmlm1srn6rr9rah2q";
+
rev = "a4d6fb2ab526ccc93a6a321a2425a234f9f7665f";
+
sha256 = "1i2sf5p4d9gfr3hk6nrjar0rz85dmhwgf82d5yfqqmlgil0bljds";
+
};
+
dependencies = [];
+
+
};
+
+
neoformat = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+
name = "neoformat-2016-05-25";
+
src = fetchgit {
+
url = "git://github.com/sbdchd/neoformat";
+
rev = "d74e8d5b338219fe2ab6e8b5bfdaaf653101ed21";
+
sha256 = "0yiq519x99vhl217504pv57lpfwz916r1fq0m3mr33pv0g1kx6c5";
+
};
+
dependencies = [];
+
+
};
+
+
vim-polyglot = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+
name = "vim-polyglot-2016-07-05";
+
src = fetchgit {
+
url = "git://github.com/sheerun/vim-polyglot";
+
rev = "1422f7a75ce0b382d601238c5979b04473b9021e";
+
sha256 = "0jqb75lrf75br9wg95cxcy3aal1bk929881gy4ly1n0r6fv96yz1";
};
dependencies = [];
···
};
neosnippet-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "neosnippet-snippets-2016-06-26";
+
name = "neosnippet-snippets-2016-07-14";
src = fetchgit {
url = "git://github.com/shougo/neosnippet-snippets";
-
rev = "17219351bcbec3708295c72c8280471eed12b8fe";
-
sha256 = "08lrqsl9cqkx42llgv0mc54nsmdrv68bpzip2snr58klaj444nir";
+
rev = "4d25b4352738ecf34e56701d0172d80daa3bd287";
+
sha256 = "01lai1gvf30iagh9f7av69ywfzw43vy2igwil882rgnri84y4zjb";
};
dependencies = [];
···
};
youcompleteme = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "youcompleteme-2016-07-11";
+
name = "youcompleteme-2016-07-12";
src = fetchgit {
url = "git://github.com/valloric/youcompleteme";
-
rev = "c44489af16de6ae86294de7dd194bd6e53adaf1e";
-
sha256 = "1m8m6wyics1mlxcxzq83ql8l4vd16cfbhc418vmxflx3178ifr36";
+
rev = "d5610e577c0f1f0bb8bb22d8bbbd25be11327391";
+
sha256 = "1c2001ywj0zczhpzm5iahyb6rg7yjbgljqpnwfr9f7fa3y363cgk";
};
dependencies = [];
buildInputs = [
···
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 = ''
···
};
deoplete-jedi = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "deoplete-jedi-2016-07-10";
+
name = "deoplete-jedi-2016-07-12";
src = fetchgit {
url = "git://github.com/zchee/deoplete-jedi";
-
rev = "e7f0a94ea64b86d2b4946d30b6cedb38133d6603";
-
sha256 = "05j1lfqxagndglyh337b6v2l4zmpa9fwrkgr0g4kk1s6f0lmla2b";
+
rev = "3eee7e801723d9c174d801b94b2c2ddcee43ac56";
+
sha256 = "0z8766wgam2s2vwp9a3xi9cl5c3sb99iadinzy7c348wx004nkxq";
};
dependencies = [];
···
};
vim-addon-async = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-addon-async-2016-06-15";
+
name = "vim-addon-async-2016-07-12";
src = fetchgit {
url = "git://github.com/MarcWeber/vim-addon-async";
-
rev = "4fcdf0c8a0da8b9dc2d5ad25e2cf7692cfbc10f3";
-
sha256 = "1qa8ivh93ln30jbdwm9xg50yinvysvhricrkfjgg4v5nvk5sxj5n";
+
rev = "b14414215b394a0ef887ea301085ae4b80012e38";
+
sha256 = "1gr0rjn1vwqv4p51yb0s65gnpy1r0533lfy5nqbg20j4687yxls5";
};
dependencies = ["vim-addon-signs"];
···
};
vim-gitgutter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-
name = "vim-gitgutter-2016-06-27";
+
name = "vim-gitgutter-2016-07-12";
src = fetchgit {
url = "git://github.com/airblade/vim-gitgutter";
-
rev = "b5f23e986747a6f4b1dc1196d2a5bd3dc7c8c2b6";
-
sha256 = "0z3f4yamkv3fmqnrr00j86xwrrfv199fiabpjqnk583b5kcbn90j";
+
rev = "26c6b549f287b8ae348eda083e7c77f79f4de28b";
+
sha256 = "1jrz0vqd580y7psszq31jk4v4jdh2cvqvxgcy347simpc5ap16hs";
};
dependencies = [];
+14
pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch
···
+
+
--- ./third_party/ycmd/cpp/CMakeLists.txt
+
+++ ./third_party/ycmd/cpp/CMakeLists.txt
+
@@ -121,8 +121,8 @@
+
set( CPP11_AVAILABLE true )
+
endif()
+
elseif( COMPILER_IS_CLANG )
+
- set( CPP11_AVAILABLE true )
+
- set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
+
+ #set( CPP11_AVAILABLE true )
+
+ # set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
+
set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
+
endif()
+
+36
pkgs/misc/vim-plugins/patches/youcompleteme/2-ycm-cmake.patch
···
+
--- ./third_party/ycmd/cpp/ycm/CMakeLists.txt
+
+++ ./third_party/ycmd/cpp/ycm/CMakeLists.txt
+
@@ -335,7 +335,7 @@
+
COMMAND ${CMAKE_COMMAND} -E copy "${LIBCLANG_TARGET}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
+
)
+
+
- 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"
+
- "$<TARGET_FILE_DIR:${PROJECT_NAME}>/${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"
+
+ # "$<TARGET_FILE_DIR:${PROJECT_NAME}>/${LIBCLANG_TAIL}"
+
+ # )
+
+ # endif()
+
endif()
+
endif()
+
+3
pkgs/misc/vim-plugins/vim-plugin-names
···
"ghcmod"
"github:Chiel92/vim-autoformat"
"github:LnL7/vim-nix"
+
"github:sbdchd/neoformat"
"github:Shougo/deoplete.nvim"
"github:ajh17/Spacegray.vim"
"github:alvan/vim-closetag"
···
"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"
···
"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"
+5 -2
pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
···
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 = ''
+5 -3
pkgs/os-specific/linux/busybox/default.nix
···
-
{ stdenv, fetchurl, musl
+
{ stdenv, lib, fetchurl, glibc, musl
, enableStatic ? false
, enableMinimal ? false
, useMusl ? false
···
CONFIG_LFS y
-
${stdenv.lib.optionalString enableStatic ''
+
${lib.optionalString enableStatic ''
CONFIG_STATIC y
''}
···
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 = ''
+4 -4
pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
···
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/
···
src = fetchFromGitHub {
owner = "wkennington";
repo = "linux-firmware";
-
rev = "19495832c6899bd811874439376d513290773c31";
-
sha256 = "1700a24sfw6xa3q3r8aa5wfhydgix83m57plpfirdmc9qr4isrr0";
+
rev = "cccb6a0da98372bd66787710249727ad6b0aaf72";
+
sha256 = "1c7h8i37nbyy37zqhybxd3y6aqabfv4nrdkjg789w67mdnn6hka0";
};
preInstall = ''
···
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
};
+22
pkgs/os-specific/linux/fnotifystat/default.nix
···
+
{ 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 ];
+
};
+
}
+22
pkgs/os-specific/linux/forkstat/default.nix
···
+
{ 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 ];
+
};
+
}
+5
pkgs/os-specific/linux/lightum/default.nix
···
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"
+2 -2
pkgs/os-specific/linux/lxc/default.nix
···
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 = [
+22
pkgs/os-specific/linux/powerstat/default.nix
···
+
{ 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 ];
+
};
+
}
+22
pkgs/os-specific/linux/smemstat/default.nix
···
+
{ 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 ];
+
};
+
}
+2 -2
pkgs/servers/emby/default.nix
···
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; [
+2 -2
pkgs/servers/etcd/default.nix
···
buildGoPackage rec {
name = "etcd-${version}";
-
version = "2.3.0";
+
version = "2.3.7";
rev = "v${version}";
goPackagePath = "github.com/coreos/etcd";
···
inherit rev;
owner = "coreos";
repo = "etcd";
-
sha256 = "1cchlhsdbbqal145cvdiq7rzqqi131iq7z0r2hmzwx414k04wyn7";
+
sha256 = "07rdnhcpnvnkxj5pqacxz669rzn5vw2i1zmf6dd4nv7wpfscdw9f";
};
goDeps = ./deps.json;
+3 -3
pkgs/servers/http/nginx/default.nix pkgs/servers/http/nginx/generic.nix
···
, 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;
};
pkgs/servers/http/nginx/default.upstream pkgs/servers/http/nginx/stable.upstream
+6
pkgs/servers/http/nginx/mainline.nix
···
+
{ callPackage, ... }@args:
+
+
callPackage ./generic.nix (args // {
+
version = "1.11.2";
+
sha256 = "02khwad28ar2jjdfssysx262bgwgirm9967gnfhw9ga7wvipncm0";
+
})
+6
pkgs/servers/http/nginx/stable.nix
···
+
{ callPackage, ... } @ args:
+
+
callPackage ./generic.nix (args // {
+
version = "1.10.1";
+
sha256 = "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz";
+
})
pkgs/servers/http/nginx/unstable.upstream pkgs/servers/http/nginx/mainline.upstream
+8 -6
pkgs/servers/monitoring/grafana/default.nix
···
-
{ 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";
···
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; {
+3 -3
pkgs/servers/monitoring/prometheus/alertmanager.nix
···
buildGoPackage rec {
name = "alertmanager-${version}";
-
version = "0.1.0";
-
rev = "${version}";
+
version = "0.3.0";
+
rev = "v${version}";
goPackagePath = "github.com/prometheus/alertmanager";
···
inherit rev;
owner = "prometheus";
repo = "alertmanager";
-
sha256 = "1ya465bns6cj2lqbipmfm13wz8kxii5h9mm7lc0ba1xv26xx5zs7";
+
sha256 = "0ychc2qvn3lzs4rg5f5sslil7clvcpzclcmfj83qjqp8krpg72b5";
};
# Tests exist, but seem to clash with the firewall.
+3 -3
pkgs/servers/monitoring/prometheus/collectd-exporter.nix
···
buildGoPackage rec {
name = "collectd-exporter-${version}";
-
version = "0.1.0";
+
version = "0.3.1";
rev = version;
goPackagePath = "github.com/prometheus/collectd_exporter";
···
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;
+3 -3
pkgs/servers/monitoring/prometheus/default.nix
···
buildGoPackage rec {
name = "prometheus-${version}";
-
version = "0.17.0";
-
rev = "${version}";
+
version = "1.0.0";
+
rev = "v${version}";
goPackagePath = "github.com/prometheus/prometheus";
···
inherit rev;
owner = "prometheus";
repo = "prometheus";
-
sha256 = "176198krna2i37dfhwsqi7m36sqn175yiny6n52vj27mc9s8ggzx";
+
sha256 = "0wb6aj2019b2bkaai94mxdy8gr6gs7jpkm7ms8h9n2ms041gdsff";
};
docheck = true;
+2 -2
pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
···
buildGoPackage rec {
name = "haproxy_exporter-${version}";
-
version = "0.4.0";
+
version = "0.7.0";
rev = version;
goPackagePath = "github.com/prometheus/haproxy_exporter";
···
inherit rev;
owner = "prometheus";
repo = "haproxy_exporter";
-
sha256 = "0cwls1d4hmzjkwc50mjkxjb4sa4q6yq581wlc5sg9mdvl6g91zxr";
+
sha256 = "1jkijdawmnj5yps0yaj47nyfmcah0krwmqsjvicm3sl0dhwmac4w";
};
goDeps = ./haproxy-exporter_deps.json;
+2 -2
pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
···
buildGoPackage rec {
name = "mysqld_exporter-${version}";
-
version = "0.1.0";
+
version = "0.8.1";
rev = version;
goPackagePath = "github.com/prometheus/mysqld_exporter";
···
inherit rev;
owner = "prometheus";
repo = "mysqld_exporter";
-
sha256 = "10xnyxyb6saz8pq3ijp424hxy59cvm1b5c9zcbw7ddzzkh1f6jd9";
+
sha256 = "0pwf2vii9n9zgad1lxgw28c2743yc9c3qc03516fiwvlqc1cpddr";
};
goDeps = ./mysqld-exporter_deps.json;
+1 -1
pkgs/servers/monitoring/prometheus/nginx-exporter.nix
···
name = "nginx_exporter-${version}";
version = "20160524-${stdenv.lib.strings.substring 0 7 rev}";
rev = "2cf16441591f6b6e58a8c0439dcaf344057aea2b";
-
+
goPackagePath = "github.com/discordianfish/nginx_exporter";
src = fetchgit {
+5 -6
pkgs/servers/monitoring/prometheus/node-exporter.nix
···
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";
-18
pkgs/servers/monitoring/prometheus/node-exporter_deps.json
···
-
[
-
{
-
"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"
-
]
-
}
-
]
+3 -3
pkgs/servers/monitoring/prometheus/pushgateway.nix
···
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;
+4 -4
pkgs/servers/monitoring/prometheus/statsd-bridge.nix
···
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;
+6 -6
pkgs/servers/plex/default.nix
···
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 {
+33
pkgs/servers/sonarr/default.nix
···
+
{ 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;
+
};
+
}
+3 -3
pkgs/shells/oh-my-zsh/default.nix
···
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";
+2 -4
pkgs/tools/archivers/p7zip/default.nix
···
{ 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 = ''
+9 -7
pkgs/tools/archivers/xarchiver/default.nix
···
-
{ 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;
+4 -4
pkgs/tools/graphics/nip2/default.nix
···
{ 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; {
+2 -2
pkgs/tools/graphics/vips/default.nix
···
}:
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 =
+7 -2
pkgs/tools/misc/disper/default.nix
···
-
{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 {
+3 -2
pkgs/tools/misc/ethtool/default.nix
···
{ 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; {
+10 -3
pkgs/tools/misc/fzf/default.nix
···
buildGoPackage rec {
name = "fzf-${version}";
-
version = "0.13.2";
+
version = "0.13.3";
rev = "${version}";
goPackagePath = "github.com/junegunn/fzf";
···
inherit rev;
owner = "junegunn";
repo = "fzf";
-
sha256 = "12dr0wib2ajs64a8d3l3zmgj2y8rklkc3xrvgscxgiv29lrlmvfz";
+
sha256 = "0mfrlb91akzrj0qpjpaa9bkp6m9z95z56glamry73qy21vbnj58m";
};
buildInputs = [ ncurses ];
goDeps = ./deps.json;
-
+
patchPhase = ''
sed -i -e "s|expand('<sfile>:h:h').'/bin/fzf'|'$bin/bin/fzf'|" plugin/fzf.vim
sed -i -e "s|expand('<sfile>:h:h').'/bin/fzf-tmux'|'$bin/bin/fzf-tmux'|" plugin/fzf.vim
···
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;
+
};
}
+4
pkgs/tools/misc/gti/default.nix
···
sha256 = "1wki7d61kcmv9s3xayky9cz84qa773x3y1z88y768hq8ifwadcbn";
};
+
prePatch = ''
+
substituteInPlace Makefile --replace gcc cc
+
'';
+
installPhase = ''
mkdir -p $out/bin $out/share/man/man6
cp gti $out/bin
+2 -2
pkgs/tools/misc/youtube-dl/default.nix
···
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 ];
+4 -3
pkgs/tools/networking/ndjbdns/default.nix
···
{ 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 ];
···
platforms = platforms.linux;
};
-
}
+
}
+3 -5
pkgs/tools/networking/openssh/default.nix
···
./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;
···
++ optional withKerberos "--with-kerberos5=${kerberos}"
++ optional stdenv.isDarwin "--disable-libutil"
++ optional (!linkOpenssl) "--without-openssl";
-
-
preConfigure = ''
-
configureFlagsArray+=("--with-privsep-path=$out/empty")
-
mkdir -p $out/empty
-
'';
enableParallelBuilding = true;
+11
pkgs/tools/networking/openssh/dont_create_privsep_path.patch
···
+
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)
+10 -7
pkgs/tools/networking/proxychains/default.nix
···
-
{ 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 = {
+27
pkgs/tools/networking/shncpd/default.nix
···
+
{ 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 ];
+
};
+
}
+8 -2
pkgs/tools/networking/vtun/default.nix
···
-
{ stdenv, fetchurl, openssl, lzo, zlib, yacc, flex }:
+
{ stdenv, fetchurl, fetchpatch, openssl, lzo, zlib, yacc, flex }:
stdenv.mkDerivation rec {
name = "vtun-3.0.3";
···
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
'';
+40 -43
pkgs/tools/package-management/packagekit/default.nix
···
-
{ 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
···
homepage = http://www.packagekit.org/;
license = licenses.gpl2Plus;
platforms = platforms.linux;
-
maintainers = with maintainers; [ nckx ];
+
maintainers = with maintainers; [ nckx matthewbauer ];
};
}
+28
pkgs/tools/security/keybase/default.nix
···
+
{ 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 ];
+
};
+
}
+7 -4
pkgs/tools/security/minisign/default.nix
···
-
{ 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 ];
···
homepage = https://jedisct1.github.io/minisign/;
license = licenses.isc;
maintainers = with maintainers; [ joachifm ];
+
platforms = platforms.unix;
};
}
+4
pkgs/tools/security/nasty/default.nix
···
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 = ''
+2 -2
pkgs/tools/security/sslscan/default.nix
···
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 ];
+2 -2
pkgs/tools/security/sudo/default.nix
···
}:
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 = [
+3 -3
pkgs/tools/text/platinum-searcher/default.nix
···
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";
···
inherit rev;
owner = "monochromegane";
repo = "the_platinum_searcher";
-
sha256 = "06cs936w3l64ikszcysdm9ijn52kwgi1ffjxkricxbdb677gsk23";
+
sha256 = "09pkdfh7fqn3x4l9zaw5wzk20k7nfdwry7br9vfy3vv3fwv61ynp";
};
goDeps = ./deps.json;
+17
pkgs/tools/virtualization/nixos-container/default.nix
···
+
{ 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
+
'';
+
}
+81 -25
pkgs/top-level/all-packages.nix
···
fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {});
+
fetchMavenArtifact = callPackage ../build-support/fetchmavenartifact { };
+
packer = callPackage ../development/tools/packer { };
fetchpatch = callPackage ../build-support/fetchpatch { };
···
keybase = callPackage ../applications/misc/keybase { };
+
keybase-go = callPackage ../tools/security/keybase { };
+
keychain = callPackage ../tools/misc/keychain { };
keyfuzz = callPackage ../tools/inputmethods/keyfuzz { };
···
p7zip = callPackage ../tools/archivers/p7zip { };
-
packagekit = callPackage ../tools/package-management/packagekit { };
+
packagekit = callPackage ../tools/package-management/packagekit {
+
nix = nixUnstable;
+
};
pal = callPackage ../tools/misc/pal { };
···
solvespace = callPackage ../applications/graphics/solvespace { };
+
sonarr = callPackage ../servers/sonarr { };
+
sonata = callPackage ../applications/audio/sonata {
inherit (python3Packages) buildPythonApplication python isPy3k dbus pygobject3 mpd2;
};
···
udunits = callPackage ../development/libraries/udunits { };
+
uemacs = callPackage ../applications/editors/uemacs { };
+
uhttpmock = callPackage ../development/libraries/uhttpmock { };
uim = callPackage ../tools/inputmethods/uim {
···
unbound = callPackage ../tools/networking/unbound { };
units = callPackage ../tools/misc/units { };
+
+
unittest-cpp = callPackage ../development/libraries/unittest-cpp { };
unrar = callPackage ../tools/archivers/unrar { };
···
hugs = callPackage ../development/interpreters/hugs { };
-
path64 = callPackage ../development/compilers/path64 { };
-
openjdk7 =
if stdenv.isDarwin then
callPackage ../development/compilers/openjdk-darwin { }
···
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;
···
glpk = null;
suitesparse = null;
jdk = null;
-
openblas = openblasCompat;
+
openblas = openblas;
};
octaveFull = (lowPrio (callPackage ../development/interpreters/octave {
qt = qt4;
···
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;
};
···
docutils = pythonPackages.docutils;
+
doctl = callPackage ../development/tools/doctl { };
+
dot2tex = pythonPackages.dot2tex;
doxygen = callPackage ../development/tools/documentation/doxygen {
···
shellcheck = self.haskellPackages.ShellCheck;
+
shncpd = callPackage ../tools/networking/shncpd { };
+
sigrok-cli = callPackage ../development/tools/sigrok-cli { };
simpleTpmPk11 = callPackage ../tools/security/simple-tpm-pk11 { };
···
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 {
···
libu2f-host = callPackage ../development/libraries/libu2f-host { };
libu2f-server = callPackage ../development/libraries/libu2f-server { };
+
+
libui = callPackage ../development/libraries/libui { };
libunity = callPackage ../development/libraries/libunity { };
···
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 { };
···
python35Packages = recurseIntoAttrs (callPackage ./python-packages.nix {
python = python35;
self = python35Packages;
+
});
+
+
python36Packages = (callPackage ./python-packages.nix {
+
python = python36;
+
self = python36Packages;
});
pypyPackages = callPackage ./python-packages.nix {
···
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 { };
···
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;
···
openiscsi = callPackage ../os-specific/linux/open-iscsi { };
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_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 ];
···
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 {};
···
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 { };
···
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 { };
···
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;
···
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;
···
hugin = callPackage ../applications/graphics/hugin { };
+
+
hugo = callPackage ../applications/misc/hugo { };
hydrogen = callPackage ../applications/audio/hydrogen { };
···
pijul = callPackage ../applications/version-management/pijul { };
+
planner = callPackage ../applications/office/planner { };
+
playonlinux = callPackage ../applications/misc/playonlinux {
stdenv = stdenv_32bit;
···
pcsx2 = callPackage_i686 ../misc/emulators/pcsx2 { };
+
+
pekwm = callPackage ../applications/window-managers/pekwm { };
pencil = callPackage ../applications/graphics/pencil {
xulrunner = firefox-unwrapped;
···
vym = callPackage ../applications/misc/vym { };
-
w3m = callPackage ../applications/networking/browsers/w3m {
+
w3m = callPackage ../applications/networking/browsers/w3m {
graphicsSupport = !stdenv.isDarwin;
···
ckan = callPackage ../games/ckan { };
cockatrice = qt5.callPackage ../games/cockatrice { };
+
+
commandergenius = callPackage ../games/commandergenius { };
confd = callPackage ../tools/system/confd { };
···
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 { };
···
wcalc = callPackage ../applications/misc/wcalc { };
webfs = callPackage ../servers/http/webfs { };
+
+
wikicurses = callPackage ../applications/misc/wikicurses {
+
pythonPackages = python3Packages;
+
};
wineMinimal = callPackage ../misc/emulators/wine {
wineRelease = config.wine.release or "stable";
+3 -16
pkgs/top-level/default.nix
···
{ # 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.
···
&& 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
+24
pkgs/top-level/impure.nix
···
+
/* 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; })
+1 -1
pkgs/top-level/make-tarball.nix
···
echo 'abort "Illegal use of <nixpkgs> in Nixpkgs."' > $TMPDIR/barf.nix
# Make sure that Nixpkgs does not use <nixpkgs>
-
if grep -r '<nixpkgs\/' pkgs; then
+
if (find pkgs -type f -name '*.nix' -print | xargs grep '<nixpkgs\/'); then
echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
exit 1
fi
+2 -2
pkgs/top-level/php-packages.nix
···
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" ];
+43 -7
pkgs/top-level/python-packages.nix
···
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";
···
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 {
···
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
···
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
'';
···
};
};
+
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 {
···
# 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";
···
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;
···
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 ];
···
});
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";