Merge remote-tracking branch 'origin/master' into haskell_darwin_dyld

This commit is contained in:
Christian Gram Kalhauge 2016-07-20 14:28:28 +02:00
commit ab46f69802
775 changed files with 29788 additions and 9618 deletions

View File

@ -1,14 +1,22 @@
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
before_script:
- sudo mount -o remount,exec,size=2G,mode=755 /run/user
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

View File

@ -31,7 +31,7 @@ For pull-requests, please rebase onto nixpkgs `master`.
* [Documentation (Nix Expression Language chapter)](https://nixos.org/nix/manual/#ch-expression-language)
* [Manual (How to write packages for Nix)](https://nixos.org/nixpkgs/manual/)
* [Manual (NixOS)](https://nixos.org/nixos/manual/)
* [Nix Wiki](https://nixos.org/wiki/)
* [Nix Wiki](https://nixos.org/wiki/) (deprecated, see milestone ["Move the Wiki!"](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+milestone%3A%22Move+the+wiki%21%22))
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
* [Continuous package builds for 16.03 release](https://hydra.nixos.org/jobset/nixos/release-16.03)
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)

View File

@ -6,4 +6,4 @@ if ! builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.
else
import ./pkgs/top-level
import ./pkgs/top-level/impure.nix

View File

@ -89,27 +89,27 @@ in ...</programlisting>
<title>&lt;pkg&gt;.overrideDerivation</title>
<warning>
<para>Do not use this function in Nixpkgs. Because it breaks
package abstraction and doesnt provide error checking for
function arguments, it is only intended for ad-hoc customisation
(such as in <filename>~/.nixpkgs/config.nix</filename>).
</para>
<para>
Additionally, <varname>overrideDerivation</varname> forces an evaluation
of the Derivation which can be quite a performance penalty if there are many
overrides used.
<para>Do not use this function in Nixpkgs as it evaluates a Derivation
before modifying it, which breaks package abstraction and removes
error-checking of function arguments. In addition, this
evaluation-per-function application incurs a performance penalty,
which can become a problem if many overrides are used.
It is only intended for ad-hoc customisation, such as in
<filename>~/.nixpkgs/config.nix</filename>.
</para>
</warning>
<para>
The function <varname>overrideDerivation</varname> is usually available for all the
derivations in the nixpkgs expression (<varname>pkgs</varname>).
The function <varname>overrideDerivation</varname> creates a new derivation
based on an existing one by overriding the original's attributes with
the attribute set produced by the specified function.
This function is available on all
derivations defined using the <varname>makeOverridable</varname> function.
Most standard derivation-producing functions, such as
<varname>stdenv.mkDerivation</varname>, are defined using this
function, which means most packages in the nixpkgs expression,
<varname>pkgs</varname>, have this function.
</para>
<para>
It is used to create a new derivation by overriding the attributes of
the original derivation according to the given function.
</para>
<para>
Example usage:
@ -125,9 +125,9 @@ in ...</programlisting>
</para>
<para>
In the above example, the name, src and patches of the derivation
will be overridden, while all other attributes will be retained from the
original derivation.
In the above example, the <varname>name</varname>, <varname>src</varname>,
and <varname>patches</varname> of the derivation will be overridden, while
all other attributes will be retained from the original derivation.
</para>
<para>
@ -135,6 +135,20 @@ in ...</programlisting>
the original derivation.
</para>
<note>
<para>
A package's attributes are evaluated *before* being modified by
the <varname>overrideDerivation</varname> function.
For example, the <varname>name</varname> attribute reference
in <varname>url = "mirror://gnu/hello/${name}.tar.gz";</varname>
is filled-in *before* the <varname>overrideDerivation</varname> function
modifies the attribute set. This means that overriding the
<varname>name</varname> attribute, in this example, *will not* change the
value of the <varname>url</varname> attribute. Instead, we need to override
both the <varname>name</varname> *and* <varname>url</varname> attributes.
</para>
</note>
</section>
<section xml:id="sec-lib-makeOverridable">

View File

@ -457,7 +457,6 @@ rec {
/*** deprecated stuff ***/
deepSeqAttrs = throw "removed 2016-02-29 because unused and broken";
zipWithNames = zipAttrsWithNames;
zip = builtins.trace
"lib.zip is deprecated, use lib.zipAttrsWith instead" zipAttrsWith;

View File

@ -374,8 +374,4 @@ rec {
*/
subtractLists = e: filter (x: !(elem x e));
/*** deprecated stuff ***/
deepSeqList = throw "removed 2016-02-29 because unused and broken";
}

View File

@ -15,6 +15,7 @@
adev = "Adrien Devresse <adev@adev.name>";
Adjective-Object = "Maxwell Huang-Hobbs <mhuan13@gmail.com>";
adnelson = "Allen Nelson <ithinkican@gmail.com>";
adolfogc = "Adolfo E. García Castro <adolfo.garcia.cr@gmail.com>";
aespinosa = "Allan Espinosa <allan.espinosa@outlook.com>";
aflatter = "Alexander Flatter <flatter@fastmail.fm>";
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
@ -162,6 +163,7 @@
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>";
@ -185,6 +187,7 @@
joamaki = "Jussi Maki <joamaki@gmail.com>";
joelmo = "Joel Moberg <joel.moberg@gmail.com>";
joelteon = "Joel Taylor <me@joelt.io>";
joko = "Ioannis Koutras <ioannis.koutras@gmail.com>";
jpbernardy = "Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>";
jraygauthier = "Raymond Gauthier <jraygauthier@gmail.com>";
juliendehos = "Julien Dehos <dehos@lisic.univ-littoral.fr>";
@ -231,6 +234,7 @@
markus1189 = "Markus Hauck <markus1189@gmail.com>";
markWot = "Markus Wotringer <markus@wotringer.de>";
martijnvermaat = "Martijn Vermaat <martijn@vermaat.name>";
martingms = "Martin Gammelsæter <martin@mg.am>";
matejc = "Matej Cotman <cotman.matej@gmail.com>";
mathnerd314 = "Mathnerd314 <mathnerd314.gph+hs@gmail.com>";
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
@ -353,6 +357,7 @@
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>";
@ -420,6 +425,7 @@
wscott = "Wayne Scott <wsc9tt@gmail.com>";
wyvie = "Elijah Rum <elijahrum@gmail.com>";
yarr = "Dmitry V. <savraz@gmail.com>";
yurrriq = "Eric Bailey <eric@ericb.me>";
z77z = "Marco Maggesi <maggesi@math.unifi.it>";
zagy = "Christian Zagrodnick <cz@flyingcircus.io>";
zef = "Zef Hemel <zef@zef.me>";

View File

@ -1,3 +1,5 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/applications/16.04.2/ -A '*.tar.xz'
./maintainers/scripts/fetch-kde-qt.sh \
http://download.kde.org/stable/applications/16.04.3/ -A '*.tar.xz' \
>pkgs/desktops/kde-5/applications/srcs.nix

View File

@ -1,3 +1,5 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/frameworks/5.22/ -A '*.tar.xz'
./maintainers/scripts/fetch-kde-qt.sh \
http://download.kde.org/stable/frameworks/5.24/ -A '*.tar.xz' \
>pkgs/desktops/kde-5/frameworks/srcs.nix

View File

@ -1,3 +1,5 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/plasma/5.6.5/ -A '*.tar.xz'
./maintainers/scripts/fetch-kde-qt.sh \
http://download.kde.org/stable/plasma/5.7.1/ -A '*.tar.xz' \
>pkgs/desktops/kde-5/plasma/srcs.nix

View File

@ -1,58 +1,69 @@
#! /usr/bin/env bash
set -e
export NIX_CURL_FLAGS=-sS
while test -n "$1"; do
if [[ $1 == nix ]]; then
echo "=== Installing Nix..."
# Install Nix
bash <(curl -sS https://nixos.org/nix/install)
source $HOME/.nix-profile/etc/profile.d/nix.sh
# tell Travis to use folding
echo -en "travis_fold:start:$1\r"
# Make sure we can use hydra's binary cache
sudo mkdir /etc/nix
sudo sh -c 'echo "build-max-jobs = 4" > /etc/nix/nix.conf'
case $1 in
# Verify evaluation
echo "=== Verifying that nixpkgs evaluates..."
nix-env -f. -qa --json >/dev/null
elif [[ $1 == nox ]]; then
source $HOME/.nix-profile/etc/profile.d/nix.sh
echo "=== Installing nox..."
nix-build -A nox '<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
;;
echo "=== Checking NixOS options"
nix-build nixos/release.nix -A options --show-trace
nixos-options)
echo "=== Checking NixOS options"
echo "=== Checking tarball creation"
nix-build pkgs/top-level/release.nix -A tarball --show-trace
fi
nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr options --show-trace
;;
if [[ $TRAVIS_PULL_REQUEST == false ]]; then
echo "=== Not a pull request"
else
echo "=== Checking PR"
nixos-manual)
echo "=== Checking NixOS manuals"
if ! nix-shell -p nox --run "nox-review pr ${TRAVIS_PULL_REQUEST}"; then
if sudo dmesg | egrep 'Out of memory|Killed process' > /tmp/oom-log; then
echo "=== The build failed due to running out of memory:"
cat /tmp/oom-log
echo "=== Please disregard the result of this Travis build."
nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr manual --show-trace
;;
nixpkgs-manual)
echo "=== Checking nixpkgs manuals"
nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr manpages --show-trace
;;
nixpkgs-tarball)
echo "=== Checking nixpkgs tarball creation"
nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr tarball --show-trace
;;
nixpkgs-lint)
echo "=== Checking nixpkgs lint"
nix-shell --packages nixpkgs-lint --run "nixpkgs-lint -f $TRAVIS_BUILD_DIR"
;;
pr)
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
echo "=== No pull request found"
else
echo "=== Building pull request #$TRAVIS_PULL_REQUEST"
token=""
if [ -n "$GITHUB_TOKEN" ]; then
token="--token $GITHUB_TOKEN"
fi
nix-shell --packages nox git --run "nox-review pr --slug $TRAVIS_REPO_SLUG $token $TRAVIS_PULL_REQUEST"
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

View File

@ -0,0 +1,97 @@
<refentry xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
<refmeta>
<refentrytitle><command>nixos-version</command></refentrytitle>
<manvolnum>8</manvolnum>
<refmiscinfo class="source">NixOS</refmiscinfo>
</refmeta>
<refnamediv>
<refname><command>nixos-version</command></refname>
<refpurpose>show the NixOS version</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>nixos-version</command>
<arg><option>--hash</option></arg>
<arg><option>--revision</option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection><title>Description</title>
<para>This command shows the version of the currently active NixOS
configuration. For example:
<screen>$ nixos-version
16.03.1011.6317da4 (Emu)
</screen>
The version consists of the following elements:
<variablelist>
<varlistentry>
<term><literal>16.03</literal></term>
<listitem><para>The NixOS release, indicating the year and month
in which it was released (e.g. March 2016).</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>1011</literal></term>
<listitem><para>The number of commits in the Nixpkgs Git
repository between the start of the release branch and the commit
from which this version was built. This ensures that NixOS
versions are monotonically increasing. It is
<literal>git</literal> when the current NixOS configuration was
built from a checkout of the Nixpkgs Git repository rather than
from a NixOS channel.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>6317da4</literal></term>
<listitem><para>The first 7 characters of the commit in the
Nixpkgs Git repository from which this version was
built.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>Emu</literal></term>
<listitem><para>The code name of the NixOS release. The first
letter of the code name indicates that this is the N'th stable
NixOS release; for example, Emu is the fifth
release.</para></listitem>
</varlistentry>
</variablelist>
</para>
</refsection>
<refsection><title>Options</title>
<para>This command accepts the following options:</para>
<variablelist>
<varlistentry>
<term><option>--hash</option></term>
<term><option>--revision</option></term>
<listitem>
<para>Show the full SHA1 hash of the Git commit from which this
configuration was built, e.g.
<screen>$ nixos-version --hash
6317da40006f6bc2480c6781999c52d88dde2acf
</screen>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
</refentry>

View File

@ -27,5 +27,6 @@
<xi:include href="man-nixos-install.xml" />
<xi:include href="man-nixos-option.xml" />
<xi:include href="man-nixos-rebuild.xml" />
<xi:include href="man-nixos-version.xml" />
</reference>

View File

@ -13,8 +13,11 @@ echo "NixOS version is $version ($major)"
rm -f ec2-amis.nix
types="hvm pv"
stores="ebs s3"
regions="eu-west-1 eu-central-1 us-east-1 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
for type in hvm pv; do
for type in $types; do
link=$stateDir/$type
imageFile=$link/nixos.qcow2
system=x86_64-linux
@ -31,7 +34,7 @@ for type in hvm pv; do
--arg configuration "{ imports = [ <nixpkgs/nixos/maintainers/scripts/ec2/amazon-image.nix> ]; ec2.hvm = $hvmFlag; }"
fi
for store in ebs s3; do
for store in $stores; do
bucket=nixos-amis
bucketDir="$version-$type-$store"
@ -39,7 +42,7 @@ for type in hvm pv; do
prevAmi=
prevRegion=
for region in eu-west-1 eu-central-1 us-east-1 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 sa-east-1; do
for region in $regions; do
name=nixos-$version-$arch-$type-$store
description="NixOS $system $version ($type-$store)"
@ -51,10 +54,11 @@ for type in hvm pv; do
echo "doing $name in $region..."
if [ -n "$prevAmi" ]; then
ami=$(ec2-copy-image \
ami=$(aws ec2 copy-image \
--region "$region" \
--source-region "$prevRegion" --source-ami-id "$prevAmi" \
--name "$name" --description "$description" | cut -f 2)
--source-region "$prevRegion" --source-image-id "$prevAmi" \
--name "$name" --description "$description" | json -q .ImageId)
if [ "$ami" = null ]; then break; fi
else
if [ $store = s3 ]; then
@ -85,12 +89,12 @@ for type in hvm pv; do
ec2-upload-bundle \
-m $imageDir/$type.raw.manifest.xml \
-b "$bucket/$bucketDir" \
-a "$EC2_ACCESS_KEY" -s "$EC2_SECRET_KEY" \
-a "$AWS_ACCESS_KEY_ID" -s "$AWS_SECRET_ACCESS_KEY" \
--location EU
touch $imageDir/uploaded
fi
extraFlags="$bucket/$bucketDir/$type.raw.manifest.xml"
extraFlags="--image-location $bucket/$bucketDir/$type.raw.manifest.xml"
else
@ -115,7 +119,8 @@ for type in hvm pv; do
if [ -z "$snapId" -a -z "$volId" -a -z "$taskId" ]; then
echo "importing $vhdFile..."
taskId=$(ec2-import-volume $vhdFile --no-upload -f vhd \
-o "$EC2_ACCESS_KEY" -w "$EC2_SECRET_KEY" \
-O "$AWS_ACCESS_KEY_ID" -W "$AWS_SECRET_ACCESS_KEY" \
-o "$AWS_ACCESS_KEY_ID" -w "$AWS_SECRET_ACCESS_KEY" \
--region "$region" -z "${region}a" \
--bucket "$bucket" --prefix "$bucketDir/" \
| tee /dev/stderr \
@ -125,15 +130,16 @@ for type in hvm pv; do
if [ -z "$snapId" -a -z "$volId" ]; then
ec2-resume-import $vhdFile -t "$taskId" --region "$region" \
-o "$EC2_ACCESS_KEY" -w "$EC2_SECRET_KEY"
-O "$AWS_ACCESS_KEY_ID" -W "$AWS_SECRET_ACCESS_KEY" \
-o "$AWS_ACCESS_KEY_ID" -w "$AWS_SECRET_ACCESS_KEY"
fi
# Wait for the volume creation to finish.
if [ -z "$snapId" -a -z "$volId" ]; then
echo "waiting for import to finish..."
while true; do
volId=$(ec2-describe-conversion-tasks "$taskId" --region "$region" | sed 's/.*VolumeId.*\(vol-[0-9a-f]\+\).*/\1/ ; t ; d')
if [ -n "$volId" ]; then break; fi
volId=$(aws ec2 describe-conversion-tasks --conversion-task-ids "$taskId" --region "$region" | jq -r .ConversionTasks[0].ImportVolume.Volume.Id)
if [ "$volId" != null ]; then break; fi
sleep 10
done
@ -143,22 +149,24 @@ for type in hvm pv; do
# Delete the import task.
if [ -n "$volId" -a -n "$taskId" ]; then
echo "removing import task..."
ec2-delete-disk-image -t "$taskId" --region "$region" -o "$EC2_ACCESS_KEY" -w "$EC2_SECRET_KEY" || true
ec2-delete-disk-image -t "$taskId" --region "$region" \
-O "$AWS_ACCESS_KEY_ID" -W "$AWS_SECRET_ACCESS_KEY" \
-o "$AWS_ACCESS_KEY_ID" -w "$AWS_SECRET_ACCESS_KEY" || true
rm -f $stateDir/$region.$type.task-id
fi
# Create a snapshot.
if [ -z "$snapId" ]; then
echo "creating snapshot..."
snapId=$(ec2-create-snapshot "$volId" --region "$region" | cut -f 2)
snapId=$(aws ec2 create-snapshot --volume-id "$volId" --region "$region" --description "$description" | jq -r .SnapshotId)
if [ "$snapId" = null ]; then exit 1; fi
echo -n "$snapId" > $stateDir/$region.$type.snap-id
ec2-create-tags "$snapId" -t "Name=$description" --region "$region"
fi
# Wait for the snapshot to finish.
echo "waiting for snapshot to finish..."
while true; do
status=$(ec2-describe-snapshots "$snapId" --region "$region" | head -n1 | cut -f 4)
status=$(aws ec2 describe-snapshots --snapshot-ids "$snapId" --region "$region" | jq -r .Snapshots[0].State)
if [ "$status" = completed ]; then break; fi
sleep 10
done
@ -166,35 +174,50 @@ for type in hvm pv; do
# Delete the volume.
if [ -n "$volId" ]; then
echo "deleting volume..."
ec2-delete-volume "$volId" --region "$region" || true
aws ec2 delete-volume --volume-id "$volId" --region "$region" || true
rm -f $stateDir/$region.$type.vol-id
fi
extraFlags="-b /dev/sda1=$snapId:$vhdFileLogicalGigaBytes:true:gp2"
blockDeviceMappings="DeviceName=/dev/sda1,Ebs={SnapshotId=$snapId,VolumeSize=$vhdFileLogicalGigaBytes,DeleteOnTermination=true,VolumeType=gp2}"
extraFlags=""
if [ $type = pv ]; then
extraFlags+=" --root-device-name=/dev/sda1"
extraFlags+=" --root-device-name /dev/sda1"
else
extraFlags+=" --root-device-name /dev/sda1"
extraFlags+=" --sriov-net-support simple"
extraFlags+=" --ena-support"
fi
extraFlags+=" -b /dev/sdb=ephemeral0 -b /dev/sdc=ephemeral1 -b /dev/sdd=ephemeral2 -b /dev/sde=ephemeral3"
blockDeviceMappings+=" DeviceName=/dev/sdb,VirtualName=ephemeral0"
blockDeviceMappings+=" DeviceName=/dev/sdc,VirtualName=ephemeral1"
blockDeviceMappings+=" DeviceName=/dev/sdd,VirtualName=ephemeral2"
blockDeviceMappings+=" DeviceName=/dev/sde,VirtualName=ephemeral3"
fi
if [ $type = hvm ]; then
extraFlags+=" --sriov-net-support simple"
extraFlags+=" --ena-support"
fi
# Register the AMI.
if [ $type = pv ]; then
kernel=$(ec2-describe-images -o amazon --filter "manifest-location=*pv-grub-hd0_1.04-$arch*" --region "$region" | cut -f 2)
[ -n "$kernel" ]
kernel=$(aws ec2 describe-images --owner amazon --filters "Name=name,Values=pv-grub-hd0_1.04-$arch.gz" | jq -r .Images[0].ImageId)
if [ "$kernel" = null ]; then break; fi
echo "using PV-GRUB kernel $kernel"
extraFlags+=" --virtualization-type paravirtual --kernel $kernel"
else
extraFlags+=" --virtualization-type hvm"
fi
ami=$(ec2-register \
-n "$name" \
-d "$description" \
ami=$(aws ec2 register-image \
--name "$name" \
--description "$description" \
--region "$region" \
--architecture "$arch" \
$extraFlags | cut -f 2)
--block-device-mappings $blockDeviceMappings \
$extraFlags | jq -r .ImageId)
if [ "$ami" = null ]; then break; fi
fi
echo -n "$ami" > $amiFile
@ -204,23 +227,45 @@ for type in hvm pv; do
ami=$(cat $amiFile)
fi
if [ -z "$NO_WAIT" -o -z "$prevAmi" ]; then
echo "waiting for AMI..."
while true; do
status=$(ec2-describe-images "$ami" --region "$region" | head -n1 | cut -f 5)
if [ "$status" = available ]; then break; fi
sleep 10
done
ec2-modify-image-attribute \
--region "$region" "$ami" -l -a all
fi
echo "region = $region, type = $type, store = $store, ami = $ami"
if [ -z "$prevAmi" ]; then
prevAmi="$ami"
prevRegion="$region"
fi
done
done
done
for type in $types; do
link=$stateDir/$type
system=x86_64-linux
arch=x86_64
for store in $stores; do
for region in $regions; do
name=nixos-$version-$arch-$type-$store
amiFile=$stateDir/$region.$type.$store.ami-id
ami=$(cat $amiFile)
echo "region = $region, type = $type, store = $store, ami = $ami"
echo -n "waiting for AMI..."
while true; do
status=$(aws ec2 describe-images --image-ids "$ami" --region "$region" | jq -r .Images[0].State)
if [ "$status" = available ]; then break; fi
sleep 10
echo -n '.'
done
echo
# Make the image public.
aws ec2 modify-image-attribute \
--image-id "$ami" --region "$region" --launch-permission 'Add={Group=all}'
echo " \"$major\".$region.$type-$store = \"$ami\";" >> ec2-amis.nix
done

View File

@ -41,6 +41,15 @@ in
'';
};
consolePackages = mkOption {
type = types.listOf types.package;
default = with pkgs.kbdKeymaps; [ dvp neo ];
description = ''
List of additional packages that provide console fonts, keymaps and
other resources.
'';
};
consoleFont = mkOption {
type = types.str;
default = "Lat2-Terminus16";

View File

@ -161,6 +161,7 @@ in {
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no";
Restart = "on-failure";
};
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
};
sockets.pulseaudio = {

View File

@ -4,7 +4,7 @@ with lib;
let
cfg = config.i18n.inputMethod.fcitx;
fcitxPackage = pkgs.fcitx-with-plugins.override { plugins = cfg.engines; };
fcitxPackage = pkgs.fcitx.override { plugins = cfg.engines; };
fcitxEngine = types.package // {
name = "fcitx-engine";
check = x: (lib.types.package.check x) && (attrByPath ["meta" "isFcitxEngine"] false x);

View File

@ -1,6 +1,10 @@
#! @shell@
case "$1" in
-h|--help)
exec man nixos-version
exit 1
;;
--hash|--revision)
echo "@nixosRevision@"
;;

View File

@ -249,6 +249,7 @@
./services/misc/nix-ssh-serve.nix
./services/misc/nzbget.nix
./services/misc/octoprint.nix
./services/misc/packagekit.nix
./services/misc/parsoid.nix
./services/misc/phd.nix
./services/misc/plex.nix
@ -258,6 +259,7 @@
./services/misc/ripple-data-api.nix
./services/misc/rogue.nix
./services/misc/siproxd.nix
./services/misc/sonarr.nix
./services/misc/spice-vdagentd.nix
./services/misc/subsonic.nix
./services/misc/sundtek.nix
@ -368,6 +370,7 @@
./services/networking/ntopng.nix
./services/networking/ntpd.nix
./services/networking/nylon.nix
./services/networking/offlineimap.nix
./services/networking/oidentd.nix
./services/networking/openfire.nix
./services/networking/openntpd.nix
@ -474,6 +477,7 @@
./services/web-servers/winstone.nix
./services/web-servers/zope2.nix
./services/x11/colord.nix
./services/x11/compton.nix
./services/x11/unclutter.nix
./services/x11/desktop-managers/default.nix
./services/x11/display-managers/auto.nix
@ -524,6 +528,7 @@
./system/boot/luksroot.nix
./system/boot/modprobe.nix
./system/boot/networkd.nix
./system/boot/plymouth.nix
./system/boot/resolved.nix
./system/boot/shutdown.nix
./system/boot/stage-1.nix

View File

@ -13,12 +13,16 @@ let
|| elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ])
&& fs.fsType == "zfs")
(attrValues config.fileSystems) != [];
# Ascertain whether NixOS container support is required
containerSupportRequired =
config.boot.enableContainers && config.containers != {};
in
{
options.security.grsecurity = {
enable = mkEnableOption "Grsecurity/PaX";
enable = mkEnableOption "grsecurity/PaX";
lockTunables = mkOption {
type = types.bool;
@ -27,9 +31,9 @@ in
description = ''
Whether to automatically lock grsecurity tunables
(<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.
'';
};
@ -48,10 +52,6 @@ in
(isYES "GRKERNSEC_SYSCTL_DISTRO")
];
# Crashing on an overflow in kernel land is user unfriendly and may prevent
# the system from booting, which is too severe for our use case.
boot.kernelParams = [ "pax_size_overflow_report_only" ];
# Install PaX related utillities into the system profile. Eventually, we
# also want to include gradm here.
environment.systemPackages = with pkgs; [ paxctl pax-utils ];
@ -59,7 +59,7 @@ in
# Install rules for the grsec device node
services.udev.packages = [ pkgs.gradm ];
# This service unit is responsible for locking the Grsecurity tunables. The
# This service unit is responsible for locking the grsecurity tunables. The
# unit is always defined, but only activated on bootup if lockTunables is
# toggled. When lockTunables is toggled, failure to activate the unit will
# enter emergency mode. The intent is to make it difficult to silently
@ -105,7 +105,7 @@ in
"kernel.grsecurity.chroot_deny_chroot" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0;
"kernel.grsecurity.chroot_deny_pivot" = mkForce 0;
} // optionalAttrs config.boot.enableContainers {
} // optionalAttrs containerSupportRequired {
# chroot(2) restrictions that conflict with NixOS lightweight containers
"kernel.grsecurity.chroot_deny_chmod" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0;

View File

@ -154,7 +154,7 @@ in {
'';
script = ''
${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --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}

View File

@ -78,7 +78,7 @@ in
test -e ${stateDir}/saves/${cfg.saveName}.zip || \
${pkgs.factorio-headless}/bin/factorio \
--config=${cfg.configFile} \
--create=${cfg.saveName}
--create=${stateDir}/saves/${cfg.saveName}.zip
'';
serviceConfig = {
@ -93,7 +93,7 @@ in
"${pkgs.factorio-headless}/bin/factorio"
"--config=${cfg.configFile}"
"--port=${toString cfg.port}"
"--start-server=${cfg.saveName}"
"--start-server=${stateDir}/saves/${cfg.saveName}.zip"
];
};
};

View File

@ -126,7 +126,7 @@ in
environment = {
LD_LIBRARY_PATH = ''/run/opengl-driver/lib:/run/opengl-driver-32/lib'';
DISPLAY = ":0";
DISPLAY = ":${toString config.services.xserver.display}";
GPU_MAX_ALLOC_PERCENT = "100";
GPU_USE_SYNC_OBJECTS = "1";
};

View File

@ -0,0 +1,61 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.packagekit;
backend = "nix";
packagekitConf = ''
[Daemon]
DefaultBackend=${backend}
KeepCache=false
'';
vendorConf = ''
[PackagesNotFound]
DefaultUrl=https://github.com/NixOS/nixpkgs
CodecUrl=https://github.com/NixOS/nixpkgs
HardwareUrl=https://github.com/NixOS/nixpkgs
FontUrl=https://github.com/NixOS/nixpkgs
MimeUrl=https://github.com/NixOS/nixpkgs
'';
in
{
options = {
services.packagekit = {
enable = mkEnableOption
''
PackageKit provides a cross-platform D-Bus abstraction layer for
installing software. Software utilizing PackageKit can install
software regardless of the package manager.
'';
};
};
config = mkIf cfg.enable {
services.dbus.packages = [ pkgs.packagekit ];
systemd.services.packagekit = {
description = "PackageKit Daemon";
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${pkgs.packagekit}/libexec/packagekitd";
serviceConfig.User = "root";
serviceConfig.BusName = "org.freedesktop.PackageKit";
serviceConfig.Type = "dbus";
};
environment.etc."PackageKit/PackageKit.conf".text = packagekitConf;
environment.etc."PackageKit/Vendor.conf".text = vendorConf;
};
}

View File

@ -0,0 +1,44 @@
{ config, pkgs, lib, mono, ... }:
with lib;
let
cfg = config.services.sonarr;
in
{
options = {
services.sonarr = {
enable = mkEnableOption "Sonarr";
};
};
config = mkIf cfg.enable {
systemd.services.sonarr = {
description = "Sonarr";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
test -d /var/lib/sonarr/ || {
echo "Creating sonarr data directory in /var/lib/sonarr/"
mkdir -p /var/lib/sonarr/
}
chown -R sonarr /var/lib/sonarr/
chmod 0700 /var/lib/sonarr/
'';
serviceConfig = {
Type = "simple";
User = "sonarr";
Group = "nogroup";
PermissionsStartOnly = "true";
ExecStart = "${pkgs.sonarr}/bin/NzbDrone --no-browser";
Restart = "on-failure";
};
};
users.extraUsers.sonarr = {
home = "/var/lib/sonarr";
};
};
}

View File

@ -9,6 +9,7 @@ let
envOptions = {
PATHS_DATA = cfg.dataDir;
PATHS_PLUGINS = "${cfg.dataDir}/plugins";
PATHS_LOGS = "${cfg.dataDir}/log";
SERVER_PROTOCOL = cfg.protocol;
@ -37,6 +38,8 @@ let
USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole;
AUTH_ANONYMOUS_ENABLED = b2s cfg.auth.anonymous.enable;
AUTH_ANONYMOUS_ORG_NAME = cfg.auth.anonymous.org_name;
AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role;
ANALYTICS_REPORTING_ENABLED = b2s cfg.analytics.reporting.enable;
} // cfg.extraOptions;
@ -196,6 +199,17 @@ in {
default = false;
type = types.bool;
};
org_name = mkOption {
description = "Which organization to allow anonymous access to";
default = "Main Org.";
type = types.str;
};
org_role = mkOption {
description = "Which role anonymous users have in the organization";
default = "Viewer";
type = types.str;
};
};
analytics.reporting = {
@ -222,6 +236,8 @@ in {
"Grafana passwords will be stored as plaintext in the Nix store!"
];
environment.systemPackages = [ cfg.package ];
systemd.services.grafana = {
description = "Grafana Service Daemon";
wantedBy = ["multi-user.target"];
@ -234,6 +250,7 @@ in {
};
preStart = ''
ln -fs ${cfg.package}/share/grafana/conf ${cfg.dataDir}
ln -fs ${cfg.package}/share/grafana/vendor ${cfg.dataDir}
'';
};

View File

@ -0,0 +1,80 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.sysstat;
in {
options = {
services.sysstat = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable sar system activity collection.
'';
};
collect-frequency = mkOption {
default = "*:00/10";
description = ''
OnCalendar specification for sysstat-collect
'';
};
collect-args = mkOption {
default = "1 1";
description = ''
Arguments to pass sa1 when collecting statistics
'';
};
};
};
config = mkIf cfg.enable {
systemd.services.sysstat = {
description = "Resets System Activity Logs";
wantedBy = [ "multi-user.target" ];
preStart = "test -d /var/log/sa || mkdir -p /var/log/sa";
serviceConfig = {
User = "root";
RemainAfterExit = true;
Type = "oneshot";
ExecStart = "${pkgs.sysstat}/lib/sa/sa1 --boot";
};
};
systemd.services.sysstat-collect = {
description = "system activity accounting tool";
unitConfig.Documentation = "man:sa1(8)";
serviceConfig = {
Type = "oneshot";
User = "root";
ExecStart = "${pkgs.sysstat}/lib/sa/sa1 ${cfg.collect-args}";
};
};
systemd.timers.sysstat-collect = {
description = "Run system activity accounting tool on a regular basis";
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = cfg.collect-frequency;
};
systemd.services.sysstat-summary = {
description = "Generate a daily summary of process accounting";
unitConfig.Documentation = "man:sa2(8)";
serviceConfig = {
Type = "oneshot";
User = "root";
ExecStart = "${pkgs.sysstat}/lib/sa/sa2 -A";
};
};
systemd.timers.sysstat-summary = {
description = "Generate summary of yesterday's process accounting";
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "00:07:00";
};
};
}

View File

@ -48,7 +48,7 @@ in
default = "";
type = str;
description = ''
Password.
Password. WARNING: The password becomes world readable in the Nix store.
'';
};

View File

@ -0,0 +1,73 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.offlineimap;
in {
options.services.offlineimap = {
enable = mkEnableOption "Offlineimap, a software to dispose your mailbox(es) as a local Maildir(s).";
install = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether to install a user service for Offlineimap. Once
the service is started, emails will be fetched automatically.
The service must be manually started for each user with
"systemctl --user start offlineimap" or globally through
<varname>services.offlineimap.enable</varname>.
'';
};
package = mkOption {
type = types.package;
default = pkgs.offlineimap;
defaultText = "pkgs.offlineimap";
description = "Offlineimap derivation to use.";
};
path = mkOption {
type = types.listOf types.path;
default = [];
example = literalExample "[ pkgs.pass pkgs.bash pkgs.notmuch ]";
description = "List of derivations to put in Offlineimap's path.";
};
onCalendar = mkOption {
type = types.str;
default = "*:0/3"; # every 3 minutes
description = "How often is offlineimap started. Default is '*:0/3' meaning every 3 minutes. See systemd.time(7) for more information about the format.";
};
timeoutStartSec = mkOption {
type = types.str;
default = "120sec"; # Kill if still alive after 2 minutes
description = "How long waiting for offlineimap before killing it. Default is '120sec' meaning every 2 minutes. See systemd.time(7) for more information about the format.";
};
};
config = mkIf (cfg.enable || cfg.install) {
systemd.user.services.offlineimap = {
description = "Offlineimap: a software to dispose your mailbox(es) as a local Maildir(s)";
serviceConfig = {
Type = "oneshot";
ExecStart = "${cfg.package}/bin/offlineimap -u basic -o -1";
TimeoutStartSec = cfg.timeoutStartSec;
};
path = cfg.path;
};
environment.systemPackages = [ "${cfg.package}" ];
systemd.user.timers.offlineimap = {
description = "offlineimap timer";
timerConfig = {
Unit = "offlineimap.service";
OnCalendar = cfg.onCalendar;
# start immediately after computer is started:
Persistent = "true";
};
} // optionalAttrs cfg.enable { wantedBy = [ "default.target" ]; };
};
}

View File

@ -33,7 +33,7 @@ in
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.caddy}/bin/caddy -conf=${configFile} -email=${cfg.email}";
ExecStart = "${pkgs.caddy.bin}/bin/caddy -conf=${configFile} -email=${cfg.email}";
Type = "simple";
User = "caddy";
Group = "caddy";

View File

@ -0,0 +1,225 @@
{ config, lib, pkgs, ... }:
with lib;
with builtins;
let
cfg = config.services.compton;
configFile = pkgs.writeText "compton.conf"
(optionalString cfg.fade ''
# fading
fading = true;
fade-delta = ${toString cfg.fadeDelta};
fade-in-step = ${elemAt cfg.fadeSteps 0};
fade-out-step = ${elemAt cfg.fadeSteps 1};
fade-exclude = ${toJSON cfg.fadeExclude};
'' +
optionalString cfg.shadow ''
# shadows
shadow = true;
shadow-offset-x = ${toString (elemAt cfg.shadowOffsets 0)};
shadow-offset-y = ${toString (elemAt cfg.shadowOffsets 1)};
shadow-opacity = ${cfg.shadowOpacity};
shadow-exclude = ${toJSON cfg.shadowExclude};
'' + ''
# opacity
active-opacity = ${cfg.activeOpacity};
inactive-opacity = ${cfg.inactiveOpacity};
menu-opacity = ${cfg.menuOpacity};
# other options
backend = ${toJSON cfg.backend};
vsync = ${toJSON cfg.vSync};
refresh-rate = ${toString cfg.refreshRate};
'' + cfg.extraOptions);
in {
options.services.compton = {
enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether of not to enable Compton as the X.org composite manager.
'';
};
fade = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Fade windows in and out.
'';
};
fadeDelta = mkOption {
type = types.int;
default = 10;
example = 5;
description = ''
Time between fade animation step (in ms).
'';
};
fadeSteps = mkOption {
type = types.listOf types.str;
default = [ "0.028" "0.03" ];
example = [ "0.04" "0.04" ];
description = ''
Opacity change between fade steps (in and out).
'';
};
fadeExclude = mkOption {
type = types.listOf types.str;
default = [];
example = [
"window_type *= 'menu'"
"name ~= 'Firefox$'"
"focused = 1"
];
description = ''
List of condition of windows that should have no shadow.
See <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 ];
};
}

View File

@ -121,7 +121,9 @@ in {
services.upower.enable = config.powerManagement.enable;
services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ];
services.colord.enable = mkDefault true;
services.packagekit.enable = mkDefault true;
hardware.bluetooth.enable = mkDefault true;
services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];

View File

@ -50,13 +50,13 @@ in
security.setuidOwners = [
{
program = "kcheckpass";
source = "${kde5.plasma-workspace}/lib/libexec/kcheckpass";
source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
owner = "root";
setuid = true;
}
{
program = "start_kdeinit_wrapper";
source = "${kde5.plasma-workspace}/lib/libexec/kf5/start_kdeinit_wrapper";
program = "start_kdeinit";
source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
owner = "root";
setuid = true;
}
@ -65,10 +65,50 @@ in
environment.systemPackages =
[
kde5.frameworkintegration
kde5.kactivities
kde5.kauth
kde5.kcmutils
kde5.kconfig
kde5.kconfigwidgets
kde5.kcoreaddons
kde5.kdbusaddons
kde5.kdeclarative
kde5.kded
kde5.kdesu
kde5.kdnssd
kde5.kemoticons
kde5.kfilemetadata
kde5.kglobalaccel
kde5.kguiaddons
kde5.kiconthemes
kde5.kidletime
kde5.kimageformats
kde5.kinit
kde5.kio
kde5.kjobwidgets
kde5.knewstuff
kde5.knotifications
kde5.knotifyconfig
kde5.kpackage
kde5.kparts
kde5.kpeople
kde5.krunner
kde5.kservice
kde5.ktextwidgets
kde5.kwallet
kde5.kwayland
kde5.kwidgetsaddons
kde5.kxmlgui
kde5.kxmlrpcclient
kde5.plasma-framework
kde5.solid
kde5.sonnet
kde5.threadweaver
kde5.breeze
kde5.kactivitymanagerd
kde5.kde-cli-tools
kde5.kdecoration
kde5.kdeplasma-addons
kde5.kgamma5
kde5.khelpcenter
@ -76,12 +116,16 @@ in
kde5.kinfocenter
kde5.kmenuedit
kde5.kscreen
kde5.kscreenlocker
kde5.ksysguard
kde5.kwayland
kde5.kwin
kde5.kwrited
kde5.libkscreen
kde5.libksysguard
kde5.milou
kde5.oxygen
kde5.plasma-integration
kde5.polkit-kde-agent
kde5.systemsettings

View File

@ -34,7 +34,7 @@ let
${optionalString cfg.displayManager.logToJournal ''
if [ -z "$_DID_SYSTEMD_CAT" ]; then
_DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$1"
_DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$@"
fi
''}

View File

@ -4,7 +4,8 @@ with lib;
let
dmcfg = config.services.xserver.displayManager;
xcfg = config.services.xserver;
dmcfg = xcfg.displayManager;
xEnv = config.systemd.services."display-manager".environment;
cfg = dmcfg.lightdm;
@ -36,16 +37,31 @@ let
lightdmConf = writeText "lightdm.conf"
''
[LightDM]
greeter-user = ${config.users.extraUsers.lightdm.name}
greeters-directory = ${cfg.greeter.package}
${optionalString cfg.greeter.enable ''
greeter-user = ${config.users.extraUsers.lightdm.name}
greeters-directory = ${cfg.greeter.package}
''}
sessions-directory = ${dmcfg.session.desktops}
[Seat:*]
xserver-command = ${xserverWrapper}
session-wrapper = ${dmcfg.session.script}
greeter-session = ${cfg.greeter.name}
${optionalString cfg.greeter.enable ''
greeter-session = ${cfg.greeter.name}
''}
${optionalString cfg.autoLogin.enable ''
autologin-user = ${cfg.autoLogin.user}
autologin-user-timeout = ${toString cfg.autoLogin.timeout}
autologin-session = ${defaultSessionName}
''}
${cfg.extraSeatDefaults}
'';
defaultSessionName =
let
dm = xcfg.desktopManager.default;
wm = xcfg.windowManager.default;
in dm + optionalString (wm != "none") (" + " + wm);
in
{
# Note: the order in which lightdm greeter modules are imported
@ -68,6 +84,14 @@ in
};
greeter = {
enable = mkOption {
type = types.bool;
default = true;
description = ''
If set to false, run lightdm in greeterless mode. This only works if autologin
is enabled and autoLogin.timeout is zero.
'';
};
package = mkOption {
type = types.package;
description = ''
@ -102,10 +126,67 @@ in
description = "Extra lines to append to SeatDefaults section.";
};
autoLogin = mkOption {
default = {};
description = ''
Configuration for automatic login.
'';
type = types.submodule {
options = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Automatically log in as the specified <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 = {
@ -144,6 +225,17 @@ in
session optional ${pkgs.systemd}/lib/security/pam_systemd.so
'';
};
security.pam.services.lightdm-autologin.text = ''
auth requisite pam_nologin.so
auth required pam_succeed_if.so uid >= 1000 quiet
auth required pam_permit.so
account include lightdm
password include lightdm
session include lightdm
'';
users.extraUsers.lightdm = {
createHome = true;

View File

@ -27,6 +27,7 @@ let
${cfg.stopScript}
'';
cfgFile = pkgs.writeText "sddm.conf" ''
[General]
HaltCommand=${pkgs.systemd}/bin/systemctl poweroff
@ -154,7 +155,7 @@ in
type = types.bool;
default = false;
description = ''
Automatically log in as the sepecified <option>autoLogin.user</option>.
Automatically log in as <option>autoLogin.user</option>.
'';
};
@ -162,7 +163,7 @@ in
type = types.nullOr types.str;
default = null;
description = ''
User to be used for the autologin.
User to be used for the automatic login.
'';
};
@ -170,8 +171,8 @@ in
type = types.bool;
default = false;
description = ''
If true automatic login will kick in again on session exit, otherwise it
will work only the first time.
If true automatic login will kick in again on session exit (logout), otherwise it
will only log in automatically when the display-manager is started.
'';
};
};

View File

@ -198,6 +198,8 @@ in {
environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ];
services.udev.packages = [ pkgs.libinput ];
services.xserver.config =
''
# Automatically enable the libinput driver for all touchpads.

View File

@ -108,7 +108,7 @@ in {
RestartSec = 3;
Restart = "always";
};
environment = { DISPLAY = ":0"; };
environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
};
};

View File

@ -39,12 +39,6 @@ in {
default = 1;
};
displayName = mkOption {
description = "Name of the X11 display";
type = types.str;
default = ":0";
};
excluded = mkOption {
description = "Names of windows where unclutter should not apply";
type = types.listOf types.str;
@ -67,7 +61,7 @@ in {
serviceConfig.ExecStart = ''
${cfg.package}/bin/unclutter \
-idle ${toString cfg.timeout} \
-display ${cfg.displayName} \
-display :${toString config.services.xserver.display} \
-jitter ${toString (cfg.threeshold - 1)} \
${optionalString cfg.keystroke "-keystroke"} \
${concatMapStrings (x: " -"+x) cfg.extraOptions} \

View File

@ -19,6 +19,7 @@ in
./jwm.nix
./metacity.nix
./openbox.nix
./pekwm.nix
./notion.nix
./ratpoison.nix
./sawfish.nix

View File

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.windowManager.pekwm;
in
{
###### interface
options = {
services.xserver.windowManager.pekwm.enable = mkEnableOption "pekwm";
};
###### implementation
config = mkIf cfg.enable {
services.xserver.windowManager.session = singleton {
name = "pekwm";
start = ''
${pkgs.pekwm}/bin/pekwm &
waitPID=$!
'';
};
environment.systemPackages = [ pkgs.pekwm ];
};
}

View File

@ -36,6 +36,8 @@ with lib;
config = mkMerge [
(mkIf config.systemd.coredump.enable {
systemd.additionalUpstreamSystemUnits = [ "systemd-coredump.socket" "systemd-coredump@.service" ];
environment.etc."systemd/coredump.conf".text =
''
[Coredump]
@ -45,7 +47,7 @@ with lib;
# Have the kernel pass core dumps to systemd's coredump helper binary.
# From systemd's 50-coredump.conf file. See:
# <https://github.com/systemd/systemd/blob/v218/sysctl.d/50-coredump.conf.in>
boot.kernel.sysctl."kernel.core_pattern" = "|${pkgs.systemd}/lib/systemd/systemd-coredump %p %u %g %s %t %e";
boot.kernel.sysctl."kernel.core_pattern" = "|${pkgs.systemd}/lib/systemd/systemd-coredump %P %u %g %s %t %c %e";
})
(mkIf (!config.systemd.coredump.enable) {

View File

@ -100,9 +100,6 @@ in
'';
boot.initrd.network.postCommands = ''
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo '${cfg.shell}' > /etc/shells
echo 'root:x:0:0:root:/root:${cfg.shell}' > /etc/passwd
echo 'passwd: files' > /etc/nsswitch.conf

View File

@ -0,0 +1,139 @@
{ config, lib, pkgs, ... }:
with lib;
let
inherit (pkgs) plymouth;
cfg = config.boot.plymouth;
themesEnv = pkgs.buildEnv {
name = "plymouth-themes";
paths = [ plymouth ] ++ cfg.themePackages;
};
configFile = pkgs.writeText "plymouthd.conf" ''
[Daemon]
ShowDelay=0
Theme=${cfg.theme}
'';
in
{
options = {
boot.plymouth = {
enable = mkEnableOption "Plymouth boot splash screen";
themePackages = mkOption {
default = [];
type = types.listOf types.package;
description = ''
Extra theme packages for plymouth.
'';
};
theme = mkOption {
default = "fade-in";
type = types.str;
description = ''
Splash screen theme.
'';
};
logo = mkOption {
type = types.path;
default = pkgs.fetchurl {
url = "https://nixos.org/logo/nixos-hires.png";
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
};
description = ''
Logo which is displayed on the splash screen.
'';
};
};
};
config = mkIf cfg.enable {
boot.kernelParams = [ "splash" ];
# To be discoverable by systemd.
environment.systemPackages = [ plymouth ];
environment.etc."plymouth/plymouthd.conf".source = configFile;
environment.etc."plymouth/plymouthd.defaults".source = "${plymouth}/share/plymouth/plymouth.defaults";
environment.etc."plymouth/logo.png".source = cfg.logo;
environment.etc."plymouth/themes".source = "${themesEnv}/share/plymouth/themes";
# XXX: Needed because we supply a different set of plugins in initrd.
environment.etc."plymouth/plugins".source = "${plymouth}/lib/plymouth";
systemd.packages = [ plymouth ];
systemd.services.plymouth-kexec.wantedBy = [ "kexec.target" ];
systemd.services.plymouth-halt.wantedBy = [ "halt.target" ];
systemd.services.plymouth-quit = {
wantedBy = [ "multi-user.target" ];
after = [ "display-manager.service" "multi-user.target" ];
};
systemd.services.plymouth-poweroff.wantedBy = [ "poweroff.target" ];
systemd.services.plymouth-reboot.wantedBy = [ "reboot.target" ];
systemd.services.plymouth-read-write.wantedBy = [ "sysinit.target" ];
boot.initrd.extraUtilsCommands = ''
copy_bin_and_libs ${pkgs.plymouth}/bin/plymouthd
copy_bin_and_libs ${pkgs.plymouth}/bin/plymouth
moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
mkdir -p $out/lib/plymouth/renderers
cp ${plymouth}/lib/plymouth/{text,details,$moduleName}.so $out/lib/plymouth
cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/lib/plymouth/renderers
mkdir -p $out/share/plymouth/themes
cp ${plymouth}/share/plymouth/plymouthd.defaults $out/share/plymouth
cp -r ${themesEnv}/share/plymouth/themes/{text,details,${cfg.theme}} $out/share/plymouth/themes
cp ${cfg.logo} $out/share/plymouth/logo.png
'';
boot.initrd.extraUtilsCommandsTest = ''
$out/bin/plymouthd --help >/dev/null
$out/bin/plymouth --help >/dev/null
'';
boot.initrd.extraUdevRulesCommands = ''
cp ${config.systemd.package}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out
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/share/plymouth/plymouthd.defaults /etc/plymouth/plymouthd.defaults
ln -s $extraUtils/share/plymouth/logo.png /etc/plymouth/logo.png
ln -s $extraUtils/share/plymouth/themes /etc/plymouth/themes
ln -s $extraUtils/lib/plymouth /etc/plymouth/plugins
plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
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
'';
};
}

View File

@ -3,6 +3,7 @@
targetRoot=/mnt-root
console=tty1
extraUtils="@extraUtils@"
export LD_LIBRARY_PATH=@extraUtils@/lib
export PATH=@extraUtils@/bin
ln -s @extraUtils@/bin /bin
@ -13,6 +14,8 @@ export LVM_SUPPRESS_FD_WARNINGS=true
fail() {
if [ -n "$panicOnFail" ]; then exit 1; fi
@preFailCommands@
# If starting stage 2 failed, allow the user to repair the problem
# in an interactive shell.
cat <<EOF
@ -70,6 +73,8 @@ mount -t sysfs sysfs /sys
mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev
mkdir -p /run
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /run
mkdir /dev/pts
mount -t devpts devpts /dev/pts
# Log the script output to /dev/kmsg or /run/log/stage-1-init.log.
mkdir -p /tmp

View File

@ -81,9 +81,9 @@ let
# Copy ld manually since it isn't detected correctly
cp -pv ${pkgs.glibc.out}/lib/ld*.so.? $out/lib
# Copy all of the needed libraries for the binaries
for BIN in $(find $out/{bin,sbin} -type f); do
echo "Copying libs for bin $BIN"
# Copy all of the needed libraries
find $out/bin $out/lib -type f | while read BIN; do
echo "Copying libs for executable $BIN"
LDD="$(ldd $BIN)" || continue
LIBS="$(echo "$LDD" | awk '{print $3}' | sed '/^$/d')"
for LIB in $LIBS; do
@ -104,13 +104,17 @@ let
stripDirs "lib bin" "-s"
# Run patchelf to make the programs refer to the copied libraries.
for i in $out/bin/* $out/lib/*; do if ! test -L $i; then nuke-refs -e $out $i; fi; done
find $out/bin $out/lib -type f | while read i; do
if ! test -L $i; then
nuke-refs -e $out $i
fi
done
for i in $out/bin/*; do
if ! test -L $i; then
echo "patching $i..."
patchelf --set-interpreter $out/lib/ld*.so.? --set-rpath $out/lib $i || true
fi
find $out/bin -type f | while read i; do
if ! test -L $i; then
echo "patching $i..."
patchelf --set-interpreter $out/lib/ld*.so.? --set-rpath $out/lib $i || true
fi
done
# Make sure that the patchelf'ed binaries still work.
@ -138,6 +142,7 @@ let
udevRules = pkgs.stdenv.mkDerivation {
name = "udev-rules";
allowedReferences = [ extraUtils ];
buildCommand = ''
mkdir -p $out
@ -160,7 +165,8 @@ let
--replace /sbin/mdadm ${extraUtils}/bin/mdadm \
--replace /bin/sh ${extraUtils}/bin/sh \
--replace /usr/bin/readlink ${extraUtils}/bin/readlink \
--replace /usr/bin/basename ${extraUtils}/bin/basename
--replace /usr/bin/basename ${extraUtils}/bin/basename \
--replace ${udev}/bin/udevadm ${extraUtils}/bin/udevadm
done
# Work around a bug in QEMU, which doesn't implement the "READ
@ -202,7 +208,7 @@ let
inherit (config.boot) resumeDevice devSize runSize;
inherit (config.boot.initrd) checkJournalingFS
preLVMCommands preDeviceCommands postDeviceCommands postMountCommands kernelModules;
preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules;
resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}")
(filter (sd: (sd ? label || hasPrefix "/dev/" sd.device) && !sd.randomEncryption) config.swapDevices);
@ -330,6 +336,14 @@ in
'';
};
boot.initrd.preFailCommands = mkOption {
default = "";
type = types.lines;
description = ''
Shell commands to be executed before the failure prompt is shown.
'';
};
boot.initrd.extraUtilsCommands = mkOption {
internal = true;
default = "";

View File

@ -176,7 +176,7 @@ rec {
${optionalString (type == "system") ''
# Stupid misc. symlinks.
ln -s ${cfg.defaultUnit} $out/default.target
ln -s ${cfg.ctrlAltDelUnit} $out/ctrl-alt-del.target
ln -s rescue.target $out/kbrequest.target
mkdir -p $out/getty.target.wants/

View File

@ -120,7 +120,6 @@ let
"systemd-poweroff.service"
"halt.target"
"systemd-halt.service"
"ctrl-alt-del.target"
"shutdown.target"
"umount.target"
"final.target"
@ -162,7 +161,6 @@ let
"systemd-hostnamed.service"
"systemd-binfmt.service"
]
++ cfg.additionalUpstreamSystemUnits;
upstreamSystemWants =
@ -485,6 +483,15 @@ in
description = "Default unit started when the system boots.";
};
systemd.ctrlAltDelUnit = mkOption {
default = "reboot.target";
type = types.str;
example = "poweroff.target";
description = ''
Target that should be started when Ctrl-Alt-Delete is pressed.
'';
};
systemd.globalEnvironment = mkOption {
type = types.attrs;
default = {};
@ -764,7 +771,7 @@ in
{ wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = service.startAt;
})
(filterAttrs (name: service: service.startAt != "") cfg.services);
(filterAttrs (name: service: service.enable && service.startAt != "") cfg.services);
# Generate timer units for all services that have a startAt value.
systemd.user.timers =

View File

@ -270,7 +270,23 @@ in
("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d ${cfgZfs.devNodes} -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}"
'';
};
in listToAttrs (map createImportService dataPools) // {
# This forces a sync of any ZFS pools prior to poweroff, even if they're set
# to sync=disabled.
createSyncService = pool:
nameValuePair "zfs-sync-${pool}" {
description = "Sync ZFS pool \"${pool}\"";
wantedBy = [ "shutdown.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = ''
${zfsUserPkg}/sbin/zfs set nixos:shutdown-time="$(date)" "${pool}"
'';
};
in listToAttrs (map createImportService dataPools ++ map createSyncService allPools) // {
"zfs-mount" = { after = [ "systemd-modules-load.service" ]; };
"zfs-share" = { after = [ "systemd-modules-load.service" ]; };
"zed" = { after = [ "systemd-modules-load.service" ]; };

View File

@ -5,14 +5,33 @@ with lib;
let
makeColor = n: value: "COLOR_${toString n}=${value}";
makeColorCS =
let positions = [ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" ];
in n: value: "\033]P${elemAt position n}${value}";
colors = concatImapStringsSep "\n" makeColor config.i18n.consoleColors;
isUnicode = hasSuffix "UTF-8" (toUpper config.i18n.defaultLocale);
optimizedKeymap = pkgs.runCommand "keymap" {
nativeBuildInputs = [ pkgs.kbd ];
} ''
cd ${kbdEnv}/share/keymaps
loadkeys -b ${optionalString isUnicode "-u"} "${config.i18n.consoleKeyMap}" > $out
'';
# Sadly, systemd-vconsole-setup doesn't support binary keymaps.
vconsoleConf = pkgs.writeText "vconsole.conf" ''
KEYMAP=${config.i18n.consoleKeyMap}
FONT=${config.i18n.consoleFont}
${colors}
'';
kbdEnv = pkgs.buildEnv {
name = "kbd-env";
paths = [ pkgs.kbd ] ++ config.i18n.consolePackages;
pathsToLink = [ "/share/consolefonts" "/share/consoletrans" "/share/keymaps" "/share/unimaps" ];
};
setVconsole = !config.boot.isContainer;
in
@ -38,38 +57,75 @@ in
'';
};
boot.earlyVconsoleSetup = mkOption {
default = false;
type = types.bool;
description = ''
Enable setting font and keymap as early as possible (in initrd).
'';
};
};
###### implementation
config = mkMerge [
(mkIf (!setVconsole) {
(mkIf (!setVconsole || (setVconsole && config.boot.earlyVconsoleSetup)) {
systemd.services."systemd-vconsole-setup".enable = false;
})
(mkIf setVconsole {
environment.systemPackages = [ pkgs.kbd ];
(mkIf setVconsole (mkMerge [
{ environment.systemPackages = [ pkgs.kbd ];
# Let systemd-vconsole-setup.service do the work of setting up the
# virtual consoles. FIXME: trigger a restart of
# systemd-vconsole-setup.service if /etc/vconsole.conf changes.
environment.etc = [ {
target = "vconsole.conf";
source = vconsoleConf;
} ];
# Let systemd-vconsole-setup.service do the work of setting up the
# virtual consoles.
environment.etc."vconsole.conf".source = vconsoleConf;
# Provide kbd with additional packages.
environment.etc."kbd".source = "${kbdEnv}/share";
}
# This is identical to the systemd-vconsole-setup.service unit
# shipped with systemd, except that it uses /dev/tty1 instead of
# /dev/tty0 to prevent putting the X server in non-raw mode, and
# it has a restart trigger.
systemd.services."systemd-vconsole-setup" =
{ wantedBy = [ "multi-user.target" ];
before = [ "display-manager.service" ];
after = [ "systemd-udev-settle.service" ];
restartTriggers = [ vconsoleConf ];
};
})
(mkIf (!config.boot.earlyVconsoleSetup) {
# This is identical to the systemd-vconsole-setup.service unit
# shipped with systemd, except that it uses /dev/tty1 instead of
# /dev/tty0 to prevent putting the X server in non-raw mode, and
# it has a restart trigger.
systemd.services."systemd-vconsole-setup" =
{ wantedBy = [ "sysinit.target" ];
before = [ "display-manager.service" ];
after = [ "systemd-udev-settle.service" ];
restartTriggers = [ vconsoleConf kbdEnv ];
};
})
(mkIf config.boot.earlyVconsoleSetup {
boot.initrd.extraUtilsCommands = ''
mkdir -p $out/share/consolefonts
${if substring 0 1 config.i18n.consoleFont == "/" then ''
font="${config.i18n.consoleFont}"
'' else ''
font="$(echo ${kbdEnv}/share/consolefonts/${config.i18n.consoleFont}.*)"
''}
if [[ $font == *.gz ]]; then
gzip -cd $font > $out/share/consolefonts/font.psf
else
cp -L $font $out/share/consolefonts/font.psf
fi
'';
boot.initrd.preLVMCommands = mkBefore ''
kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
loadkmap < ${optimizedKeymap}
setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
${concatImapStringsSep "\n" (n: color: ''
printf "${makeColorCS n color}" >> /dev/console
'') config.i18n.consoleColors}
'';
})
]))
];
}

View File

@ -20,8 +20,12 @@ let cfg = config.ec2; in
autoResize = true;
};
boot.extraModulePackages = [ config.boot.kernelPackages.ixgbevf ];
boot.initrd.kernelModules = [ "xen-blkfront" "xen-netfront" "ixgbevf" ];
boot.extraModulePackages =
[ config.boot.kernelPackages.ixgbevf
config.boot.kernelPackages.ena
];
boot.initrd.kernelModules = [ "xen-blkfront" "xen-netfront" ];
boot.initrd.availableKernelModules = [ "ixgbevf" "ena" ];
boot.kernelParams = mkIf cfg.hvm [ "console=ttyS0" ];
# Prevent the nouveau kernel module from being loaded, as it

View File

@ -4,22 +4,6 @@ with lib;
let
nixos-container = pkgs.substituteAll {
name = "nixos-container";
dir = "bin";
isExecutable = true;
src = ./nixos-container.pl;
perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
su = "${pkgs.shadow.su}/bin/su";
inherit (pkgs) utillinux;
postInstall = ''
t=$out/etc/bash_completion.d
mkdir -p $t
cp ${./nixos-container-completion.sh} $t/nixos-container
'';
};
# The container's init script, a small wrapper around the regular
# NixOS stage-2 init script.
containerInit = pkgs.writeScript "container-init"
@ -410,7 +394,7 @@ in
ExecReload = pkgs.writeScript "reload-container"
''
#! ${pkgs.stdenv.shell} -e
${nixos-container}/bin/nixos-container run "$INSTANCE" -- \
${pkgs.nixos-container}/bin/nixos-container run "$INSTANCE" -- \
bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test"
'';
@ -498,6 +482,6 @@ in
networking.dhcpcd.denyInterfaces = [ "ve-*" ];
environment.systemPackages = [ nixos-container ];
environment.systemPackages = [ pkgs.nixos-container ];
});
}

View File

@ -90,40 +90,48 @@
"15.09".us-west-2.pv-ebs = "ami-005fb160";
"15.09".us-west-2.pv-s3 = "ami-cd55bbad";
"16.03".ap-northeast-1.hvm-ebs = "ami-b6edf5d8";
"16.03".ap-northeast-1.hvm-s3 = "ami-b1e3fbdf";
"16.03".ap-northeast-1.pv-ebs = "ami-6190880f";
"16.03".ap-northeast-1.pv-s3 = "ami-908d95fe";
"16.03".ap-southeast-1.hvm-ebs = "ami-35b16656";
"16.03".ap-southeast-1.hvm-s3 = "ami-41be6922";
"16.03".ap-southeast-1.pv-ebs = "ami-4cb96e2f";
"16.03".ap-southeast-1.pv-s3 = "ami-3bb96e58";
"16.03".ap-southeast-2.hvm-ebs = "ami-debc91bd";
"16.03".ap-southeast-2.hvm-s3 = "ami-55bc9136";
"16.03".ap-southeast-2.pv-ebs = "ami-b38ba6d0";
"16.03".ap-southeast-2.pv-s3 = "ami-9e8ba6fd";
"16.03".eu-central-1.hvm-ebs = "ami-7c967413";
"16.03".eu-central-1.hvm-s3 = "ami-b29072dd";
"16.03".eu-central-1.pv-ebs = "ami-7a947615";
"16.03".eu-central-1.pv-s3 = "ami-729b791d";
"16.03".eu-west-1.hvm-ebs = "ami-ff27a98c";
"16.03".eu-west-1.hvm-s3 = "ami-6c21af1f";
"16.03".eu-west-1.pv-ebs = "ami-a33cb2d0";
"16.03".eu-west-1.pv-s3 = "ami-ec38b69f";
"16.03".sa-east-1.hvm-ebs = "ami-5bef6637";
"16.03".sa-east-1.hvm-s3 = "ami-55f87139";
"16.03".sa-east-1.pv-ebs = "ami-76e56c1a";
"16.03".sa-east-1.pv-s3 = "ami-e1f8718d";
"16.03".us-east-1.hvm-ebs = "ami-4bfd1926";
"16.03".us-east-1.hvm-s3 = "ami-60c5210d";
"16.03".us-east-1.pv-ebs = "ami-c0c92dad";
"16.03".us-east-1.pv-s3 = "ami-f9d63294";
"16.03".us-west-1.hvm-ebs = "ami-13aad473";
"16.03".us-west-1.hvm-s3 = "ami-e1a8d681";
"16.03".us-west-1.pv-ebs = "ami-c0a6d8a0";
"16.03".us-west-1.pv-s3 = "ami-6aa9d70a";
"16.03".us-west-2.hvm-ebs = "ami-265dad46";
"16.03".us-west-2.hvm-s3 = "ami-cd40b0ad";
"16.03".us-west-2.pv-ebs = "ami-7b4aba1b";
"16.03".us-west-2.pv-s3 = "ami-0849b968";
"16.03".ap-northeast-1.hvm-ebs = "ami-40619d21";
"16.03".ap-northeast-1.hvm-s3 = "ami-ce629eaf";
"16.03".ap-northeast-1.pv-ebs = "ami-ef639f8e";
"16.03".ap-northeast-1.pv-s3 = "ami-a1609cc0";
"16.03".ap-northeast-2.hvm-ebs = "ami-deca00b0";
"16.03".ap-northeast-2.hvm-s3 = "ami-a3b77dcd";
"16.03".ap-northeast-2.pv-ebs = "ami-7bcb0115";
"16.03".ap-northeast-2.pv-s3 = "ami-a2b77dcc";
"16.03".ap-south-1.hvm-ebs = "ami-0dff9562";
"16.03".ap-south-1.hvm-s3 = "ami-13f69c7c";
"16.03".ap-south-1.pv-ebs = "ami-0ef39961";
"16.03".ap-south-1.pv-s3 = "ami-e0c8a28f";
"16.03".ap-southeast-1.hvm-ebs = "ami-5e964a3d";
"16.03".ap-southeast-1.hvm-s3 = "ami-4d964a2e";
"16.03".ap-southeast-1.pv-ebs = "ami-ec9b478f";
"16.03".ap-southeast-1.pv-s3 = "ami-999b47fa";
"16.03".ap-southeast-2.hvm-ebs = "ami-9f7359fc";
"16.03".ap-southeast-2.hvm-s3 = "ami-987359fb";
"16.03".ap-southeast-2.pv-ebs = "ami-a2705ac1";
"16.03".ap-southeast-2.pv-s3 = "ami-a3705ac0";
"16.03".eu-central-1.hvm-ebs = "ami-17a45178";
"16.03".eu-central-1.hvm-s3 = "ami-f9a55096";
"16.03".eu-central-1.pv-ebs = "ami-c8a550a7";
"16.03".eu-central-1.pv-s3 = "ami-6ea45101";
"16.03".eu-west-1.hvm-ebs = "ami-b5b3d5c6";
"16.03".eu-west-1.hvm-s3 = "ami-c986e0ba";
"16.03".eu-west-1.pv-ebs = "ami-b083e5c3";
"16.03".eu-west-1.pv-s3 = "ami-3c83e54f";
"16.03".sa-east-1.hvm-ebs = "ami-f6eb7f9a";
"16.03".sa-east-1.hvm-s3 = "ami-93e773ff";
"16.03".sa-east-1.pv-ebs = "ami-cbb82ca7";
"16.03".sa-east-1.pv-s3 = "ami-abb82cc7";
"16.03".us-east-1.hvm-ebs = "ami-c123a3d6";
"16.03".us-east-1.hvm-s3 = "ami-bc25a5ab";
"16.03".us-east-1.pv-ebs = "ami-bd25a5aa";
"16.03".us-east-1.pv-s3 = "ami-a325a5b4";
"16.03".us-west-1.hvm-ebs = "ami-748bcd14";
"16.03".us-west-1.hvm-s3 = "ami-a68dcbc6";
"16.03".us-west-1.pv-ebs = "ami-048acc64";
"16.03".us-west-1.pv-s3 = "ami-208dcb40";
"16.03".us-west-2.hvm-ebs = "ami-8263a0e2";
"16.03".us-west-2.hvm-s3 = "ami-925c9ff2";
"16.03".us-west-2.pv-ebs = "ami-5e61a23e";
"16.03".us-west-2.pv-s3 = "ami-734c8f13";
}

View File

@ -62,7 +62,9 @@ let
idx=2
extraDisks=""
${flip concatMapStrings cfg.emptyDiskImages (size: ''
${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M"
if ! test -e "empty$idx.qcow2"; then
${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M"
fi
extraDisks="$extraDisks -drive index=$idx,file=$(pwd)/empty$idx.qcow2,if=${cfg.qemu.diskInterface},werror=report"
idx=$((idx + 1))
'')}

View File

@ -49,7 +49,7 @@ in
serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxService VBoxService --foreground";
};
services.xserver.videoDrivers = mkOverride 50 [ "virtualbox" ];
services.xserver.videoDrivers = mkOverride 50 [ "virtualbox" "modesetting" ];
services.xserver.config =
''

View File

@ -68,6 +68,7 @@ in rec {
(all nixos.tests.boot.uefiCdrom)
(all nixos.tests.boot.uefiUsb)
(all nixos.tests.boot-stage1)
(all nixos.tests.ecryptfs)
(all nixos.tests.ipv6)
(all nixos.tests.i3wm)
(all nixos.tests.kde4)

View File

@ -220,6 +220,7 @@ in rec {
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
tests.ecryptfs = callTest tests/ecryptfs.nix {};
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
@ -230,6 +231,7 @@ in rec {
tests.gnome3 = callTest tests/gnome3.nix {};
tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
tests.grsecurity = callTest tests/grsecurity.nix {};
tests.hibernate = callTest tests/hibernate.nix {};
tests.i3wm = callTest tests/i3wm.nix {};
tests.installer = callSubTests tests/installer.nix {};
tests.influxdb = callTest tests/influxdb.nix {};

81
nixos/tests/ecryptfs.nix Normal file
View File

@ -0,0 +1,81 @@
import ./make-test.nix ({ pkgs, ... }:
{
name = "ecryptfs";
machine = { config, pkgs, ... }: {
imports = [ ./common/user-account.nix ];
boot.kernelModules = [ "ecryptfs" ];
security.pam.enableEcryptfs = true;
environment.systemPackages = with pkgs; [ keyutils ];
};
testScript = ''
$machine->waitForUnit("default.target");
# Set alice up with a password and a home
$machine->succeed("(echo foobar; echo foobar) | passwd alice");
$machine->succeed("chown -R alice.users ~alice");
# Migrate alice's home
my $out = $machine->succeed("echo foobar | ecryptfs-migrate-home -u alice");
$machine->log("ecryptfs-migrate-home said: $out");
# Log alice in (ecryptfs passwhrase is wrapped during first login)
$machine->sleep(2); # urgh: wait for username prompt
$machine->sendChars("alice\n");
$machine->sleep(1);
$machine->sendChars("foobar\n");
$machine->sleep(2);
$machine->sendChars("logout\n");
$machine->sleep(2);
# Why do I need to do this??
$machine->succeed("su alice -c ecryptfs-umount-private");
$machine->sleep(1);
$machine->fail("mount | grep ecryptfs"); # check that encrypted home is not mounted
# Show contents of the user keyring
my $out = $machine->succeed("su - alice -c 'keyctl list \@u'");
$machine->log("keyctl unlink said: " . $out);
# Log alice again
$machine->sendChars("alice\n");
$machine->sleep(1);
$machine->sendChars("foobar\n");
$machine->sleep(2);
# Create some files in encrypted home
$machine->succeed("su alice -c 'touch ~alice/a'");
$machine->succeed("su alice -c 'echo c > ~alice/b'");
# Logout
$machine->sendChars("logout\n");
$machine->sleep(2);
# Why do I need to do this??
$machine->succeed("su alice -c ecryptfs-umount-private");
$machine->sleep(1);
# Check that the filesystem is not accessible
$machine->fail("mount | grep ecryptfs");
$machine->succeed("su alice -c 'test \! -f ~alice/a'");
$machine->succeed("su alice -c 'test \! -f ~alice/b'");
# Log alice once more
$machine->sendChars("alice\n");
$machine->sleep(1);
$machine->sendChars("foobar\n");
$machine->sleep(2);
# Check that the files are there
$machine->sleep(1);
$machine->succeed("su alice -c 'test -f ~alice/a'");
$machine->succeed("su alice -c 'test -f ~alice/b'");
$machine->succeed(qq%test "\$(cat ~alice/b)" = "c"%);
# Catch https://github.com/NixOS/nixpkgs/issues/16766
$machine->succeed("su alice -c 'ls -lh ~alice/'");
$machine->sendChars("logout\n");
'';
})

42
nixos/tests/hibernate.nix Normal file
View File

@ -0,0 +1,42 @@
# Test whether hibernation from partition works.
import ./make-test.nix (pkgs: {
name = "hibernate";
nodes = {
machine = { config, lib, pkgs, ... }: with lib; {
virtualisation.emptyDiskImages = [ config.virtualisation.memorySize ];
systemd.services.backdoor.conflicts = [ "sleep.target" ];
swapDevices = mkOverride 0 [ { device = "/dev/vdb"; } ];
networking.firewall.allowedTCPPorts = [ 4444 ];
systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l -p 4444";
};
probe = { config, lib, pkgs, ...}: {
environment.systemPackages = [ pkgs.netcat ];
};
};
# 9P doesn't support reconnection to virtio transport after a hibernation.
# Therefore, machine just hangs on any Nix store access.
# To work around it we run a daemon which listens to a TCP connection and
# try to connect to it as a test.
testScript =
''
$machine->waitForUnit("multi-user.target");
$machine->succeed("mkswap /dev/vdb");
$machine->succeed("swapon -a");
$machine->startJob("listener");
$machine->succeed("systemctl hibernate &");
$machine->waitForShutdown;
$machine->start;
$probe->waitForUnit("network.target");
$probe->waitUntilSucceeds("echo test | nc -c machine 4444");
'';
})

View File

@ -210,6 +210,10 @@ let
pkgs.nixos-artwork
pkgs.perlPackages.XMLLibXML
pkgs.perlPackages.ListCompare
# add curl so that rather than seeing the test attempt to download
# curl's tarball, we see what it's trying to download
pkgs.curl
]
++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub
++ optionals (bootLoader == "grub" && grubVersion == 2) [ pkgs.grub2 pkgs.grub2_efi ];

View File

@ -1,10 +1,10 @@
{ stdenv, fetchurl, cmake, fftw, gtkmm, libxcb, lv2, pkgconfig, xorg }:
stdenv.mkDerivation rec {
name = "eq10q-2-${version}";
version = "beta7.1";
name = "eq10q-${version}";
version = "2.0";
src = fetchurl {
url = "mirror://sourceforge/project/eq10q/${name}.tar.gz";
sha256 = "1jmrcx4jlx8kgsy5n4jcxa6qkjqvx7d8l2p7dsmw4hj20s39lgyi";
sha256 = "08vlfly0qqrfqiwpn5g5php680icpk97pwnwjadmj5syhgvi0i3h";
};
buildInputs = [ cmake fftw gtkmm libxcb lv2 pkgconfig xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];

View File

@ -3,7 +3,7 @@
cln,
cmake,
fetchgit,
gcc5,
gcc,
ginac,
jamomacore,
kde5,
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
cln
cmake
ginac
gcc5
gcc
jamomacore
kde5.kdnssd
libsndfile

View File

@ -1,12 +1,13 @@
{ stdenv, fetchurl, unzip, puredata }:
stdenv.mkDerivation rec {
name = "puremapping-1.01";
name = "puremapping-${version}";
version = "20160130";
src = fetchurl {
url = "http://www.chnry.net/ch/IMG/zip/puremapping-libdir-generic.zip";
url = "http://www.chnry.net/data/puremapping-${version}-generic.zip";
name = "puremapping";
sha256 = "1ygzxsfj3rnzjkpmgi4wch810q8s5vm1gdam6a938hbbvamafgvc";
sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
};
buildInputs = [ unzip puredata ];

View File

@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
for i in ${puredata}/include/pd/*; do
ln -s $i .
done
patchShebangs
./bootstrap.sh
./configure --enable-lpt=no --prefix=$out
'';

View File

@ -1,13 +1,14 @@
{ stdenv, fetchgit, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
{ stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
stdenv.mkDerivation rec {
name = "plugin-torture-git-${version}";
version = "2013-10-03";
name = "plugin-torture-${version}";
version = "5";
src = fetchgit {
url = "https://github.com/cth103/plugin-torture";
rev = "9ee06016982bdfbaa215cd0468cc6ada6367462a";
sha256 = "0ynzfs3z95lbw4l1w276as2a37zxp0cw6pi3lbikr0qk0r7j5j10";
src = fetchFromGitHub {
owner = "cth103";
repo = "plugin-torture";
rev = "v${version}";
sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih";
};
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
@ -15,7 +16,7 @@ stdenv.mkDerivation rec {
installPhase = ''
mkdir -p $out/bin
cp plugin-torture $out/bin/
cp README $out/bin/
cp find-safe-plugins $out/bin/
'';
meta = with stdenv.lib; {

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
name = "puredata-${version}";
version = "0.45-4";
version = "0.47-1";
src = fetchurl {
url = "mirror://sourceforge/pure-data/pd-${version}.src.tar.gz";
sha256 = "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p";
url = "http://msp.ucsd.edu/Software/pd-${version}.src.tar.gz";
sha256 = "0k5s949kqd7yw97h3m8z81bjz32bis9m4ih8df1z0ymipnafca67";
};
patchPhase = ''

View File

@ -1,18 +1,21 @@
{ stdenv, fetchurl, liblo, libxml2, libjack2, libsndfile, wxGTK, libsigcxx
,libsamplerate, rubberband, pkgconfig, ncurses
{ stdenv, fetchFromGitHub , liblo, libxml2, libjack2, libsndfile, wxGTK, libsigcxx
,libsamplerate, rubberband, pkgconfig, autoconf, automake, libtool, gettext, ncurses, which
}:
stdenv.mkDerivation rec {
name = "sooperlooper-${version}";
version = "1.7.3";
src = fetchurl {
url = "http://essej.net/sooperlooper/${name}.tar.gz";
sha256 = "0n2gdxw1fx8nxxnpzf4sj0kp6k6zi1yq59cbz6qqzcnsnpnvszbs";
name = "sooperlooper-git-${version}";
version = "19-07-2016";
src = fetchFromGitHub {
owner = "essej";
repo = "sooperlooper";
rev = "3bdfe184cd59b51c757b8048536abc1146fb0de4";
sha256 = "0qz25h4idv79m97ici2kzx72fwzks3lysyksk3p3rx72lsijhf3g";
};
buildInputs = [
liblo libxml2 libjack2 libsndfile wxGTK libsigcxx
libsamplerate rubberband pkgconfig ncurses
liblo libxml2 libjack2 libsndfile wxGTK libsigcxx
libsamplerate rubberband pkgconfig autoconf automake libtool gettext ncurses which
];
meta = {

View File

@ -3,12 +3,12 @@
, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec {
version = "2015-07-02";
version = "20160619";
name = "x42-plugins-${version}";
src = fetchurl {
url = "http://gareus.org/misc/x42-plugins/x42-plugins-20150702.tar.xz";
sha256 = "1mq0grabzbl9xsd53v2qajhr8nngk0d4lx9n0n3nwy95y2gmy6sm";
url = "http://gareus.org/misc/x42-plugins/${name}.tar.xz";
sha256 = "1ald0c5xbfkdq6g5xwyy8wmbi636m3k3gqrq16kbh46g0kld1as9";
};
buildInputs = [ mesa_glu ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 mesa gtk2 cairo pango fftwFloat pkgconfig zita-convolver];

View File

@ -5,6 +5,7 @@
, autoconf, automake
, withX ? !stdenv.isDarwin
, withGTK3 ? false, gtk3 ? null
, withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null
, withGTK2 ? true, gtk2
}:
@ -14,6 +15,7 @@ assert withGTK2 -> withX || stdenv.isDarwin;
assert withGTK3 -> withX || stdenv.isDarwin;
assert withGTK2 -> !withGTK3 && gtk2 != null;
assert withGTK3 -> !withGTK2 && gtk3 != null;
assert withXwidgets -> withGTK3 && webkitgtk24x != null;
let
toolkit =
@ -49,17 +51,19 @@ stdenv.mkDerivation rec {
imagemagick gconf ]
++ stdenv.lib.optional (withX && withGTK2) gtk2
++ stdenv.lib.optional (withX && withGTK3) gtk3
++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo;
++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo
++ stdenv.lib.optionals withXwidgets [webkitgtk24x wrapGAppsHook glib_networking];
propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ];
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";

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl, gtk2, which, pkgconfig, intltool, file }:
let
version = "1.27";
version = "1.28";
in
stdenv.mkDerivation rec {
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://download.geany.org/${name}.tar.bz2";
sha256 = "846ff699a5944c5c3c068ae0199d4c13946a668bfc6d03f8c79765667c20cadf";
sha256 = "0nha21rbdhl10vdpaq8d5v5fszvggl1xar555pvrnvm2y443ffpp";
};
buildInputs = [ gtk2 which pkgconfig intltool file ];

View File

@ -2,5 +2,7 @@
let name = builtins.replaceStrings ["geany-"] ["geany-with-vte-"] geany.name;
in
runCommand "${name}" { nativeBuildInputs = [ makeWrapper ]; } "
mkdir -p $out
ln -s ${geany}/share $out
makeWrapper ${geany}/bin/geany $out/bin/geany --prefix LD_LIBRARY_PATH : ${gnome.vte}/lib
"

View File

@ -189,13 +189,13 @@ in
idea-community = buildIdea rec {
name = "idea-community-${version}";
version = "2016.1.3";
build = "IC-145.1617.8";
version = "2016.2";
build = "IC-162.1121";
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "0yd1jqz4arywyjsiakszrr48w2xqnik6vnl1a6l0ph2hssgkzkfi";
sha256 = "164x4l0q31zpc1jh3js1xx9y6afrzsshmnkx1mwhmq8qmvzc4w32";
};
wmClass = "jetbrains-idea-ce";
};
@ -228,13 +228,13 @@ in
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "2016.1.3";
build = "IU-145.1617.8";
version = "2016.2";
build = "IU-162.1121";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1zzxwdnw2bbnl86kj7fjk5p8c99d0hdn1ki2alw5xm8wp4k0w7rv";
sha256 = "10hiqh6ccmai2cnc5p72vqjcz9kzmmcpn0hy5v514h4mq6vs4zk4";
};
wmClass = "jetbrains-idea";
};

View File

@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
2a3,5
> export MONO_GAC_PREFIX=${gnome-sharp}:${gtk-sharp}:\$MONO_GAC_PREFIX
> export PATH=${mono}/bin:\$PATH
> export LD_LIBRARY_PATH=${glib}/lib:${gnome.libgnomeui}/lib:${gnome.gnome_vfs}/lib:${gnome-sharp}/lib:${gtk-sharp}/lib:${gtk-sharp.gtk}/lib:\$LD_LIBRARY_PATH
> export LD_LIBRARY_PATH=${stdenv.lib.makeLibraryPath [ glib gnome.libgnomeui gnome.gnome_vfs gnome-sharp gtk-sharp gtk-sharp.gtk ]}:\$LD_LIBRARY_PATH
>
EOF
done

View File

@ -0,0 +1,38 @@
{ stdenv, fetchgit, ncurses }:
stdenv.mkDerivation rec {
name = "uemacs-${version}";
version = "2014-12-08";
src = fetchgit {
url = git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git;
rev = "8841922689769960fa074fbb053cb8507f2f3ed9";
sha256 = "14yq7kpkax111cg6k7i3mnqk7sq7a65krq6qizzj7vvnm7bsj3sd";
};
postPatch = ''
substituteInPlace Makefile \
--replace "-lcurses" "-lncurses" \
--replace "CFLAGS=-O2" "CFLAGS+=" \
--replace "BINDIR=/usr/bin" "BINDIR=$out/bin" \
--replace "LIBDIR=/usr/lib" "LIBDIR=$out/share/uemacs"
substituteInPlace epath.h \
--replace "/usr/global/lib/" "$out/share/uemacs/" \
--replace "/usr/local/bin/" "$out/bin/" \
--replace "/usr/local/lib/" "$out/share/uemacs/" \
--replace "/usr/local/" "$out/bin/" \
--replace "/usr/lib/" "$out/share/uemacs/"
mkdir -p $out/bin $out/share/uemacs
'';
buildInputs = [ ncurses ];
meta = with stdenv.lib; {
homepage = https://git.kernel.org/cgit/editors/uemacs/uemacs.git;
description = "Torvalds Micro-emacs fork";
longDescription = ''
uEmacs/PK 4.0 is a full screen editor based on MicroEMACS 3.9e
'';
license = licenses.unfree;
};
}

View File

@ -1,12 +1,18 @@
{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper, ncurses, libtermkey, lpeg, lua }:
{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper
, ncurses, libtermkey, lpeg, lua
, acl ? null, libselinux ? null
, version ? "2016-07-15"
, rev ? "5c2cee9461ef1199f2e80ddcda699595b11fdf08"
, sha256 ? "1jmsv72hq0c2f2rnpllvd70cmxbjwfhynzwaxx24f882zlggwsnd"
}:
stdenv.mkDerivation rec {
name = "vis-nightly-${version}";
version = "2016-04-15";
inherit version;
src = fetchFromGitHub {
sha256 = "0a4gpwniy5r9dpfq51fxjxxnxavdjv8x76w9bbjnbnh8n63p3sj7";
rev = "472c559a273d3c7b0f5ee92260c5544bc3d74576";
inherit sha256;
inherit rev;
repo = "vis";
owner = "martanne";
};
@ -14,12 +20,14 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
unzip
pkgconfig
ncurses
libtermkey
lua
lpeg
unzip pkgconfig
ncurses
libtermkey
lua
lpeg
] ++ stdenv.lib.optional stdenv.isLinux [
acl
libselinux
];
LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;";
@ -33,11 +41,10 @@ stdenv.mkDerivation rec {
--prefix VIS_PATH : "$out/share/vis"
'';
meta = {
meta = with stdenv.lib; {
description = "A vim like editor";
homepage = http://github.com/martanne/vis;
license = stdenv.lib.licenses.isc;
maintainers = [ stdenv.lib.maintainers.vrthra ];
license = licenses.isc;
maintainers = [ maintainers.vrthra ];
};
}

View File

@ -11,8 +11,8 @@ let
else throw "ImageMagick is not supported on this platform.";
cfg = {
version = "6.9.3-9";
sha256 = "0q19jgn1iv7zqrw8ibxp4z57iihrc9kyb09k2wnspcacs6vrvinf";
version = "6.9.5-2";
sha256 = "09h3rpr1jnzd7ipy5d16r2gi0bwg4hk5khwzv4cyhv1xzs8pk7pj";
patches = [];
}
# Freeze version on mingw so we don't need to port the patch too often.

View File

@ -1,15 +1,8 @@
diff --git a/config/policy.xml b/config/policy.xml
index ca3b022..b058c05 100644
--- a/config/policy.xml
+++ b/config/policy.xml
@@ -58,4 +58,10 @@
<!-- <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" />

View File

@ -3,7 +3,7 @@
, libgnome_keyring, gtk3, ilmbase, intltool, lcms, lcms2
, lensfun, libXau, libXdmcp, libexif, libglade, libgphoto2, libjpeg
, libpng, libpthreadstubs, librsvg, libtiff, libxcb
, openexr, pixman, pkgconfig, sqlite, bash, libxslt, openjpeg
, openexr, osm-gps-map, pixman, pkgconfig, sqlite, bash, libxslt, openjpeg
, mesa, lua, pugixml, colord, colord-gtk, libxshmfence, libxkbcommon
, epoxy, at_spi2_core, libwebp, libsecret, wrapGAppsHook, gnome3
}:
@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
libsoup graphicsmagick SDL json_glib openjpeg mesa lua pugixml
colord colord-gtk libxshmfence libxkbcommon epoxy at_spi2_core
libwebp libsecret wrapGAppsHook gnome3.adwaita-icon-theme
osm-gps-map
];
cmakeFlags = [

View File

@ -2,11 +2,11 @@
, libXinerama, curl, libexif, perlPackages }:
stdenv.mkDerivation rec {
name = "feh-2.15.4";
name = "feh-2.16.1";
src = fetchurl {
url = "http://feh.finalrewind.org/${name}.tar.bz2";
sha256 = "b8a9c29f37b1349228b19866f712b677e2a150837bc46be8c5d6348dd4850758";
sha256 = "1cxnc8dxyl7s4qnkvdjaqx7gdvc6brxpq0qbg91mljg47fd2hmbf";
};
outputs = [ "out" "doc" ];

View File

@ -5,7 +5,7 @@
stdenv.mkDerivation rec {
name = "gimp-${version}";
version = "2.8.16";
version = "2.8.18";
# This declarations for `gimp-with-plugins` wrapper,
# (used for determining $out/lib/gimp/${majorVersion}/ paths)
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "http://download.gimp.org/pub/gimp/v2.8/${name}.tar.bz2";
sha256 = "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm";
sha256 = "0halh6sl3d2j9gahyabj6h6r3yyldcy7sfb4qrfazpkqqr3j5p9r";
};
buildInputs =

View File

@ -32,5 +32,8 @@ stdenv.mkDerivation rec {
license = licenses.gpl2; # Commercial license is also available
maintainers = with maintainers; [ bjornfor prikhi ];
platforms = platforms.linux;
# See https://github.com/prikhi/pencil/issues/840
# ("Error: Platform version '47.0' is not compatible with minVersion >= 36.0 maxVersion <= 46.*")
broken = true;
};
}

View File

@ -1,17 +1,19 @@
{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite
, webkitgtk24x, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
, gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper
, gnome_doc_utils, hicolor_icon_theme }:
# for dependencies see http://www.yorba.org/projects/shotwell/install/
stdenv.mkDerivation rec {
version = "0.22.0";
version = "${major}.${minor}";
major = "0.23";
minor = "2";
name = "shotwell-${version}";
src = fetchurl {
url = "mirror://gnome/sources/shotwell/0.22/${name}.tar.xz";
sha256 = "0cgqaaikrb10plhf6zxbgqy32zqpiwyi9dpx3g8yr261q72r5c81";
url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz";
sha256 = "d52caae4e3204f2f78e2eb828d955848ea6fef5c91d3ac6e9eb0b185c0490b39";
};
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include";
@ -35,7 +37,7 @@ stdenv.mkDerivation rec {
'';
buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x
buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk
pkgconfig gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee
which udev libgudev gnome3.gexiv2 hicolor_icon_theme
libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec {
pname = "emem";
version = "0.2.15";
version = "0.2.18";
name = "${pname}-${version}";
inherit jdk;
src = fetchurl {
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
sha256 = "0jj990syd9biq2awnjydi4x3p4hivigc522ds59hdf5wg4y2gg6c";
sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8";
};
buildInputs = [ ];

View File

@ -0,0 +1,34 @@
{ fetchurl, stdenv, ncurses, gnupg }:
let version = "0.7.4";
in stdenv.mkDerivation {
# mdp renamed to gpg-mdp because there is a mdp package already.
name = "gpg-mdp-${version}";
meta = {
homepage = https://tamentis.com/projects/mdp/;
license = [stdenv.lib.licenses.isc];
description = "Manage your passwords with GnuPG and a text editor";
};
src = fetchurl {
url = "https://tamentis.com/projects/mdp/files/mdp-${version}.tar.gz";
sha256 = "04mdnx4ccpxf9m2myy9nvpl9ma4jgzmv9bkrzv2b9affzss3r34g";
};
buildInputs = [ ncurses ];
prePatch = ''
substituteInPlace ./configure \
--replace "alias echo=/bin/echo" ""
substituteInPlace ./src/config.c \
--replace "/usr/bin/gpg" "${gnupg}/bin/gpg2" \
--replace "/usr/bin/vi" "vi"
substituteInPlace ./mdp.1 \
--replace "/usr/bin/gpg" "${gnupg}/bin/gpg2"
'';
# we add symlinks to the binary and man page with the name 'gpg-mdp', in case
# the completely unrelated program also named 'mdp' is already installed.
postFixup = ''
ln -s $out/bin/mdp $out/bin/gpg-mdp
ln -s $out/share/man/man1/mdp.1.gz $out/share/man/man1/gpg-mdp.1.gz
'';
}

View File

@ -0,0 +1,18 @@
{ stdenv, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "hugo-${version}";
version = "v0.16";
rev = "8b54843a0db694facbaf368af4e777d0ae5fb992";
goPackagePath = "github.com/spf13/hugo";
src = fetchFromGitHub {
inherit rev;
owner = "spf13";
repo = "hugo";
sha256 = "135mrdi8i56z9m2sihjrdfab6lrczbfgavwvfrngvi1zxnx7scmv";
};
goDeps = ./deps.json;
}

View File

@ -0,0 +1,44 @@
[
{
"include": "../../libs.json",
"packages": [
"gopkg.in/yaml.v2",
"github.com/hashicorp/hcl",
"github.com/pkg/sftp",
"golang.org/x/sys",
"github.com/hashicorp/go-multierror",
"golang.org/x/crypto",
"github.com/pkg/errors",
"github.com/kr/fs",
"github.com/kyokomi/emoji",
"github.com/bep/inflect",
"github.com/BurntSushi/toml",
"github.com/PuerkitoBio/purell",
"github.com/PuerkitoBio/urlesc",
"github.com/dchest/cssmin",
"github.com/eknkc/amber",
"github.com/gorilla/websocket",
"github.com/kardianos/osext",
"github.com/miekg/mmark",
"github.com/mitchellh/mapstructure",
"github.com/russross/blackfriday",
"github.com/shurcooL/sanitized_anchor_name",
"github.com/spf13/afero",
"github.com/spf13/cast",
"github.com/spf13/jwalterweatherman",
"github.com/spf13/cobra",
"github.com/cpuguy83/go-md2man",
"github.com/inconshreveable/mousetrap",
"github.com/spf13/pflag",
"github.com/spf13/fsync",
"github.com/spf13/viper",
"github.com/kr/pretty",
"github.com/kr/text",
"github.com/magiconair/properties",
"golang.org/x/text",
"github.com/yosssi/ace",
"github.com/spf13/nitro",
"github.com/fsnotify/fsnotify"
]
}
]

View File

@ -0,0 +1,50 @@
{ stdenv, pkgconfig, fetchFromGitHub
, cmake, boost
, portmidi, sqlite
, freetype, libpng, pngpp, zlib
, wxGTK30, wxsqlite3
}:
stdenv.mkDerivation rec {
name = "lenmus-${version}";
version = "5.4.1";
src = fetchFromGitHub {
owner = "lenmus";
repo = "lenmus";
rev = "Release_${version}";
sha256 = "03xar8x38x20cns2gnv34jp0hw0k16sa62kkfhka9iiiw90wfyrp";
};
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "DESTINATION \"/usr/share" "DESTINATION \"$out/share"
'';
cmakeFlags = [
"-DCMAKE_INSALL_PREFIX=$out"
];
enableParallelBuilding = true;
buildInputs = [
pkgconfig
cmake boost
portmidi sqlite
freetype libpng pngpp zlib
wxGTK30 wxsqlite3
];
meta = with stdenv.lib; {
description = "LenMus Phonascus is a program for learning music";
longDescription = ''
LenMus Phonascus is a free open source program (GPL v3) for learning music.
It allows you to focus on specific skills and exercises, on both theory and aural training.
The different activities can be customized to meet your needs
'';
homepage = "http://www.lenmus.org/";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ ramkromberg ];
platforms = with platforms; linux;
};
}

View File

@ -0,0 +1,31 @@
# Description: Fix lighthouse Makefile
Index: Makefile
===================================================================
--- ./Makefile 1970-01-01 02:00:01.000000000 +0200
+++ ./Makefile 1970-01-01 02:00:01.000000000 +0200
@@ -19,21 +19,10 @@
endif
# Library specific
-HAS_GDK := $(shell pkg-config --exists gdk-2.0 echo $?)
-ifdef $(HAS_GDK)
- CFLAGS+=`pkg-config --cflags gdk-2.0`
- LDFLAGS+=`pkg-config --libs gdk-2.0`
-else
- CFLAGS+=-DNO_GDK
-endif
-HAS_PANGO := $(shell pkg-config --exists pango echo $?)
-ifdef $(HAS_PANGO)
- CFLAGS+=`pkg-config --cflags pango`
- LDFLAGS+=`pkg-config --libs pango`
-else
- CFLAGS+=-DNO_PANGO
-endif
-
+CFLAGS+=$(shell pkg-config --cflags gdk-2.0)
+LDFLAGS+=$(shell pkg-config --libs gdk-2.0)
+CFLAGS+=$(shell pkg-config --cflags pango)
+LDFLAGS+=$(shell pkg-config --libs pango)
all: lighthouse

View File

@ -0,0 +1,49 @@
{ stdenv, fetchFromGitHub, pkgconfig
, libX11, libxcb, cairo, gtk, pango, python27, python3
}:
stdenv.mkDerivation rec {
name = "lighthouse-${date}";
date = "2016-01-26";
src = fetchFromGitHub {
owner = "emgram769";
repo = "lighthouse";
rev = "bf11f111572475e855b0329202a14c9e128c7e57";
sha256 = "1ppika61vg4sc9mczbkjqy2mhgxqg57xrnsmmq0h2lyvj0yhg3qn";
};
buildInputs = [
pkgconfig libX11 libxcb cairo gtk pango python27 python3
];
patches = [ ./Makefile.patch ];
lighthouseInstaller = ''
#!${stdenv.shell}
cp -r $out/share/lighthouse/.config/lighthouse \$HOME/.config
chmod -R +w \$HOME/.config/lighthouse
'';
installPhase = ''
mkdir -p $out/bin
cp lighthouse $out/bin
chmod +x config/lighthouse/cmd*
chmod +x config/lighthouse/google.py
patchShebangs config/lighthouse/
patchShebangs config/lighthouse/scripts/
mkdir -p $out/share/lighthouse/.config
cp -r config/lighthouse $out/share/lighthouse/.config
echo "${lighthouseInstaller}" > $out/bin/lighthouse-install
chmod +x $out/bin/lighthouse-install
'';
meta = with stdenv.lib; {
description = "A simple flexible popup dialog to run on X";
homepage = https://github.com/emgram769/lighthouse;
license = licenses.mit;
maintainers = with maintainers; [ ramkromberg ];
platforms = platforms.linux;
};
}

View File

@ -2,11 +2,11 @@
, desktop_file_utils, libSM, imagemagick }:
stdenv.mkDerivation rec {
version = "0.7.86";
version = "0.7.87";
name = "mediainfo-gui-${version}";
src = fetchurl {
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5";
sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv";
};
nativeBuildInputs = [ autoreconfHook pkgconfig ];

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }:
stdenv.mkDerivation rec {
version = "0.7.86";
version = "0.7.87";
name = "mediainfo-${version}";
src = fetchurl {
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5";
sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv";
};
nativeBuildInputs = [ autoreconfHook pkgconfig ];

View File

@ -16,6 +16,8 @@ stdenv.mkDerivation {
nativeBuildInputs = [ qmake4Hook ];
qmakeFlags = [ "multimon-ng.pro" ];
installPhase = ''
mkdir -p $out/bin
cp multimon-ng $out/bin

View File

@ -3,26 +3,26 @@
stdenv.mkDerivation {
name = "procmail-3.22";
buildInputs = [ stdenv.cc.libc ];
patches = [ ./CVE-2014-3618.patch ];
# getline is defined differently in glibc now. So rename it.
installPhase = "
mkdir -p \$out/bin
sed -e \"s%^RM.*$%RM=`type -f rm | awk '{print $3;}'` -f%\" -i Makefile
sed -e \"s%^BASENAME.*%\BASENAME=$out%\" -i Makefile
sed -e \"s%^LIBS=.*%LIBS=-lm%\" -i Makefile
sed -e \"s%getline%thisgetline%g\" -i src/*.c src/*.h
make DESTDIR=\$out install
";
phases = "unpackPhase patchPhase installPhase";
patches = [ ./CVE-2014-3618.patch ];
postPatch = ''
sed -e "s%^RM.*$%#%" -i Makefile
sed -e "s%^BASENAME.*%\BASENAME=$out%" -i Makefile
sed -e "s%^LIBS=.*%LIBS=-lm%" -i Makefile
sed -e "s%getline%thisgetline%g" -i src/*.c src/*.h
'';
src = fetchurl {
url = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz;
sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08";
};
meta.homepage = "http://www.procmail.org/";
meta = with stdenv.lib; {
description = "Mail processing and filtering utility";
homepage = http://www.procmail.org/;
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ gebner ];
};
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, xrdb }:
{ stdenv, fetchFromGitHub, xrdb, xlsfonts }:
stdenv.mkDerivation {
name = "urxvt-font-size-2015-05-22";
@ -13,7 +13,8 @@ stdenv.mkDerivation {
installPhase = ''
substituteInPlace font-size \
--replace "xrdb -merge" "${xrdb}/bin/xrdb -merge"
--replace "xrdb -merge" "${xrdb}/bin/xrdb -merge" \
--replace "xlsfonts" "${xlsfonts}/bin/xlsfonts"
mkdir -p $out/lib/urxvt/perl
cp font-size $out/lib/urxvt/perl

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
EncodeLocale MathClipper ExtUtilsXSpp threads
MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo
IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus ImportInto XMLSAX
ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild
ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild LWP
];
desktopItem = makeDesktopItem {

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec {
name = "vifm-${version}";
version = "0.8.1";
version = "0.8.2";
src = fetchurl {
url = "mirror://sourceforge/project/vifm/vifm/${name}.tar.bz2";
sha256 = "0yf3xc4czdrcbvmhq7d4xkck5phrmxwybmnv1zdb56qg56baq64r";
sha256 = "07r15kq7kjl3a41sd11ncpsii866xxps4f90zh3lv8jqcrv6silb";
};
nativeBuildInputs = [ pkgconfig ];

View File

@ -0,0 +1,22 @@
{ stdenv, fetchurl, pythonPackages }:
pythonPackages.buildPythonApplication rec {
version = "1.3";
name = "wikicurses-${version}";
src = fetchurl {
url = "http://github.com/ids1024/wikicurses/archive/v${version}.tar.gz";
sha256 = "1yxgafk1sczg1xi2p6nhrvr3hchp7ydw98n48lp3qzwnryn1kxv8";
};
propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
meta = {
description = "A simple curses interface for MediaWiki sites such as Wikipedia";
homepage = "https://github.com/ids1024/wikicurses/";
license = stdenv.lib.licenses.mit;
platforms = stdenv.lib.platforms.unix;
};
}

View File

@ -16,7 +16,7 @@ python3Packages.buildPythonApplication {
doCheck = false;
propogatedBuildInputs = [ python3 ];
propagatedBuildInputs = [ python3 ];
meta = with stdenv.lib; {
description = "A text scroller for use with panels and shells";

View File

@ -1,9 +1,9 @@
{ stdenv, fetchurl, ... } @ args:
import ./generic.nix (args // {
version = "2.3.7";
version = "2.3.8";
sha256s = {
"x86_64-linux" = "1hnw6bv60xrnc733gm1ilywc0y93k2g6bmwgnww9qk7ivbvi6pd1";
"i686-linux" = "0hj8nbq6mava15m1hxaqq371fqk0whdx5iqsbnppyci0jjnr4qv1";
"x86_64-linux" = "02n5s561cz3mprg682mrbmh3qai42dh64jgi05rqy9s6wgbn66ly";
"i686-linux" = "118qrnxc7gvm30rsz0xfx6dlxmrr0dk5ajrvszhy06ww7xvqhzji";
};
})

View File

@ -4,189 +4,189 @@
# ruby generate_sources.rb 46.0.1 > sources.nix
{
version = "48.0b1";
version = "48.0b7";
sources = [
{ locale = "ach"; arch = "linux-i686"; sha512 = "464c3b19ab7bda118d962da2699dd40482e1742887bcd9d72b8b7d211c7ab085aaf4c31fdea3c4e195af9030276118431ed7c2e6a917b354c5bf9f55cc8111a9"; }
{ locale = "ach"; arch = "linux-x86_64"; sha512 = "d9f9844fb06637ca7449bc00c54c02abf8660c42207c0671fffd53e2415df7b0fc3df782c4a2ccde807b4c2e477b0cf3a74c36acb7cce3f75e4ce267a3575e5c"; }
{ locale = "af"; arch = "linux-i686"; sha512 = "77bca1f05627ed9ace120eee7a7cd24fc354e9bf23a7709e38879241ad87c5d39a8cfcf2aed12881b6f9d6d611c334a864c20c9dee877952990c47c631c6a61b"; }
{ locale = "af"; arch = "linux-x86_64"; sha512 = "bf4d5353a46778d93627c232c404c768e643420b17d490c932848d126846e4ca3a185df671dcf72b1c1d3fe75606c212e6b0dadd2169b52c4fe73f5088e87b94"; }
{ locale = "an"; arch = "linux-i686"; sha512 = "2882258205866c93a4b808b7397ff62efd629b74b5233154190ce72ddd0be5d1eb8153d686d921ddb72049dfae0f11c3eb46128413e578c0f9f6323636a0e378"; }
{ locale = "an"; arch = "linux-x86_64"; sha512 = "543b1d66dc37e1843f370ff071adb050af16e5777bc0042c2d25579a7d99b5b1d176ea099a0b3afc19f270ad5f191fec65e544634e2bbc2223ccc6afcb1869e0"; }
{ locale = "ar"; arch = "linux-i686"; sha512 = "855fc1c71b50ba5b8354ee7ce2ea59664b40b77d007d99ea6b658873de729e22ca9018e475a669992b2e2bea9388fe0966e06f1e2b0d334df4ffbff2be147949"; }
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "8ff272dd30cc66460a617dd80678b68917067b87d63d6b307f6d60e61deda092f46bca9e890d08b69a0738f4c204cd2c5896201b362df68aa9abbe7dd0fcc96d"; }
{ locale = "as"; arch = "linux-i686"; sha512 = "607039866932e6ec0692c534aa2e4ddcb3725d81f2908e7e905edafdbafb3221161f5ae4a5b6eb2ba065e9bd66e1f63c008015b17040033ed90ffa0576b1d08b"; }
{ locale = "as"; arch = "linux-x86_64"; sha512 = "59f3c28bcbc50a9ffe780025e03edafbbf82a213f28ba8e0f62a04a0e052038c24e1a5928ad4a730455bd358fc3cd0f1188e785dd13f79b377d86e5c55360735"; }
{ locale = "ast"; arch = "linux-i686"; sha512 = "c9767d9b73ec2dd411e16b1fab503e97b7960c315533ca529c4898dd10a6e0f809104588ac33f440e1026d026d114ec080cfc312b1902601958656607cdd4ad1"; }
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "f4c7ab66af5e7fca460999b3d68793f8099b177809e70f682fcd7b0a50a3d5ad2a1c15bc5df5a63c37437fce9d70e08e963119755626c357bce6eb17bfb229ee"; }
{ locale = "az"; arch = "linux-i686"; sha512 = "58bb0eb057caf6af113debeb8d9d7eeb3b2fbd2c52c9dac04c527a67da45b3a4ebac4debfea1704639cdf20ec116876e140f4b55ea5f2b90f3afb9db6b2641b6"; }
{ locale = "az"; arch = "linux-x86_64"; sha512 = "a82fdc532e4d9fee9ffab9ab8aa58074c4ed174c131d56b4ed48b1ebce1f8950371fa7c7e174c4f35150b752cdeccc2a553b416e94fb3eec22c0c4467c0b1f20"; }
{ locale = "be"; arch = "linux-i686"; sha512 = "55a96ff3fe9e54ec09a828f740899118504848c82b9c842ed27b9c1e1179f8efcbb2fae5e25f01dd1440f9d2ad896e37056fe8240979cf2c60f536870590cac3"; }
{ locale = "be"; arch = "linux-x86_64"; sha512 = "6fe1b00f8a03160a5131a52aba5b31401bf18913eb5b6018d1dccb0456ee09154c76220bb94b1ee20bf5b8e63535a888abf895af570e9a668395b497bbdf90b1"; }
{ locale = "bg"; arch = "linux-i686"; sha512 = "e21d3a2234b533b9d5904be3c1ee4f489bfdea747ff2b45828c40712f70d631ca824375c7a232989741bfceb8a7eb1ca341a4709285056cea2cf3689326a9c35"; }
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "160600a553d452c30d533e4d9a4ccc4c4d0cbbadf7875856f9be0fc81dbb7a686aa79f47ae8ea1c1e3746d150db31c7ce0dc18f1d271a47abb6d9bc35f478bf0"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "6a4267ce4e0d474779f16a7bb31fb873c0d2ba4af993428330bef8c93a24c1f9121b68d50956beb3df549fccf233fa2ce851c69950bf93cf6cdf34debae0cfce"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "31100d78f0b2fcca2643c822f930ffcf01da9ad3c026d8e05e88b659afddb9d55a000dfe043a87d6e4008d40fced109c134a3bb2c8183a1044d462fdc050989d"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha512 = "cb0efc8151949b33c23cb9d4fe41168830e215d4361963ec9399e43c97aa4504b4539a202f2c43283e63ea0a4afbdffb9bbfa1340a256483c3b848ef24660734"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "37e8311e0126da80740b9f97b4b69eb2285716b309e1986daaec5becf88ee5624343ca3b208fa84eb63477f47234c8d5958e394bf750da32e02d777ee94437f1"; }
{ locale = "br"; arch = "linux-i686"; sha512 = "be6cb0e7b1ceb0be27a7203620b19341c16061ce0d4632f9ce135b2559db2ca31adac2e40ef95f98db903fd151a1b5d411232361631272f2d6200dbcc45464be"; }
{ locale = "br"; arch = "linux-x86_64"; sha512 = "aa71bd069902a921b2a61ebbcbb604972104ba5f4274788da261e1e527dc7ce10c6a9aa0652773f0d0499d53c2916dd1e2d862b900fb87d678a9bcb401948cba"; }
{ locale = "bs"; arch = "linux-i686"; sha512 = "5282780a9f35577498b95ded38f86423d043429a0fb4b9ded956716381a3343ebe653508e8929bd8ac7475a2fa0d6c4c67e84482cae0d40a681338eba09f4c96"; }
{ locale = "bs"; arch = "linux-x86_64"; sha512 = "1056be9971338d821025a5d272321ea4b1704f3103c02014cde711516e9da5303dbc5753f0c2c1cf236096a53b3b067261b628f17d6d45e6c713f5b5cdee69b1"; }
{ locale = "ca"; arch = "linux-i686"; sha512 = "15c98207cb051466bc89dc15fb2dc1da95490306030fb318f3e3bb184d23590df7213e183af2e5178969099a4edf9752e5872a9d4a091958d7a9ab6087ff6bdf"; }
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "f7fc94c6c358dff1336938ff2d28c4fb9b0d391c22acefa7e286004978570e18cc1fd1a41a101a8bee27cbec1d750e04ba43cb409886f2b72e8e16a9aed6c835"; }
{ locale = "cak"; arch = "linux-i686"; sha512 = "96da63ceb6d4382abd8d1e343fdc4b72ead5e5ed2e3d451e768c6b092186287dcbaf239c389d29bc23e5641495a3f2a05512377300f45402428647ab77550b17"; }
{ locale = "cak"; arch = "linux-x86_64"; sha512 = "8584d4d82c79a56657a01a9cff211fa99e0fbcf0a42103a6cd9688713e7c11b77f35535fe31ed7e48855e055897b2c5fd84c2b1796c313401d8f01ed889ac7cf"; }
{ locale = "cs"; arch = "linux-i686"; sha512 = "2dff956f8df85bd007b68eeb8b809ddf7d99a6185f6946d2f4fd371f17e4dbf46bf2aad1799b6a1c84bd983935fa2ade5acd3b062f3eee48f7a160f37f3e8e6e"; }
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "725a2e1272722cdce125b5dea7e61525a43ddda6a45cb003f397ec8d1c9334f11adcd7fb6dd2c901de1cd9a0d07eae54304e5f95ecc6c529c80070b9d6af1b47"; }
{ locale = "cy"; arch = "linux-i686"; sha512 = "5eeacbc1cd803687235927a91923895930e135a39de62574c79499fe56accb5278da3efc4d151f0f93ec482ad44099481960dd6e3102afa94cce3c30db67b133"; }
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "49fc8136b3900b96fcea850a9549812b1cf1e9b1058cf99ee7e2e135cf49827e46ef4361badcc4efbd5dd09600d5269e68392f8df03c2e039d6b3d04b244aa71"; }
{ locale = "da"; arch = "linux-i686"; sha512 = "f806a36960cbec3624be8ebf6e7f8116635c7fff63ca890a886bd16fe73ec8a311d1e8b3c34ca680425d4634c91f8b96b0617cd175eef69e701d7c72e8917872"; }
{ locale = "da"; arch = "linux-x86_64"; sha512 = "22a274b9a5a1e670369009f2e48a4b7d2f63f18baf435d001506dd590b59115d43619fa824e2156b468b17739aea420621148ca47cd46bc3ace31bc5be4533f8"; }
{ locale = "de"; arch = "linux-i686"; sha512 = "6d64a77f420d1f87b7dac151eec75d4d42ec1f904b882b970d88b0e20a38ed5ebf8cbb2180abbdb8fb00dd60621e538fecaf77e09c4aee51f71a38a14f81b9b8"; }
{ locale = "de"; arch = "linux-x86_64"; sha512 = "897918d57691fb1a3f93273da48c128cf8a91e9bc5dd12d0ce2b4a085ff4df01db3ee28a378f36b7e7944c23f71df8a6dbf3481ec207cf85b73f3bac95bde054"; }
{ locale = "dsb"; arch = "linux-i686"; sha512 = "d5fa1438b71fcd3507175619090840cf983de9efb003f537eb28b9dba66f1cb3518e1410c4918187eb25766634464aaa796ebe0020f8fc110361008751e1c359"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "30cb3759bd1f6ba91dfa847703326a57901782ebf397adaa1a403afe894f9b8cdeba80fc910f50037bae003e61956845f605b0e62c364c1c415b12a5abb87080"; }
{ locale = "el"; arch = "linux-i686"; sha512 = "991dfd0870e38ee4a8887a61ce87a4c5af1c21206442a0602197caafae0be2c3c5aa4c7b25fd92fd9968bdf25c780ac342dd0203c3df8d729034ba20a459d120"; }
{ locale = "el"; arch = "linux-x86_64"; sha512 = "d62b4f1eb5feeb30e4d2d7b8cb7391f374a209d14b70cdd77acb56106b6df36f54c67a3c5fa1ab4286fd7c46b5d0a42efc52d140b8e5cbe08b17c6d7bd14b498"; }
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "2cddfb3d4472bfda882a3e3a054d5826a596bfd6b9b4399d7f45c6ad9f157599206f5e149f6c4fb35845ae291320520bf7a76c891713f1951c6e9a9450e92d23"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "d6bda8496f96448b9b046822547167c9c631dbf35c8bba07226634fc9aa1058009200d10e4e586fe059ab1e7b558d6cfa2c0040a33220d46dba5ca742bfe6f5c"; }
{ locale = "en-US"; arch = "linux-i686"; sha512 = "a9025b8d66c9294ede71ed37b7df256476cc640f7b7ce74cc4998c0b4b5741b5f869c486f1eaf4793fb4b2f347ba069f859e1c5318fa8df18c52377c83f8a09d"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "a551550037fe762d6d06a4f046ff4e2f37cd2607aace13df5ba2e28d643ddcef01210367555fb2fc66c6fe45d83f0306f61f4139001d1059ea5e913fbd43cd69"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha512 = "3e4721593a69bc289c7299b64e91af0ff121d59ded0167bfdd6692dc6d7a0ce0b0a7e8e89a591cee9fb90dc8b9eac26c5d978e4443b1d3462a0f4030ec8c5a50"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "76e069c8938cc133576c934e4049fd4d8920d8a823122f1961d4ab69802e9e52e920873fc1406dbab01edebd0cc576ccb12df0ebbf5487ddd49c339111bf7101"; }
{ locale = "eo"; arch = "linux-i686"; sha512 = "ff071fd2545a8dfe0fbb1b1dae57d3fc4b0743698e54746da1f774b568b2b9ad9b0e14e2cd27f56031e1d159a05ae7d54060509532a7503b3dcc7fffa442a514"; }
{ locale = "eo"; arch = "linux-x86_64"; sha512 = "7705efee2c65de30a0efc6ea0c372061f47c4266ab7faeb6feb01bfde4324ac92ed99a9eab81d8c4e2e6972245953a200c4331b26845eb7a2f9e048fb3023840"; }
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "3c08ab10d76650fd11ecd9616af1d4646fabdc55b63c7625940630f8aa25427482a3ff04052b91e6aceac708ca187552f7c87343d08c01cc1b4940e341e1672b"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "b6d700123f612b93b952f05bfa92dceed8878ad20a84214f8daab63e4eb669f1f69a9a5d6d28896b16b19d3dbd710b98a4851d7f611bea0fd79e41930c3d838e"; }
{ locale = "es-CL"; arch = "linux-i686"; sha512 = "7c64c7f7058b1cb3bd5f55b1afa0bc2e779d46d05e5dd354fac7573ad6245ba31aa126301d827ffd17f197b460be24c98ad7c2a9a3d4c66cb6189618a4e38ebe"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dcc4b4085fd4e480e79ca85b862c421f6e85d200d46b40178ce27177c1ac00f0d19d0c71ae3d7c12e15bf570cd0234743d080d06dae1e9e3c0c2f0eccf4bdf86"; }
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "d049bada399fbc723ceb14aa116b9218d14729cca6a2297d852782e4d3a0cc7e278aecc62ec4b7f1e1c5af10f65d0cd0bd39e6fbf95d989ce4d2ea5b0e2f7901"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "a77978f8af7f932151468c9e002731c8b6b3e9d3d8d8dfdcf28cc545b63f1d859b99c6dd25c547201b050f58bde9a55fc67b8134ecb0c893ce50f7788774fe99"; }
{ locale = "es-MX"; arch = "linux-i686"; sha512 = "46a7bc0f112f99ffc218e0161116b373c5b496e8d73744f9ed341fcd0fece5bc4618bcaebd68cb0aa80bf86078163d92205d322464dd8a918463507e4a9bde9d"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha512 = "412f52d4eaf3f85cd452d18164d2ce13d3057b45bd4f81ef2255a3580bb5b7e68f23dfc8622dbe3c4d69291b1fbb4a3312a429713b940b081415157fe5dc849c"; }
{ locale = "et"; arch = "linux-i686"; sha512 = "34d56c20cd06f224d1a3916a12bfd3f076a1659d9bf21aacacd5bea59e789ff496600b712a12f0b67410da97e0500d2f28f1f916872bd223f9f3b913ac648552"; }
{ locale = "et"; arch = "linux-x86_64"; sha512 = "383a4e2b28217651e76a06dd84eed5f058bf53c25847a6ef0ad1ea9e6a3c98f6a94ef05999a92f03f669e7cea0df11654b201c4e21fc595fcf99bc91b90c05df"; }
{ locale = "eu"; arch = "linux-i686"; sha512 = "cae20dc1b9880dcd9ecf4331bf1b6c6208a63ee3490ac8b827c9e338916a9d07e447f93be4108db78ce3cc96b8d3828f1882c28aaf28f198fa4f875035ca5835"; }
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "38ff3155783328b685c72f1ada0e01ab8a8fb75b191455dd43de590207f9b3a258da7cca6ecd3538a7d8319c8d1372e174fea0a22baecb497ca33aaff80a33d2"; }
{ locale = "fa"; arch = "linux-i686"; sha512 = "6d4d15e4897568d32128f193fa7bb413e63cb2bca23b81a16cb5b9ae7a558b768193461a182552da1153dfb708f834434a1fb63478cb5fe7984b91d00415ea34"; }
{ locale = "fa"; arch = "linux-x86_64"; sha512 = "6439f27cec2a8af66a4e68406c88b536c5f8e2b0202ce82aa46e75f840cb3977ddb041d8ee315d95505ebaa0e37b36afbf26ea0f39310cda09f6e765eb7bb120"; }
{ locale = "ff"; arch = "linux-i686"; sha512 = "ee9114fe358d9a6dcb7e404f13fc594de9339fc7ad126063b52548d42aaedac7abbce9e647766462de2716c3ad248b6992dc04e96ea3816068e884c30a3bcf84"; }
{ locale = "ff"; arch = "linux-x86_64"; sha512 = "beae2223a6b3aa555c071b51a46d3b0758efa53b6002f2486554f5bec154cfc1a1598f0175af654fc47a60a170eda916152e959a5ce2f799b779e5040ae15c5e"; }
{ locale = "fi"; arch = "linux-i686"; sha512 = "d8414f63f04a5a9c916487f93c67d2368bb4d8c8fb757c1d58233e6c6e6bde139f323b1c77dda57730173c6005b2647c688f7072ac09c1962b04a2493cdfa18b"; }
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "7e0fce63b69653fa5d0d0ffa9598d10976a1f49aeeb48bcd8eee26b51ca1f6d1d898c84944a442d530abcab700dcfdf89c48ca23db9d835c877388a8f694b7ea"; }
{ locale = "fr"; arch = "linux-i686"; sha512 = "c3bfda75397d644bc4392ef87f1d24faa033f4c5672adc4d5d0007d5fbd63efd7f46a2febd0bfdf95d8f06152d274daf39ef6355e049e7fd5e53e2d750d03ae0"; }
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "81c8091c9d8cc1ede738bb1d9b4fe72580d13de7e3f89410d1c684ca017ee197837788e63243c9722b30e23b2c910cb54fc7985f4936bc6068643a504d9a4ebd"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "59797af1d76fb2afceb06de28c6fd13bdbc14d42c61f87f1f71d8273e03aa691e2ade3ba0361d19721862878c911ec46ffbfd0431d19d6ec0a92ebac05cfb4c4"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "19d0cfb01374bf2842a17ef4e9f5ab85280c1090723c1657459a230262d22aeb14c2faee1b86ac0b342c5926cbbf0479f2e1ec315117c06ad3272a3362d02f8c"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "c1a4fe00a36e95fcd33d21544ee6b4fa5a6eae0628a37c27057cc801a641fbe5519818ccc157b87b64f24f4886dd6dd629809c89b9c89dc4878de794e48b107d"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "8d9654ecf7b6cb43b4794f345105c779809b9bd39a9dd46a0fbb1920139e9234e7433fd9a8d7dd57192c738d187f97ab82c8dd3f3a2460e3a34cdc9e9a5c5089"; }
{ locale = "gd"; arch = "linux-i686"; sha512 = "0d48b2886c431a9237293f24fa5f8cc7104a3373b24c98e23bbf93f66aeeb5b8b9e737712bdd1c777db19bbd6b01f9a33f0c388b6af023d852cce6543d486973"; }
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "0339b6952f993d38686d92ac9a664cfa558f2827b92ae3464188f12e28e2676c8c4718cff62a840dba14de687434cf13902a621094f63e1bca1ebce321800d15"; }
{ locale = "gl"; arch = "linux-i686"; sha512 = "5cecaede8ebdfb58951b3f839388b81dccaaaa5d3b4fb5cbf26978b23cd962905191fa91d961037fa15000af47ab48042d272fd18a73e5ed4dcc2bb0ff4416ca"; }
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "d1a0447ce592e7d2a8564d9c27fbce5f9378a4e21db3fa501782e57b6e13ede6f42b612fffea32e8891d47010509ac8e3ed1f63c5a81878008f9bead68b6b750"; }
{ locale = "gn"; arch = "linux-i686"; sha512 = "aff2f407e4c947d3e34447b43e844135562d79bf937a05dad5ce4dd1853dd479f35b4f6af1b2d8b52deeb9786a4fc67980cbf58ad82a747a7e55ea753a50ad43"; }
{ locale = "gn"; arch = "linux-x86_64"; sha512 = "78645796fffe364fcd28b80cde591d88db91a756318f645610f6823b616222c0c53faf8d55aaf1703d4bbcec1e8381cee566bb5739ccfa181e1d1224408463de"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha512 = "331bc227d138a49d74cca37f8d7ba4e6eb891064357aa5b0606761f9af8cc4a029816a3a96cc3ac4dfb71b1d010c569940ebd70375fdd06af7b6b487bd90dafe"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "d1f6c5af9e75e76683d39281eb559ac688436eae65d6bc486763028744af030a6c311d1f0358ead5e88ead60357261032dd739251352cde097986251dfdff325"; }
{ locale = "he"; arch = "linux-i686"; sha512 = "7a49d8cabab6aa8480026de6b77e1b6d60333c580d2b9591cf3fdc8c491d269f6a7a7f93118594de8c87576dda868f12de5a88f494736f721ee3ddc16a9afea9"; }
{ locale = "he"; arch = "linux-x86_64"; sha512 = "0eed4301d7949415d21426d9e52825710a0f48a1a0a3546f62d757059091bf12b3b53091f2c3102de0682162e3982a9fb58c111c9a6b8245d84825892e1d6844"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha512 = "70ecabcdfee807b1a7e0b6a167bab07d3df798672a61bb7b80d1d6c3ace9385c472e08dd31f2c4c684cd5e723e7024016728df7b22943d3adec3d770ba7abd1b"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "11e8be059afa8298a23857bd68b2f895bb60f73378c513d2aae0395b5faed68123631d9ee44b5608263334269e33b76b4563c063b2feec486e7a2dac1be42275"; }
{ locale = "hr"; arch = "linux-i686"; sha512 = "2c99b81cb0c8413aa98dcbac2cbd45d59a440c173a9cd744b78ee0d60b82ec4fe4894fe5e313d51b81caf6b86f40effdb36f5fd90c73cab82acf97c20fb5b152"; }
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "fc209d82cbc24eea777a4318f5555d2cea4828bb7f305f868b8fca18014ea7c930f778c716eb0b9c1a7e29d9a4353b4c537900f9d659c432d6a75b1eebf30963"; }
{ locale = "hsb"; arch = "linux-i686"; sha512 = "3232380f15a33f31f8e3755707231ba0725b9afdae1d2a0d4fb2eb883ab4dcb5c8aee75549e41e7e2cdf445b6f39331b2be4d7e417604987c7ced46d2dd5dc51"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "11bb460c404316c322e2498986ac6e7cb976a196de7208ee54dcd4ec61b8f05fa8f7782d6cf462cd5531f3137b1688b7797da2d78437e3c4d4f95867c781953c"; }
{ locale = "hu"; arch = "linux-i686"; sha512 = "40c3837c7ca4e0dc9e97e4c4422e54cc3ef157933ce9969abf71fd422fbcad517a6f6da3bcada83d3567323e83248a060fccc8a23a7f6fb55568a5b7ee0ff464"; }
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "d05bdf14ed9c72031a29e7e9b39afe79bd2ccdc69bafaf8c6196081d462b0aa57a220a8a2105812b215067494c53de8adc994fbbb3549ccfcadfc15f99c710ac"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "a9da495cc3e7a1e89ca8dd7a3db6c83529e0b7ba6562e7f0542f8b9c93bee8e4c219973b0b6fda1abd046d933fca718fab1f6bd4350ee960ddd89144dd321ed6"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "53db4843e0c9e99188e28bbe46b09239d998a3bae35ab79954bc6eedc5e73c0f3010c500dbb93f8a6ee2d5b22fb3ee9fef9ef6eef2dbbadf4b83f948282a8bc3"; }
{ locale = "id"; arch = "linux-i686"; sha512 = "05e7450a164c940e43ce34f6b7c9ad610d1652f11b0f030dfea7c9d8539961b2f3e69ab0d3b8d714725cf3e8bb256f18f4ac3613bc86bbf6223d9914e4eb77f3"; }
{ locale = "id"; arch = "linux-x86_64"; sha512 = "7ce0b880406dfbef90ca6ae6f121eaf72bd289e7b57f7686ea83fc182cb9b54a3e0bd8b23bffbcfb3c9e82a6b13c7afa16ce56d426f33f66072db4b5f466db04"; }
{ locale = "is"; arch = "linux-i686"; sha512 = "71446911d5142ab19308aca456dcc1d4d087db07898e331604230faa58c2146b980212880c7f88b6e3770b303a8450cff9e447638b5a063daf50ec25d29de738"; }
{ locale = "is"; arch = "linux-x86_64"; sha512 = "2542f214cb2474eab97d18a1daffb1181fff569058b91c1c9d7d6400b8401020b69ea9492fca55153c904289be45215b37ed0846d563f8f06ba401c482d59762"; }
{ locale = "it"; arch = "linux-i686"; sha512 = "bdf0da50be211492e2acdd9de223ef741fa916c54e94bf9c8eb20685006b68b5f430949161199a915c368d11143caf828c25b2e82c33fd5a61bfcd05de53966e"; }
{ locale = "it"; arch = "linux-x86_64"; sha512 = "a4562fdcac6d9ba96fc840498bbb381de6190158fea65c4809ea1ff3518181ed47b7c33bb772077975fd07c23a1e8700403cb6cc67c5fcb1c24e72563214f4bc"; }
{ locale = "ja"; arch = "linux-i686"; sha512 = "cc81a02282474928e7d2efc694761168db022ffcbf5ff32d92c21b90edfb194187dfb78f2eca4c42e60cfbba8ab6614c1c7b0359aaecafa47b1c9d3918327cee"; }
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "07cd92b7f9647f774b080cfcef828899144cb03472d70394be197c43732b164978e1d9ebc9212a47b58fdcc61f5009328e766f4c6f799f35d73a4dcd2b31fdd4"; }
{ locale = "kk"; arch = "linux-i686"; sha512 = "1bef31c35180ad7fd49ab695a6985d8be301a6802225d319e979b8c716e78a5687753b6f63516f4b4221c402a2d2c8c0a0e22aec9023cdee98d71a4335728e7a"; }
{ locale = "kk"; arch = "linux-x86_64"; sha512 = "dff599278a27fe2b4efbcc99b7ad3b211ef5debbf1b95d765a36fdbdbaebff69936c250018f237843481244e2b02cb8de4e3090d9422adcbb3d8af4239759269"; }
{ locale = "km"; arch = "linux-i686"; sha512 = "0080783187b80019cb4c56e2b30a1a403c632defc375adab7d613489fbf7f217a22a779f0119e2810ee9f0bd024418ffc654df146873a06f59bc7f1de5fbf244"; }
{ locale = "km"; arch = "linux-x86_64"; sha512 = "84d1ca7fd0a4d6a39aff375e922dcdcbe51fb2b497c6eebc312abe6cb5b29bd049e648197f0181bb2ee1b47b43275c14eb13233958c0bd4f7cf7b28e5725de97"; }
{ locale = "kn"; arch = "linux-i686"; sha512 = "2dac35157e3264547726ad33f786bd86e52a4db8aa8d1449cdfa9993e5bc16556c6005e06cee915e427e74b3eb4eed665a4a6deed7bf3800a95319346fda3690"; }
{ locale = "kn"; arch = "linux-x86_64"; sha512 = "175b3edf58286a229ab4045ca2d75f8a00e8ddcac532fbfc8aee5a048e0ae0cd5044155a8619d6dc53756150bce2d46b910e1abe216bf537d259435199cb42cd"; }
{ locale = "ko"; arch = "linux-i686"; sha512 = "1db17eaf47e7916366d05021d683c2b4d8f26316abc057a450d24a5d19fa1ed9aaad2f7a45cee63c0f021d93214b62a032d17312cdb123289b31dd2e5bd43808"; }
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "4bc673e54fb0c30b7c8389c2a66b322bd4b19e8635cb3d633754214c0726fb95d3194d09435bb4afca17e6cb3f03f028408d13f9ed44d8c2b9c323eabe5101e9"; }
{ locale = "lij"; arch = "linux-i686"; sha512 = "8349ba8cf921d73f0c3bd54c9a30df9c0232d7686724a0d635435d65a6bc8baa1915e25702b930cbefe954b5aedd1d3faeaf54ffa9b5dc494e465a635a57369e"; }
{ locale = "lij"; arch = "linux-x86_64"; sha512 = "e12597062c060dabaff08c251f82ad63f534c341d1afa94e567c763b7ac290cbb03a27726e03b449ff89fe8b86b25211e807ef7ba34e876d902705f9361d5cdc"; }
{ locale = "lt"; arch = "linux-i686"; sha512 = "f67ff28a20ae0580aa537797928bf84cdc088cc0df586071a460eda6ea7b96337a5004b2689688a487ed246b5d83a14bf77a5002f39fe7ccc46e92f65b565cf1"; }
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "f4ffb37c69b9c69e9ea54d691bfa3c069b28d5b1b0b48b917f4c6f10c1434bb451b7c17e777b5daf3c869eeefb2a064264bba7591f681d319fcab00335b37384"; }
{ locale = "lv"; arch = "linux-i686"; sha512 = "7efe759ef2f0e585a8887e829e2bdf917209efd5b3d5235f5765c0995206c25941abed9b11f9241da565a919f94890682a944d2bb7dd1d1360f67f173dcf2852"; }
{ locale = "lv"; arch = "linux-x86_64"; sha512 = "63cdba3ea94fb1847913a42ba70193ebfbbf1235a28881c7d671b20dc8272c5989dcb8290087a0862cea7a4c8ff448ee61b42a13d6c03c8787be1dbd957769f1"; }
{ locale = "mai"; arch = "linux-i686"; sha512 = "0619cde7ad13590d2da001fdf87e2fe9772d65d1ce468ea2b1f3085d8c6c157f48d23b343e6886969dde5827d12a368e208242dd16df4e498893d53f030665d7"; }
{ locale = "mai"; arch = "linux-x86_64"; sha512 = "f65ab5c51b7dd0f127a4b9f65a0280002af3387b12e8730f8efd79f4700f6c5f5842e3f634dd738571995dfa52ef58ec0d68255ceb52c6a7df0332797dfab253"; }
{ locale = "mk"; arch = "linux-i686"; sha512 = "e6d2bf183fc1fa88d0bbccbf058344e8dada0271694ba3bfc149e965ff16ec05ba6f7a04cc39f3657524555e84f25d072d7922fb2c075b0bbb8cd933336f1d94"; }
{ locale = "mk"; arch = "linux-x86_64"; sha512 = "68a96a11e38944d654d1aa720b5a099fd0789520b8681f15cf33d972956e7dd2c44d940ea0b2840c48db79615aed8c83d3f19769908752f960f84a7bdcf3a2ab"; }
{ locale = "ml"; arch = "linux-i686"; sha512 = "32c8e00f71a7fa609c3b99799f64362962d245d75865ce54fcd72e8cefc45f5cec7a99ed343a7bd92614569e62a02ac0e712b4ca3fce3d5d0f2f7ad52767c209"; }
{ locale = "ml"; arch = "linux-x86_64"; sha512 = "c641244006a11de3b6ae947f2d5bf8b40fd4bcde8e7b71d2fa2a8258087bf3d6382f21b10b05b2554f031ee95a579d31d0e0d8f1b72a5e1101acb31075aee02c"; }
{ locale = "mr"; arch = "linux-i686"; sha512 = "3949d3e4d9fa507c50f5ca92ee9cb041dc9d034f78d44343139a1576f128a06d8ef3aa2b1fcfe11d77a7489b0f7dd18e14f0ec0fff595dbefc219f6b1eadd969"; }
{ locale = "mr"; arch = "linux-x86_64"; sha512 = "c323cf8842f695e47f3c91d356ff63bb0ce7a5cf47cbe874dc6956d90fd84f6330e6e1f5f0bbf61e2cfda66a2dd0e81a756f3b464108e7ad84450722562e5906"; }
{ locale = "ms"; arch = "linux-i686"; sha512 = "f5ded01c47ac91d506a10774b198b3c2fdcff35a10ced17cd0cd94a1e367d489f2afe7ae22d59beb420f771684cefe3724c88313249a4c6072ce68f36bb16cbf"; }
{ locale = "ms"; arch = "linux-x86_64"; sha512 = "39d4a052c21fe9ee876f8b8a7fabeae9a6a30d959e1a7b27b0a1fd08658cac5959aa4879e3056675e2b7de83f588cf82f5d138f2ee5d9b0bbd135b51de109f7b"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "6cc34cda3cccb3ce92f44244e291dc94238292ef6e91172d73659ca5b4b46fd004483680a7a45ad3643d59c57c7fe7bf4286f4cf7c903301eb39712db9bd3583"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "da645c69d2675bdd1d2808f0d7446ded4414311bffe5f1a37a685f6f4338a56e831349a1a7904c0332266e909e4e82085585afb14b3fda7925698d66e9912a65"; }
{ locale = "nl"; arch = "linux-i686"; sha512 = "a2d906caf6b4c36305cbcd2840915000c53db2ac03122aca162e672014b217237363bc309cdee5ec19d21106073044fe8668fd044805161bf4916cdd938565ed"; }
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "6288c2f0306aacd87a82a3a6262b514f32a177674e6b96eeb5a8f937ee36b6573d8a3e6925be87609e4d7dabd1e6367eb0e730d87148cd50c1572756bb098a5a"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "04454f9f5dd2611cc76575a41d56f6819c5b97e213f82ebf0aa5e8393d9cd4a99a9df5291d3e3c3985396a99559f39fe5dc6a85141ac1d2f4919b731d7539a89"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "fb55685275d0b6c9e47b0356bd4249feeb3005b338d2a2caea4bb7b86edc6991752af9276db91f448032ba7d9e01209d92706f7612531232f87c05cbcb13f337"; }
{ locale = "or"; arch = "linux-i686"; sha512 = "16639bc10229e171577abfeab841bd7b5dc411f4e314335787727803a486b8f04e8730a7be9321172fdd60791fce7363d5ce5aa28628cc4d2b7769357737cd0a"; }
{ locale = "or"; arch = "linux-x86_64"; sha512 = "041f3a63a4cd9c0f287132252df7aa6d7eedc72650244729e01eb52a93a9ca8206a11cd7783e7778d4cad9a525ce2aef1c423840ea5c54fa202600a0b5805e31"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "7c9cda0d9dd9d1196ca33a58b6f5f3c3f09896bf65e8fbeed67fd9811cb1bdc12b7ca8966b7612cad524a3bcc9dd1e2678627f6cfe172b1bfc2d9b64eaac17cc"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "56507e7e1e93ae880de5410b4ad8c1302f58b43ade2ee4dc70c1290334edf2ea05f7ddf2ca00317ee33662de29c635caad8f73332935fd5bd4ff6a37758bd195"; }
{ locale = "pl"; arch = "linux-i686"; sha512 = "52cb7e700e541a82328c935a0a99313dad6b7699c09a1386697c77544284d53653705ec6d57f3cc1bec632962217c090ee39687a81b19f3a3af2178eba9a1eae"; }
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "77a99740ad99808a31df3e71038944901fc0d5339f919cce40389de67baeecf2b9c34608194ea1f0e4a25bbaed0ba06159d10ac8816735b34a2e28ab041ae97b"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "e39d9b22f8b7226ff2908b34847fb77cbe0c834f51985712024de83ece7549c8a89c3ab3d81abb6bfe6a7b21f18dee2d87926abf3d2edf9f8a8976242a4dcb26"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "a03a0e37ecc2d903715b70eec0a4b2808a913a8e27398dd96206295e1e765283e97b76ba278b394f9629e352c10cdb2011f3184b903d0e6de784a13abfcf9668"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "2d511400948ce05358b9400752bba41cbd947d1a4a5a5a92f982830db92507e257c28ae319f411717253dd53a1a7e73607f9f62fb7b7c8666aa339fdc73ce728"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71e2a000333ae8565de6fc9d01e871c2e894f96a9a2544a21aac08ccea0399da37d74c3230c4b3cb7ba0231fcdddaa417f78e48848fda8f063179766cb675038"; }
{ locale = "rm"; arch = "linux-i686"; sha512 = "4337964e6daa7bc799f01aa52a33f04c060288bbb881c2321ef938658b57f05b632f734ea0564cddd0078f4b38d1c8cb2c2e6221849ca4aa80579f308fdc2056"; }
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "a55e250de5e11ef808243ef974fac8938c70269a36bcf9db898a11997722b8d96d60d76ca28e41e023b4c7e6614e323479d3d4d2831b83655ad3ae3eb5ed774c"; }
{ locale = "ro"; arch = "linux-i686"; sha512 = "17171889ac7647e525783c96afa5a5de796d603c8fa6a7ad8d12205ad510f869b35f0df79aaa04e4b980c86ceb923f89936499df7e55539393e40ac92c23bb1d"; }
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "721912e5ad4b0ad0727f0185f660351b3c59291b3a22aa394f01c26ee87366b43b5aa08cdfc164c16117e1650837bc2007e42c34756dc26466edbb113f11fc09"; }
{ locale = "ru"; arch = "linux-i686"; sha512 = "28dafdbe6ae4fdabc061c68ca82dc6ab8fc463da11c712500378d90dfb662d6e0991f35a918315ce138603283befcee182092ac4f8d348815bef27431252874b"; }
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "27bbd48859f5ed6053a2062778537f4952a0847ff74d2dd407766ef4b4f144903167b4fe80b98a5b2b80e42d6b730bdfed36fe9a958d247a335bf31f091b8c70"; }
{ locale = "si"; arch = "linux-i686"; sha512 = "0f50616131a3b80499885ed5fb8573fd3ebe522cc893496d03e48ac6eafbc2a5224240971b66c393323d2583512dacb73f3201eef1a495298badad605cc76bb3"; }
{ locale = "si"; arch = "linux-x86_64"; sha512 = "37996cbc994a7527c2ffc5143dfe970ae2fe0e098f0bcbf9fd4643e8297bddbe7fc0f4af2f2ee15b0807c339c25d780040e2f9f03975ba9f49359052a2be271e"; }
{ locale = "sk"; arch = "linux-i686"; sha512 = "db95ce3b68fdfdfc9916cfbfa6a797370ddf58f5aa234d59bde6e76cf7fc0e821e9954cd0ce090404f5f718b9ede9c1ae6b9c7e37db9e64eb9d9dcfd975c6a79"; }
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "f9e28572c83e70c7658fd67abce93d021600fcf6b8daa7861cb6eff315a28c0e531f1082f6c25f5779371b2884c975fbc22cb953aaf589ba6b050bc736d25d9f"; }
{ locale = "sl"; arch = "linux-i686"; sha512 = "e40c201c5e892a83a23ac9f1af22e9274bf6d964b39bae2e191bdac100170685376fa81210ddca38c76e5277978772c693563e55871318777cca7ac7e47fd1f3"; }
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "ea4a198b300e2fbb23fdf863659b683b772624cf4f6c2c3e5e07af9a3f991a8fdf7113f852646f36f697c705c3a6f24485dcb8e2d615a3a358bfdfca406254a0"; }
{ locale = "son"; arch = "linux-i686"; sha512 = "b510efeafff8c32ef3b7f88e81d4c1a1c1b2bb435c2ed4ad69adbef8f5d374677e2231f94700cdbff9e5f747c712d8f58245a4c8f0d38ac3eebb5adcdc42c7ae"; }
{ locale = "son"; arch = "linux-x86_64"; sha512 = "8c8d583e7e5ef1363096c905535c8e6dd63900ee50684d9cd36b4e55100930b8fc8ee9a3ae770128cfc71a30a73f331cc508555ecdfd3fbbf359ad08d5cc9519"; }
{ locale = "sq"; arch = "linux-i686"; sha512 = "809ec8706df6f3538e3c53765a1f1834cee3d2d9cffbfb1f3e991faeedaca28a2dc3d4e037ed9e00d58ac6cdb27f5575bdafdc454828d9fa988d7764bca88c0c"; }
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "6f2c5778d40e9bc5bb558ac626becfcbe33c42e2a2e588ee59065f60643708ff83be55a082b383f7747241ad8d59c0e3e13bc8556967f5fce034ee23d7f054f8"; }
{ locale = "sr"; arch = "linux-i686"; sha512 = "cc0e0c039af32611d489bf082dba5ba971b54b22937d4b8fa80150a560a3c452851e67d02f7cb27e1a63229c9a42da449f932cdb88af342e0146022586de109c"; }
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "21928411981e8d3fac5e44f02173a08ad4c3135ec874998d6ddf5ef2821226ffee260023e5bb45848a40db19537b1d6cc0b127d9524c0d0616d80618ab1d9228"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "cddd222328f1099c25591b03abe23692fdccc82405df127ff920818fb7952fe384fc1373b1330b971d196e98acd62b3754711b38876050ec3cce7de20f183b79"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "06c819436de292d531a9d3df34b76bad36bb627e0e45ca042f2dafb06db14cc23e956dc2e00904d5147bf7d0b39c16f712f2b8acb1d9bc4daa210d56d8058e22"; }
{ locale = "ta"; arch = "linux-i686"; sha512 = "5e8560e423aa88c1fc5b61cf91c558a861a58d09d7e560790ba835f0bbae85cc82c61e1eb9e1a92e632d2fe24419d3eecec4a15bb083bf0c1568a441a5586a50"; }
{ locale = "ta"; arch = "linux-x86_64"; sha512 = "6ba48474d930036d77d23b717fd2e592b19d0ab2b4399f7a6f7bd36da48cc0a2dea9c25442928c507cdfe8a8f37a8d0e4ddb94da42a7a3d6c2ecba26d4f7dd2f"; }
{ locale = "te"; arch = "linux-i686"; sha512 = "2df2a46677c979b8702700c69f687e8bfa49e879ccd9204a1ca876b7a5f8925abfe6f81f42e6d6576aff6cea264cced854ae536a3cc01ed04b7a536396e9ff33"; }
{ locale = "te"; arch = "linux-x86_64"; sha512 = "d6c7bdb7a823be0cbe8286b977cc265e80ae290ae8fc4002a7dc71eddb3b80a3796e66ad1e00fe2e797ae83272422f460defa86322dea8e33ad0d7dfb50491de"; }
{ locale = "th"; arch = "linux-i686"; sha512 = "eb017475d187ef4f1329d303bde84a17995ed84458923330c2ef61940c86674c03f06de2e3655885df49cdc384d1b8e952dfe8ce960cec738f99b8853af1e018"; }
{ locale = "th"; arch = "linux-x86_64"; sha512 = "cca6fe63bf24ca1db9d736305dff312f334cbe0a836cb181fdde85c4b2e383e1a19135f441a1f07c69cce716a4c2d3fe42a07fe3c91146aa6598d651890ff049"; }
{ locale = "tr"; arch = "linux-i686"; sha512 = "98aa598f348be7705c11834f6d174fa19a8408b87193a93f641c4fe92898f3175f79a1bef9c66dc93c3cc19a372930725025d7ff1bf178e951c9d5dfd675ff36"; }
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "a4c2d82f7e56e413526cbe40eb24df79ea264b37dc09b470ccf3416c922730d714ad166507f06b6a68fc85ff73df73309da936ff56499cdf81b78fc973675c86"; }
{ locale = "uk"; arch = "linux-i686"; sha512 = "cc04ead20aa1f6d3a8ac470ed3fc69ac0d348ab0523308ae56b49734785fd63bae4ac6fcc32bcac3f2e9350ebfefe76fa39efc2a7a7f5d7c2309b6999f490e90"; }
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "1f29246b8bd1a4e07af7b30c2ffcb5239ee5f870e529227e96c0ef091cf9d9d8783891b2e60b0a5dee10e80893ddc6a5cb972d27e70ae4cd0f820ba9f60a2165"; }
{ locale = "uz"; arch = "linux-i686"; sha512 = "d144626529e57e93ea12ddca25184903b78b878563302c7f14a396435187791d2a14482a7d10bb569890d9483253474634574f105b9c79763ad6a85fb10de73d"; }
{ locale = "uz"; arch = "linux-x86_64"; sha512 = "4e6b7706c6f529739a18748f35d7e31071c6818c0f83261e1d31e66306fb40ac94573f7ebe3b811f4c70f88a2bbca29528b868821962e88ba30dbf84039c5ea1"; }
{ locale = "vi"; arch = "linux-i686"; sha512 = "fc7144a73551e09196b7c79e4fcf1ecf5ad92b3e54e8a203e213627133df0260dc53f0cc9bb9e03ccae0953de5f2752e303a35e0fdb720a40637e5b31edd3544"; }
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "7a38b4814418516c8971825616874782512bf91d51a798fbdb1b8d8a817d30e72d9fde45238602a6de9cb9c53cd0512acb07f6e16a819ce24fba6467ab1cc8b2"; }
{ locale = "xh"; arch = "linux-i686"; sha512 = "0fe791a3270343598417b093476fc7eb50628a7557c56294b3222e657c62a2b5ce7988243d75ae08f7a11c2b9e437d01d47258b1ac93c2579638ac67e12c4d78"; }
{ locale = "xh"; arch = "linux-x86_64"; sha512 = "f797c52d88b62aaff15419baf5d7c5b2a44909674602ca82c295120b4b0fcb7182a36952f7adeaf7e9878b3d21031e990d22e5f8dcbc5421a3d587ba37f63906"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "970c14e1f105d6092fd542d73db57260836bf249aee99ab53f43882cb6327520905b7a452e96a6c142676794bf22e13c80e86291bb5b6dcaa09d0d9bb376d4be"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "b811f9d359fb61674781443d71e961ba687fecbe4904622b6ac410e435e31b6118f30726896021d28ae51628ab95092b28181ca0ae471374c0cbc5a740fea496"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "43f8d6e9cdf5815365e0eb1516ccb5f6c7ac7e19c10d1ee45ee367d721bf1944321879d9966f7000f50d324f14c36f9f8fcd9bb43ef20c780ba39d3c138f2192"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "02f4910b3c5b6f75e2f19c03452ce0534980be7ff18abed8be2a2f9af19c6eee5928c493e618b00d167bb3b2d7e60724741a2f4de1df9b1e48a05923a7649cef"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "9fa8e2fe59c149abf5b1f4fad168717aa68c9e3e9acb219aaf257aff953a719c2df1dfd55081c6c4398732c9bb16690e4481b7c3c9f1fc9ba20468ca38d7b9fa"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "b4115232ee0cfa6062fb9c06743d31edc444f9e5481b84cae4c1ec275c55500a16fe7478ee79caa269b669e566701be225c45729946ca950a492b36038d208fa"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "03dde31a027765e7003c89188cfdbd87f57447c8d7f6542e11e01ac4242866f6db98943d8d50188b1e0c41d740f3ee95b5f9ead01e9df5ad9beeb066c0b1e54b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "e9973af0cc52e2126ea682067fd7aa11bf071ae2aafab935d704122480a46658139043a29df30c038af85c1fde836ff7725bed21ea4c4778e176adbab704c6ed"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1e23956adc055188e4342cfaa0e38d062bcacaf0fb99895fd2fe3535f4e528890a75a18e0620e881e1fc87d11ce8b21c280c88ed11b2444d037990a11fb8e9af"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "e75ea9a5ca4860f228d4b2aba3c9ba4d104a7cc24fa138102d80b595e29a391d15fb82d749ff7a03193dccfccc7bbd106dfbffe5ae7152afc4b62f4d05d58ad2"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "df97f1f2414d9f2c1d5ddc50e901167fe3535ac0f71ef99e08552ff9a5f4b7e6162f258c41d1024e2f886969e7ae80b741c271b551a51ae05a48a3e7987a52b3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "79da3baef8806966891b803137f2b9610b3562f0a806ab2fe3234f3320cb0efe11ff523373e933d5d230a6959ca68ab013d64dded47e6043e9fee90202c8bbc7"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "ab18bd3f015cddf2dfe337556d29a20576dda5879a56242955476f50b0978808d3ec63812666ce73a58904a70edf251e3773ea34a38b955510ad331e5f66751a"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "26be5b409c5e4acd6a09482d1380f902cbc9948fce33ff5e33c22a8573b5ccd05f10a4b6f84dae8ed9280f5b6568a411837ec7bd1b64bfaf18670e2a45c475cf"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "30d23a4012caa6faa02871be312ebf867321b5cddf1e74d7680e426af4a6670b34aa48f237ac8801c696d0cd2551f90ab5fe482b4a9bd03bd7d4521e204bba65"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "cb0ff48d6cefe69c4f05a83d7b9247b5bccc31db8efa708a7de3ffa67459f8427ac255bb6645e59f7ff6047f0370d24d2668954837aed7d71eae88df6824cced"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "00685bee899c7a083fbe2a4dbdbe32df1f291c619e1ca681164a3c88782f6898a11add06a17f13aeb912c635d0fb2ea2c30c0e3bd5ff7cceb63b1134901ecab8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "e4133e1a9fb103652037caf21bc18815d89bf5e1a0d7b34abe115715e8e5060de8b00d35326bd3cfb9d5edb7cbe286456748953742e4cb5d5c76c7314a344720"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "9444970e5cc3f3359b02b8bc58f13edfd64ae6f99d306ae7d9baa084658c75b85120354614fe2655b600e0005de1b128df1e2967f93dd0fd1c31ee721e0ac306"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "08bf09e7b8f8911e42f5e88852f705c1f7263d1b6a0981c07f7ff651e620bd31c1a6baebd8a8a9353e49f9ed50d1c0d55bb88c97faaade0d415cba482ddc6f73"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "1708e547f2ea234537a0dcf40163ac18c641bb4860e74f054325db8ddf4960ee0649348b458a8fad1f5bfbe1fa4308c9fb13d84fb941c2928ea42f6ea77cccff"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "26540e48ce864590cc40a45d4124250674a1977778d3251b5f46701d3fa3b0f6d8a602b5bbe1449040ff943a2ed12bce7758037fe8ab753d0b43eb815e905ffb"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "6e37580672455a717be37061c4d3135e72cd6aacaceef20957cafe9fc95ff40a6781dd92a8425e4023f75f4d027c5961d7a3b0b6373501790ec5057da519baec"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1498ed777a7e3aec18945ab01aec80a51e7cf6a202ca38b333ed6aa9517170bf9ec4a3c9e638acb60cac5b01ca16963b41489cdf71cf40655cd87d2ef161d4ad"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "1d9335e8b1268fc163bc31d1afe58613738f08e4ca8a429da63e59e4b862e326cd62d82a686e5710304a5b86e9d2981885ce52aca9913d4cbbcd4c1e0a88e782"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "e686e0a9f8d5078d2a728add3085d0d11fcec9ce8b1a05f242769532ede411f41d8385b2199e2a27edbe8a58648d3e4b91df2d730e6bb17b7cb69c4a22630fb6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "19f012125431f7c56ecf9ac12bb44a52aa041a97a0b2c1db3656d6229b4215d5bf492730c2bf08244e38ff120ad9003d4ee0842f834cfef8536b8f40d8e2217d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "250c9dc52e661c91163ece0fc195ed29d621508ab5666ae97d74ffeabd0dac1effddcc4d0ad9573c5c44ba9aa746330b5a6dd40693491f52609b1c47e9fe97a0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "fa946cf9eba376ddccae25b44c31cb41dec16c016c678c155d0fb6f235c2932fc59eac0df292940acceaa7f463979495de17c86863450a1a771a277440d2033d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "eaf3e8c8706a6005f6f78645c709cfa2463e47f678baa395db6c562506b872d9d110e973186b4408022cb1d4a8b343d7c84e2e0f1a3c18e3d5c04b72c23243b4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "c4fefe7ea67edda4cf5ff7dccf6639246fb73eae683ef72bb7c75e25d630cea78fad38d11d690d9786e43e506cff548df3c867fe91d7570048759933f2ec0523"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "9bcad65fcbfdc85892fc552809da740fd28094bf6be32ddf783a6d011c901f3a17d8ba8d33649111978cfd75274641f6e0aa3513b2d05ed100f2d2d9a8cf9057"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "430b4f156d4130d2a689349c172c40c635ebb4e41d8dff65f7e3971b92ce7682661de763a1ccd706c9fcd11d3590d53193502c01964b703a7a304313c94e710b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "46f3fd5a750618f8bfbc8015748e12df62b1f3db470abd3e7b0edba01ffe4dae1909cdbda5dd5cdd78a0d62845eebaf8e6223cc11e4b88b3710e1ce62e3ebd39"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "d8b8eed71db048dbcd25f116e70040d5105dc3ea9ea69a77064807862f19229cc215ef1482c94609276b914ed7fe55250889b986ac1d11ed086e4de3bb15b9b3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "01e23193ad0bb1c0cd218bf22e301fa79da810ec79f4d68afdbb6d7f3da5871de3f15f38abb5cb5440fe29a3781600dce4733fef67d0410ffc6e63b0c29fb9e4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "451f4eaae757e9474e905135caa2718d75551f2893a6343256b8c8595dd312e0c5416a7d7488b6670cd361db81d44097fb3c54c3cfa27a7efe6386652addb472"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "c260f1090ffe09cc714ade4105c74bf234ab03f032cb066cecbc0308866c33169c9b3c7b37f3acd70d17794878d9e7e9f928a29c5e8aa2172d8475ca7460fb15"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "a449772de22183399c34d91b2c747253e7e32bd388e37b6f7194d68b87faf74df805886bc75230b19766ffb40e312c76d439754902b6d3c8b2057a654e656f33"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "990bf989ce48afd5261c7a6d6a4e3ada0c40acaaa5cc8c369724ff7eb73f5800009ea2c4584e8afe926f77d4b18af95510558bd99ff564754625e1c1dfe0d5ef"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "5c6cc3a65a31043ba0143d9609ad006b6cb4f9af4cbc57efb4d2012ec08438b63045dca06c93b7d9c657f7cab9e19e01ed2b5dc78b79f2d9f59ff85836a89009"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "1dcee925aa75eb0acdf3e21a0578dc7f747dbef8cecfe5024dba66461e03420ce9a9211b2c69a35861cdc75facb956f576cfe3664f91f4085aba1585d976fccd"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "c327582db0a1f78b1d4ec56115220c4bd5751eb46d16f26bd589b4b64291a66845d0277c4eb099cf197225771414ad1bd16a56d41587befd3fa1c766095c697d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "eb049a000e908e5d46726d09ad8a219e1c60ff2f29959f5cfa416a788e5c747f50ff5e6b807fe30f7e013a7f5587f607834ff0faad6e060a33db55d04dc6cfb4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "634320e4103b0ce72a6c132afc8e33ff4a234669f835a23e526c227e94f62be62075cb69d6883831d72d13d309d4e1ecf9947d850c8079efe0c880f7b7b79aed"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "85c4a47f5d3c65a6ee623f89420141f0cf7e02d8c7338d39c8c672cb0aae2364afd37c66fa740bbfb88c52aa37da6b9d106a824845c881e4de6c2d2604477d47"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "1ea0aafb65140f9c09aa4557d7460cfa9f206bd963137ec72a86d237be9cc3ca131b616c198e330d6328f48ae713cd5ac9f53159477b131e55e3ceef8e2ed7b9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "1a726088d2843ce835154675c6dca3e877af6281bac63aada1e4969782350e985428971b216e9225646c8daf523907394a21080e7f4e40225b9ff62d24df4295"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "ded034cd43b45d73539a3c3f8a196f26d5e80c3cba84e3d2ccb925815b661b4c9a3eaad1d35bc363ecee70e3ccec953bb03795c6fad33debd1a81ce8dc71669c"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "0bdb77bee7fb8720f1154ffa486a8f6564ca592c56ce07b823800bd54218bc01c57bc27cddc73524c8f8fa1944c869523880a02fc698e44c5c71f4c800dd7208"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "9557d2b57e09c390cd706673c6b2203f2a1beec8952a63e2d891d00b975c67ba3b5f0f6da622e81572d090aecee42ea8ff398df61845f7564ddfd42818bdaf4f"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "0617a7b1117fe47bec89b86f89248cef981812a2126e64779d2f7b9c81fc11b38cb3ffe8f039aec72d4904cbb95505519e7ce64c115c1613e96adf90ee72f5d3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "3e4ffa7728382e6862f224be0f576953120b563e0b68599df545ffb46483ae470d12280556a97b238aba0427651be744e9e93e7ba19be3d0764698367b4ab5ac"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "acf8527148b42e9ed50d027dd9c9a6de11975d40556b2ceb27bbb2fbe0e37a4f2839ca643972b55de52f95619eb432e16b12f0cfb501a5be3824e977315ef89d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "ed70d0cf72acbcac71e0684ef755d987702412103bab21510daa7107b369186569e848586009fb3e654f54ca657e7cb259ad5574d5ca1e16c517100946135466"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "541f5579e3889413b6cfb1be40f5630ab401b7b0b3054cef1a633d89e36b59b1d83c86e44ccbb3acc8fbb13f2851b16e0b43f9aece4f98b0713b377606e742af"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "a44839ac7686b1d252cb04fe17ef5c2790d30214e5fa34a3cbd11f12dfbd9168acf7b33ef9dc22a06edd624726511e718691a973c5b70665eff78d0a18287413"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "84b768876fcbd95dd1f9734368c73b51b82ff445df975bfe913eb74c139e35d069acb1428b9afc51357c4567dba0d03950d7199b3fb43017df4987aa69247450"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "727f670438db45203d403746b7396b3b754b888b4a1d104b2bd0599790ef12b0a16db9a32b51617ea05bdff4f2ac696566970e83029e7e3d25434ddda8c4e88f"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "638ebd73556eacf0f2b38ef2d71db5922299d10c0d5b72b6bc7e935d814e300c17dd835f94517b8d0e62ba6e54d5bf5059dcaf57eb03a03bb7068161440f7c22"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "da88b8c3d5c9aeb33cbd637b00f4790225b7b46f4b8a1edfc6c49edeb1e29929c4690bd66de0afd31492b213a67eb617355adfe5a7d7b5ded09208eb3a861e36"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "0581028fea7610b44f27a6e5b25203020768d87e83e665aca24e753bbc0f0d49e2935c8f12755e6d4911e5f79052b4362447d1dfdc37838bfe9976e0d218e49e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "6d150372dff1113d14cb32003fcbbfc11f9aff6ed8a0fc8f5f8e2d5d3119b34a8471469d69e8fe48161297e69f95185c414680b3c59bb95d7e483ab2805b5729"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "72d784c90c054d29420582a9a71d96c9a7270b1ac5592d8b920f8148542f17181d9cd71d019c0294c60112dde94191a686ad105993d7bd8340142ca849b5c150"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "0c2b1f0f886436c8d9fe6eead6718ee47e72fd988e1e4d83a70200f6d085419636058d6767a66d273842cb44573d39f58f72181ddfce01ca60f392c6c18df22c"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "7c03846d49cf1dba85202b2f7b6ed722898da5185a956ffde1c88df454560eb682ee562f782c3e21bf62b41ab156048ba1c63efacf7fd46f8fd7adf0536cff5d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "3a21d3ecb88827de7094aa4ccf29005ffbf3f88681c459aa9f159d6dd6b04affda08661b1b77986b73a19de1fd2fdba2ceb91036ecc718a69cc5cb16e8c8bbe9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "4750663d5eae7ba9fa282b0dd97e05cbcf3ace8b0715983525ae207de57d352b45495e0dcc46381979997532a8e20c85567a9de18056181f5d408d57cefddaa4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "e9f452656328e3c5a2dd7dde23b84ae535551bcba16b14cc58fbf8aa33f2eb8655cb4ff524a15b0a2db2d4af9ef5da4ca853fedb5c0d05b877fb0a8656833311"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "f43daeec8c0647a8ee984d3541172516d1d8822596ab66a1a9651cd31d447a35f078725f1eb4b30a3f01c02b8573fb0ad268ada70ce013cf1932602f22119e4e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "477e5594a9821864db879ebf04b74852c711c5f0a43e00c02bf17754817c20279c56705aa3e3b51bccd52f9380bc242b12bf58cf40a2b64d9697c8ea76270771"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "aeef4b397c9972c055392faf64947d16173a903c290e4d710067c5cbe6c422acb2172f17c8b72bd5b80ae883f4d22c905ca0581c11822975a42031f2621852b3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "363bd189e7988393a97c7fd9544537068cb541e762427115bde4a3f05297302a30604a5e6a34c97b037c8f2e9c25ddcdee0ebbd8c292ba007362b6de858643c6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "4da717be716a1c16440be76d988ed2ac2ff73bf5a8734d1025ff190cb6d3b9072bd613d973e65207102e4e54479c32e8101aef59de533487b60a1cf10e7ed9ae"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "49e343a363afb94a8b7f7d2aca557127af4743a97678d123fe2a4355d542497da1f5c43a9c83ec974586ca707c3988d416c9e55090c9bae10923bc5aae785bd9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "1c53d25d464e36d7dcdda0ba6dbe5bfc85c03309dd22edc916c97aac4ef7f4bdf6329349fe66d27e1e885b7ad76359e27c6fa885302905e6c6e785da1535b53e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "bfa9b70d5b2c891a82b92ad78e5f7b71df005ec142a1fe60e6bbc5717152f1b5325499fa5baca6a9f4e01be104b0dcddc11994a510e7cb41a5f1709dbe00c895"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "3d6bc3254bcffeda6260168bc43e58e1ea517543831579892b784cb43f51d9cf0b598f6acf1b56f51b72b7946f1904eb96168f046a80a76923ba52f265ef6d12"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "4c12d70a50e8d1b5bb2a912f3d070b30783757ea339eefa87e63c46f8e47646e69acaf975f3a565dff67bb65933bcf070bb823c195a5df9ba8968ac9a7fd82ea"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "fdb748f6914902308d074262d4a1816d8a0a26a3e7f159d013d321875297b7c46eb266473361567c92c5011234ddc66a89f0a88b7ec6435c39e7488167d0b63c"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "e450407c27de08ed93b088222fda97daea6cd69ec93a75f267ec67a510f3ea6a657eb4eed67844990f8815be28fa1af8fd722f208c3b6193fba38188eb03b134"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "be63e8e8dc2daa586fccfcf4e41979cc6746ab2797962a86b6644c9ed14d0f228a0a83aeea7ca115e4a13f33bd5048075ceff9c0ee7516ba1fc50dcece31d88d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "545a5c29789b626e47db56d0b962989f8a73244d865ef03bbff57272f463706cc5de1cc5e346b0188d4dbd7caa3fb67f6c0ea6064320d6c81a7db678b8eac86c"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "4dff9aad6938c17f3b97b1901831cdf1f993f0c8c03c3d03881680e1a5d82a10c414f85d5d6ef8791ea5c352eeede94036075b8a14046b87b19caf6cb917f950"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "a63a9c54fd2e3db1c161d33b6c725711bbe43d5e915f6bfe50ebe9f667a47299989e9096ac8b8caf80c7f69f0fb276fce33873dc77b930d0cc228d0472ae81af"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a9dd610aefc900d712bc68075d32ebe0e87a1de05af9b8592533db8cb65a1a6f56db5a566cd3c013a84d72802eac917fafd42517c0ce53b4701f58711ef0b7d8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5b0b46f00e3c61ea8c00b849b5605357979c7ec4276f9f490b6e75efee28fd4ba2aa285ebf689bacf58a40f03c2336e77a7b19c7fb518f95d900150c3c70d62e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "d67ef81f2c539718ff6916349f9ecfff42983c2e28b02b64e8ac71c54ef2dbfe5e9a4da6ec6f1b4361e458940bfde6f4da7f22bc19515cbdb98cc0166bdb1c27"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "a15ac725626fdc4f9bfe02e31da4385af32c57c407dce7dc321e259fb29d4c46a254bd484dce8ea7d3e322fcdeef07d62f64a874d45f0460bd2b17007f688b71"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "2ded18a44554ddfe73721a35af71b77c600b362dce138ee78a633fa8d4d91a5fd55921654ff9c2eae05d0ebd9ede1de8b5c9bc07f761e068339474bb8622732e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "797fa8e8ea628b9855f42bc3f77e1928743f9b96566ce886cf2897dbed920a6f83089f518bd07f5f820374e0968de848b46d8a6777d8c77ca581a1b172fd25c1"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "623eb40846a769825300177ffcde2f18721474605e6bbf7cacc0f26f2d7e3e68f0699a173fd0154bdbc6f56c13befe2bf45caa76dd3de7ba2249cb153b8624f2"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "58b1f83e123fbd32ca6d824aa87e0834d92f8c148db086fba5414519aa77a1469f5010077b119dd6758bf58165afdc1bcb0fe5b0b664a68fb73951047082ec07"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "853b6fa276e7e6c1ba0a30b95f8fde73e4bd4fb7e745c3722fed9de00bdae0d1739b78570a0108d2ff9efb73e8052e5d5192151ae789c5b336946039ece560d0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "984d3ab191091e9956bd28a2112715d0c27a24e5345b9c515e2b0521030200d2742041340db0d916915c87071c70b3d60762ca278dbffb88ab35611f30337468"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "cae180b050bd956bca474b187648dc969c2ca8ca3816ebe46d379681bbd470029d93e6518e7fe6170864c2466e6b3752aa3f372df34b672f93687704a26f0b83"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "f26993353fab3bbae965b7d7cdef57bee60839e4a726c75c966ff2e99cf6edd3e249bb3e3adc7791b1095869fe6f5b43861337f8cc6d3017600e61fe436497a8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "b7c228256d16587720f186c1a257cd157d8302e597dfa6cb72fd984c05105cfbe6e33578addce044a88ae11b11e4e6703aea432d5823526caffb08e81b1b300d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "324de4444814ec0e57c57fc4ca07dca20e10bb0a80df33ee01dcb8908caf6e5310563bfd66b62ea4eb5f595ed81edd9c504a8b6f81317bf85c4acdf9da2181af"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "8b199bf64955d23fdbf47c92c57022e7742dce10c02242cd3cecfb662303402dce4a6c784c141a63007f4ea92b78e0ea0fa74fb6bddf157a848b2e85f50acde9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "4addbf9e9626f6f81a276e506b5974232da161e108c194ea34f755efa40e5f5b4df6e4feedc90309740b4e8c04b946a8da74cebc28867f2d23ca71d9c0dc4cf0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "843bcdaf5855dba929b4e12ba88388e3dbe3372051a3d789ac5951a66ff4c044af563e2c04e005788bf087590444d390ccdc0646ed37571e95cfa5225976cd36"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "e637a52c2d365835de33b8e3f3dae7beac254169ac65671282252c3ce33816c3af3cd696c73d15a3f3a3827c72376245ead9b0f655d2bdc857156bab353ddf69"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "f62acc4a2d2e8fee43f3744e3adf6b2850de9b7ada59a9d985b5ea0051a2f00c2fb0ce14bffefe679c0359897e1920e071aacd177bc140719f47d64dccf799c6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "081aa992d79d9a07e82a3027294752fc338e715e0b26edd6dfbb80fad3fab78fc4c0ab5082cf8880912c3a3249d7d35b0ae99c2152bb87a025219e7ecf16f330"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "3ffd093818c2fadc5d6e6a3ad9891b84352d522686ff1c23a9574c981a2421974d6346284db686a382193078ef3ad4ea8eaa081d9ecf59e4d07c396e1a1b223a"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "492e2165c88e5e2a1fcce1bfc2c994f7daddc1ded69d6b486f21d0655c6ccf112b1202080cc989bed68a1c35502c078025135af13ddcb0548b17d6f830c09b66"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "f5e7a56849dd1aafc13b3b0772fdb482cf6e283ad98cbf2aa655c016d443242d9b760cf133c130813f04cc572de3f5ccf5cd4beeac98d07cdd4d9441838b1f34"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "d21d401e1505bdea1dda8fcd65622547ff919e0fe2c3ef402c1a5a67a5c61d6c082730ae21286def66699a994f0196202ba03956e9f5ba42a166d8dbff2a1aa6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "c0e08b44b09c3f8c0e17335c0d287285e3f6cd5e308688da36647ba226ecb10c98f87f92ca6b2d50e0718e39757bcace7132390ffc4d2a339db5d3cfbc37b85b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "71d3dbd2fffbf51c64fe7af008e27a2d9ff3dba3417bd9c0f1106fcfd445f88c2865ba03799b8fbbb00c13242c1cc7995b5aeed3d20c19b95448a7597378023d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "dda7d698c760ef750575f5978599bb964cc008a18ec048e744aecd17cf41d6eb2b9a69ea13efedf5a5d5a46da990c1df817027b7762cd169ca2f30a0920ebf98"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "f427847b0a4d3e8c52f59a75e4b1971ae96998d202b44ed360f5781775d3cb1c705923a4acb96a365925fa1f27af7e7292d3e4f0af6c22af9803600d7a64a9ee"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "fda5463fb43253a392616ea7f0e287464e83bc9f4c9b3a88ae40f0e2bb1b18b5873ebe7304d27b76b2016312d9a2ff416f3006f5a75f315e2be5f8ea16be82a5"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "38d539b3b0ad87b557aa9c75212c64978fe1397c797247d94ac6b2fec33723d6d05de80f1d79b84989424fe5074204eda4af3f23d163dbcfcd035e5f7f568ce8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "a03e8261420d0b336545bf140916fea9cdf6cf2ba5bb55de6f039141011bccec49e88fddf7664e7a574c6da525f2f6646793b9d505135a311710a4d4014fde5d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "ca11b61ed252863b6efcdab2438fca21bf837f29bcc7b719e5a99065aedb8f75bcae8beaec1a273624ea3c2a7a57db4386f52096777755297183691498f33c62"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "7d6af8577ce9c9e3ab13ee3313b4c35bdbeef802bb5a5a15fd991d4fcf063b49ea1292718a4d74ed57b7c6f00889c96c9261bba442476d6aa090623afccebd9b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "19024158acd59afccdbe39430e463e9b441cf1950aadc713ff8a74d9da97cc11d9437d86d0542306a8fa4a29a69547b4d59aa28be2bbec8a434425f20ca0d1dd"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "73c81902a047a13c01fddc07eeab9886c0c55e2a3ebd30fee0a036878e52580f50c47a1dd4050cf39587b63432cc9c2947c88200fb2c95b143379a21ea60c400"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "d6a2d0b8821872b4f78f2fc9ec6ab9e602673bfff2d1b6339a37532f883b61134719d0e4e9caba53d3198107b895b3ce193839de2a374391c3fd58e595be1eca"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "bdb1e2e97b736b70a7d11538e3fc16be55889b14397709094c2efea1faa3c57b0c272cacca0fb0b307a3cba656145df3f7945cba4e9f762f3f9ee4f389e3ab50"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "0c52c93a00e1b82b5569787a624806f1c3175d40813da3da0833b23006cb377dd1b693120f96c1a6c172093393ad08321efc52262c5260e80fe037e709c94ae4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "bc2c513eb37a667195180ba3933407c7f90cb1e815f2c646a5410fb942e562c3659eaf3200ec6397a12987267ea26be1c71dd4467f80045c79bb793f2144cd89"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "7336e98002f71f6ff9b51d94b5c2ca2b5ff412d9069837053a63e3819013b36ad6587b9675089243f19474eda2906767e98b2cb3e96ace266ea29f5142c2533d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "fe70de56fa9d3bf56d355058c4412427f967f69467dd7b49cd1fa26c6abc898ae061b49bf259eaba7073fd926c1e8e5901a0979a88007ef3ba3d5caf07329203"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "180072a70d38d4607b8c2105dbfae2647900796208f6f5a6111419c4712e6ea959a6f5ca5068f1f7653ece073087e2f3c5dff177d92da4d92aba4ac1b4b7971e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "08bd093d657ae4e6b6136d1627ebd355ea2794c2e2824ca4d4121a5a506b0682a65e1416aa2cab49fd00db4c3736ce09101225b0333385032a958309cd7e4edb"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "a3bdac7effbb5a29f2ff1385da3de4a2c16a914d1d3306cee22b379779b1eb9d45f6a6c6bf10ef1e1a11ab52834a08c5510a38303c10cc6e4cfb96b32ce2769a"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "08f2fe47c14ff5432f8944312e3d45d26dd3fa56bf4b0d350b4504cdc639eab147e3da9edc25b8551ab5156dc214101831c2c1c0f1b159201e5a061461e51285"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "cfbb14897df334df5f11305ec44f8e4b736a8320b6ed39e5581be413cc4daf92908ed54215e24e35e34e0904a1a500f295ebe64871e53438658d0340f7e708ad"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "19403a121e9e86447f3265ef72bda4e3a7fca55dfa76e8a25381ff97412329705f8b8a79031fd0116ac7e0fdc29fb9afa0c1de14287399f28e95d181fc933470"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "73789e769bcf2bd710f5234cc9c0f046abd5aed5d66b4e900b19f87a3c23a7daccfd086d9fb80fc6ced3742ccec90e96aba785330a2dc9cc79d76780fdf56cf3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "07a842dbcde5fa7c5623fe5e8bd8dec04b33b300f52a1ffa8fe604ddf93df9879b9179bf8363cca4aa62a1c878ed77fb5e0b5db85355b4a2d1405888a9a6268d"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "b82f14f66dee3036dd62d0af2889137d51521ff51494584fd8f50f380e8ead3d8290a73843a0aaa7dfc7e38c3f69c28b661185841c3f71f11eec686336c7f36b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "9b627e063644d138c5b9b5bfce48431f8926fb3b13caa01547aebf007a002c75f8ae3818d5643f212c2e6d1e6203c49a24412aaadcc2dc5539824c168ecea52e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "7e36e94c90cd2ce6116a56a5f1ae2772eabfb19bfbe0a5bb616173f0e3cfc6d9f3cf77db07c767fe2673b29437ea8cdd70584e2b65752660d6c4878d598e0998"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "cfb9989b2ff2e2a81c3453dc7b03113e251d57b1925ba1fe60bcff4bca9fa16fe8ce6409cda6f90d7afde832b370a731d86c999df08e77a7c69ad6e72181f6e8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "63e4f8e6e5d6360914073a1a8b9dfd9d1936ad3efef6994a880bde075468cd37809294d3cd80dbb693b429dd82426e06632b6ea87f776da509bfb1ed1cdc1848"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "49a065634297b37532882cad5b13687fb6abfe0fdb577a4ea1bf86568abe2ef5b29bec7d786a47b8a12ad06d4fa78faffdea1f531245488efc42b14da24d2f52"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "06ff4df2f58d8c39ded84915d5f4ea2137f1692b7955c205a738fe65adc8c324c9e4e1f46963e40dfb74c483a33028d6157609e9f99819683008e0e5f992e52e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "b07fc75e55b860ac8ce03262dfbe77ec558842baef037f0e390245f3bffab03df31f6488811b630ed5355878dc01e4930b839251fa726a121fcbfac2eddae9d8"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "56a5f63dda3c359203a1ada88dda971aefd4219e0d76a8123792131cc5abaf23a1bda2498c1f93725b853576f572205905f3b7d16569611adcf87b7bc96528b2"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "5f7af50fa1620c17e4473c869fa0a4384518b79514108317c1aa8c5f32fe6635bf88eb53d589f4714fcae740988d56163e293960b40b2165eeb6fdc7146586c5"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "b3f4913abae949f1783cb6cfe934b97f3a93a579c8f57d3e29d87e15169234b58c5a243395ddd0944edf4519a9d3d735424bf14ff7280d7a54494989cbe7aed9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71853f84f9f1545a099bee0994bc598845aceabf562730c1fbb7b0f9c3ea8113e6ba473840feadf76aa0d35ac0ae5a038188ef6078fdb192de99396973cfebce"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "d1aef184253166dcab16b1cf25bf58131ec76e30af84ea0a75d89106e253ae4b5ec17d55039b1d1584f39c4ee1ef7eb28b73144cb8312fe15aba74e43cea0ae4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "1ebe23f6c352e088180ebc9f03c4e35b1c08a2c8b9efc64ef710c8bb0c70c082bcdc3f23c436a427a95bccc219a5be8011b46d49047483fb57a2be2ea61577a1"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "6ae17fafcc61dcf5ea548e55c7535ac196402c20468ed53eb32a529eb756a88264660dc4acaf1f27dfeb9bf4e5515c75287b4cc8ac42c765358908659ee12d03"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "9635df3cf66825a4ec30ca03f944929977bd526146d5991b03a2539e59a6d5a979f8d25697e9aa6e051ebd6f05bbfeb993e11e547491a272e77c36b695402d93"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "ca1f6e5e32da878f50b2cfa5f42d78ed93423e0f4f308e914a184747c59a82f0d2db5c768fb65a16bb0409070614be44ea14351c21904e32baf5470b81fd4925"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "14f66c3db5d3f17e064eeb80eec31ea4d531b827248eaa5d6d1c936962b77503f7b9adb16daf754909e4749f8548f4be8f86f3d01345bf9999e70d8e7c52f6d6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "cd45ccd8f3e41ae3f4833f6f5a821dee061898fba61c974099361eb84272676b146896727889f8adecdd563db9c4ce0de666221eacc7f0ef841ce4a5155961d9"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "234fe0d5677b67bf5458df4290b055159860f43a3afa66982b9ed9279a5e74ba90ef6cde23fdbd9fb7134ef0ba47b270880b3561f35fdf2286b23e128f9d0da0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "0cdc7209cbb2d537ba19ba206b53534f18ec0cfba1ad67a435f7134b1161f13236db2bce707cad50687790861e09ddd31a35eec8fd4965d4b1c697a84b4e00f4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "8db988c2fe8624d9b7154a39df173f2bec70369edebcb02363f5a1ff50e299590722961d58c96bc7cd003e14b7db8e6c1c78a488bd1bf3721e880df1e14fed08"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "a67d0bb63da12db2a1d936b40dfbda4f4473a67c8937c771b8b07c651eb9302128cdce01c02f1bf52ea641dcd9520b5d79561c07a88004ab39ae4ddf28a6cfc0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "d0f179237a4dfc59d8e847f5393ce7d59c6f399bc9bf5113f70f3850e3452d14542f08ac1b2faf0ec291b0f80183553d4b44c64866902db4ee891f00703bfe4b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "f66d6383be284933b2b62432b86e6ffa636c737ff5ad2d8159dab527cd951501eedcbe9a41d197fc1a7f14404ead4b2f25b7c1bd1725bef80a5dcba6a793ea42"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "bf461c7cf0f24cc091af8806097b759a5ceb5934fd96011e003a438ea5de0dd9221241665c3b713dbb3485f13070cd7aecc23902a28b2f84bb6bcd69d96b95d6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "cac1528dbddbf0163391cbc7860cd048376de7012950fdb74beb8f0dbecdbfda5b41dc347d100b0a83b31d3b324211e7a253dfbfafbc72f083013250660139c0"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "bc96183968912b8ccd6e46adf82c49777f19b1692a5a06ccc9e24d4cba31fbddca79993f6e33a1693da0a794c081d8696d96dfe84de32003f190c2cceb484e9e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "4f5ae88197d4841cb38da7b0b8c5cc0ac8a228f6d1f6851bfa8782dc4ae91124da25a2235a13f9074d29498ff227602bafeb2a475e1f83f116ae6df26a575f66"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "334695dbd86e2fe674897b23c9144444e984e16c5cb813a980fbc6b025b214aaf344019dddb8612125c26ab1b6da4b9007dcffc1ddf205cbf226d43f536728ce"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "9bb2a9d07db3f7840e56368edbdaa3760abb2a5e9a266f75ac84ddafe0ab42b582613cce581dd898761ecb869b85ec515a113a79ee1c3470ae48ba261f559c8b"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "3a7dbf64988527a3d1f88fa1840bdf8292cf90ce21b5823aedeb2fb9263a2b7ffd9f89d2709e2a2d208f0c7e70d3819a92c7859cc2c2510a4f0fe8160599d3b4"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "4d6df0bc1dfbb8a0761250fa7bcc3575af66ea0e91e6ed18d340eac96e4ae2c50e1f873c54f10eecc08a0902f3dcb9a9df753d6d9f6a640e7421fa9bf38f884e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "b13dc2570f7c2f5d4a323aabf1448d04550d6356bd43b143c10fdc7e88a97d79d93b8145c3d7230e9f417a147f5884af3217738e5190955ab61459703bfe5954"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "b3540cdfe33168c6b77386d3d32dd3a44c3198e9669fac89129549f6240475e657c2e790a38f985e85e20315df0769fdee57c65513c914ebee239f51e7932043"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "3aa1ea89e62fa74208c5336c99aa6bdd98358852a032e1c90a70a48b6903523d08cc03e62976e10bfae86cfe0b431befd9a33bd62ef1f262d58bd9d5940255fa"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "8e2e979f54bef8979367b7bc5b54eafbcf774dd4ec47a65352e8529d76edb6a4ea331fa8dafe82894868f4cd6b269424f06668a46596d099400a980694b03db3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "708841b24ad871cef003040a59379dac33b2131bb699ede2146d02b6be7f562057c6713d050e201075341dbbb8a7fb400c6852cb4d1de2064fcd03ecdda6450f"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "788e91d5af695acfdca1b02eb422efc8ea35652dadffd3b03babe5622c6e8d0ad1dd200a63589329a28eed3e0ca723e838ceafa721c45a86ffcc34aabc462671"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "370fc35b68ec734e9f5544f7cb74cb07d706f3e1c181f25c7e1b6e5fe1f9ee1bd9b289e164792e4a31c9fe7fb098c5114919234cda0583794f8964f14d60c4f3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "463da060477f0b9831fce5e00248d841fa7b9ccae1e70fd707966aa09f55b7bd4eb89ee04b41ed6619ce465c86ce84236fafe14268a2b97c482830a2c6f8f77e"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "7a085f96ad6f67092f11ac1605541f1dd39a5ded50a3375e50596e18c76e992a1ec9a648a2ffcf4fefee09a3644d6d5d0abcbb43f5173a1d086f3c38b4ed7ed3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "e3458b936fa06aab7ad5fb37c8bb0e3d1391e764382643b9978ded9e175dbe14fd3658f9b0903a0a5a74bb1aa1d56340fef37f19ca9ed92d3ba3ed28174c2cd2"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "2899fc4bd5b40996aebd0c67627ddd40bd9c3778001afc23a7d4a232a12ababf4504568594aab045eddf2a1ad71e026bbc832b5ddd265132c74325eb84523a82"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "c8cbd21b1ec2962e30a525bf7d1f45f449aa80448f3c8cedf2ffd54b2f7e1e07d8f0ceb2c5fdb3a9bd7e2df8fae0b14c65d0d84fd60f6cece8ececec7df468a1"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "86fd5cf184aa8b897b37dc0f05bdce5dba64e7b8d7d6fea79d42e7a591a141af7b28e87e15a1a98d828ed259c097005b8ff8f52fa5c33873eed199d5f2a391b3"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "703a39b4d0fbb522c9b7a2c24780776d804025b659a6bfc1b875924429f05d55f2eb57bc333dfc6b0b0b18bf8b18dabdb7a91ec7696cdefb404cbf0b2afd89b7"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "0551330c8203a93db60f5c4570a03fbd7b63f243eabe2eb0465bb8e3fa6c2389e402b29237fd91f98455f74360c6056d31fc1c1f66c5035c57ff4c8b2500070f"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "8b9293827007bd0d510ab84e15553f4f396dc058a9871651d63638936fa03cb628ffd31bc2d01dfeee9935ad18976e0941345217e1e161df0ddc7a0e4b527ae6"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "ecdb91365c00090388b0d0e0b9bf7fc327b6d142c3671fa96e626a744852ee838220efcbcdc57a6fe2f17d8b3a3b57fc3644b30d965a0a5c118cab421755dd05"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "9f65780b2952210ba613767fb885dd77af3e96596e2d7833902318ac7508c98172abb2a42d3c33c7bdb63826379f039ee50f0df3436c122a4bc794d4e9fd3a20"; }
{ url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "a915d396e093f2d87f2ee6cfe20f3c26fb6c524968fee0c8d1cbbf1e53a6cdec86921b6e2f252ca3a8dc13bbc8617e97d8d6e883973364e68be70c409bf1b8ad"; }
];
}

Some files were not shown because too many files have changed in this diff Show More