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: matrix:
allow_failures:
- os: osx
include: include:
- os: linux - 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 sudo: required
dist: trusty 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 - os: osx
language: generic
osx_image: xcode7.3 osx_image: xcode7.3
before_install: ./maintainers/scripts/travis-nox-review-pr.sh nix script: ./maintainers/scripts/travis-nox-review-pr.sh pr
install: ./maintainers/scripts/travis-nox-review-pr.sh nox git:
script: ./maintainers/scripts/travis-nox-review-pr.sh build 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) * [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 (How to write packages for Nix)](https://nixos.org/nixpkgs/manual/)
* [Manual (NixOS)](https://nixos.org/nixos/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 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) * [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) * [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 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> <title>&lt;pkg&gt;.overrideDerivation</title>
<warning> <warning>
<para>Do not use this function in Nixpkgs. Because it breaks <para>Do not use this function in Nixpkgs as it evaluates a Derivation
package abstraction and doesnt provide error checking for before modifying it, which breaks package abstraction and removes
function arguments, it is only intended for ad-hoc customisation error-checking of function arguments. In addition, this
(such as in <filename>~/.nixpkgs/config.nix</filename>). evaluation-per-function application incurs a performance penalty,
</para> which can become a problem if many overrides are used.
It is only intended for ad-hoc customisation, such as in
<para> <filename>~/.nixpkgs/config.nix</filename>.
Additionally, <varname>overrideDerivation</varname> forces an evaluation
of the Derivation which can be quite a performance penalty if there are many
overrides used.
</para> </para>
</warning> </warning>
<para> <para>
The function <varname>overrideDerivation</varname> is usually available for all the The function <varname>overrideDerivation</varname> creates a new derivation
derivations in the nixpkgs expression (<varname>pkgs</varname>). 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>
<para>
It is used to create a new derivation by overriding the attributes of
the original derivation according to the given function.
</para>
<para> <para>
Example usage: Example usage:
@ -125,9 +125,9 @@ in ...</programlisting>
</para> </para>
<para> <para>
In the above example, the name, src and patches of the derivation In the above example, the <varname>name</varname>, <varname>src</varname>,
will be overridden, while all other attributes will be retained from the and <varname>patches</varname> of the derivation will be overridden, while
original derivation. all other attributes will be retained from the original derivation.
</para> </para>
<para> <para>
@ -135,6 +135,20 @@ in ...</programlisting>
the original derivation. the original derivation.
</para> </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>
<section xml:id="sec-lib-makeOverridable"> <section xml:id="sec-lib-makeOverridable">

View File

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

View File

@ -374,8 +374,4 @@ rec {
*/ */
subtractLists = e: filter (x: !(elem x e)); 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>"; adev = "Adrien Devresse <adev@adev.name>";
Adjective-Object = "Maxwell Huang-Hobbs <mhuan13@gmail.com>"; Adjective-Object = "Maxwell Huang-Hobbs <mhuan13@gmail.com>";
adnelson = "Allen Nelson <ithinkican@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>"; aespinosa = "Allan Espinosa <allan.espinosa@outlook.com>";
aflatter = "Alexander Flatter <flatter@fastmail.fm>"; aflatter = "Alexander Flatter <flatter@fastmail.fm>";
aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>"; aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
@ -162,6 +163,7 @@
guibert = "David Guibert <david.guibert@gmail.com>"; guibert = "David Guibert <david.guibert@gmail.com>";
havvy = "Ryan Scheel <ryan.havvy@gmail.com>"; havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>"; hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
hce = "Hans-Christian Esperer <hc@hcesperer.org>";
henrytill = "Henry Till <henrytill@gmail.com>"; henrytill = "Henry Till <henrytill@gmail.com>";
hiberno = "Christian Lask <hiberno@hiberno.net>"; hiberno = "Christian Lask <hiberno@hiberno.net>";
hinton = "Tom Hinton <t@larkery.com>"; hinton = "Tom Hinton <t@larkery.com>";
@ -185,6 +187,7 @@
joamaki = "Jussi Maki <joamaki@gmail.com>"; joamaki = "Jussi Maki <joamaki@gmail.com>";
joelmo = "Joel Moberg <joel.moberg@gmail.com>"; joelmo = "Joel Moberg <joel.moberg@gmail.com>";
joelteon = "Joel Taylor <me@joelt.io>"; joelteon = "Joel Taylor <me@joelt.io>";
joko = "Ioannis Koutras <ioannis.koutras@gmail.com>";
jpbernardy = "Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>"; jpbernardy = "Jean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>";
jraygauthier = "Raymond Gauthier <jraygauthier@gmail.com>"; jraygauthier = "Raymond Gauthier <jraygauthier@gmail.com>";
juliendehos = "Julien Dehos <dehos@lisic.univ-littoral.fr>"; juliendehos = "Julien Dehos <dehos@lisic.univ-littoral.fr>";
@ -231,6 +234,7 @@
markus1189 = "Markus Hauck <markus1189@gmail.com>"; markus1189 = "Markus Hauck <markus1189@gmail.com>";
markWot = "Markus Wotringer <markus@wotringer.de>"; markWot = "Markus Wotringer <markus@wotringer.de>";
martijnvermaat = "Martijn Vermaat <martijn@vermaat.name>"; martijnvermaat = "Martijn Vermaat <martijn@vermaat.name>";
martingms = "Martin Gammelsæter <martin@mg.am>";
matejc = "Matej Cotman <cotman.matej@gmail.com>"; matejc = "Matej Cotman <cotman.matej@gmail.com>";
mathnerd314 = "Mathnerd314 <mathnerd314.gph+hs@gmail.com>"; mathnerd314 = "Mathnerd314 <mathnerd314.gph+hs@gmail.com>";
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>"; matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
@ -353,6 +357,7 @@
sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>"; sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>";
shell = "Shell Turner <cam.turn@gmail.com>"; shell = "Shell Turner <cam.turn@gmail.com>";
shlevy = "Shea Levy <shea@shealevy.com>"; shlevy = "Shea Levy <shea@shealevy.com>";
siddharthist = "Langston Barrett <langston.barrett@gmail.com>";
simonvandel = "Simon Vandel Sillesen <simon.vandel@gmail.com>"; simonvandel = "Simon Vandel Sillesen <simon.vandel@gmail.com>";
sjagoe = "Simon Jagoe <simon@simonjagoe.com>"; sjagoe = "Simon Jagoe <simon@simonjagoe.com>";
sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>"; sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>";
@ -420,6 +425,7 @@
wscott = "Wayne Scott <wsc9tt@gmail.com>"; wscott = "Wayne Scott <wsc9tt@gmail.com>";
wyvie = "Elijah Rum <elijahrum@gmail.com>"; wyvie = "Elijah Rum <elijahrum@gmail.com>";
yarr = "Dmitry V. <savraz@gmail.com>"; yarr = "Dmitry V. <savraz@gmail.com>";
yurrriq = "Eric Bailey <eric@ericb.me>";
z77z = "Marco Maggesi <maggesi@math.unifi.it>"; z77z = "Marco Maggesi <maggesi@math.unifi.it>";
zagy = "Christian Zagrodnick <cz@flyingcircus.io>"; zagy = "Christian Zagrodnick <cz@flyingcircus.io>";
zef = "Zef Hemel <zef@zef.me>"; zef = "Zef Hemel <zef@zef.me>";

View File

@ -1,3 +1,5 @@
#!/bin/sh #!/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 #!/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 #!/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 #! /usr/bin/env bash
set -e set -e
export NIX_CURL_FLAGS=-sS while test -n "$1"; do
if [[ $1 == nix ]]; then # tell Travis to use folding
echo "=== Installing Nix..." echo -en "travis_fold:start:$1\r"
# Install Nix
bash <(curl -sS https://nixos.org/nix/install)
source $HOME/.nix-profile/etc/profile.d/nix.sh
# Make sure we can use hydra's binary cache case $1 in
sudo mkdir /etc/nix
sudo sh -c 'echo "build-max-jobs = 4" > /etc/nix/nix.conf'
# Verify evaluation nixpkgs-verify)
echo "=== Verifying that nixpkgs evaluates..." 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
if [[ $TRAVIS_OS_NAME == "osx" ]]; then nix-env --file $TRAVIS_BUILD_DIR --query --available --json > /dev/null
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
echo "=== Checking NixOS options" nixos-options)
nix-build nixos/release.nix -A options --show-trace echo "=== Checking NixOS options"
echo "=== Checking tarball creation" nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr options --show-trace
nix-build pkgs/top-level/release.nix -A tarball --show-trace ;;
fi
if [[ $TRAVIS_PULL_REQUEST == false ]]; then nixos-manual)
echo "=== Not a pull request" echo "=== Checking NixOS manuals"
else
echo "=== Checking PR"
if ! nix-shell -p nox --run "nox-review pr ${TRAVIS_PULL_REQUEST}"; then nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr manual --show-trace
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 nixpkgs-manual)
echo "=== Please disregard the result of this Travis build." 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 fi
exit 1 ;;
fi
fi *)
else echo "Skipping unknown option $1"
echo "$0: Unknown option $1" >&2 ;;
false esac
fi
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-install.xml" />
<xi:include href="man-nixos-option.xml" /> <xi:include href="man-nixos-option.xml" />
<xi:include href="man-nixos-rebuild.xml" /> <xi:include href="man-nixos-rebuild.xml" />
<xi:include href="man-nixos-version.xml" />
</reference> </reference>

View File

@ -13,8 +13,11 @@ echo "NixOS version is $version ($major)"
rm -f ec2-amis.nix 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 link=$stateDir/$type
imageFile=$link/nixos.qcow2 imageFile=$link/nixos.qcow2
system=x86_64-linux 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; }" --arg configuration "{ imports = [ <nixpkgs/nixos/maintainers/scripts/ec2/amazon-image.nix> ]; ec2.hvm = $hvmFlag; }"
fi fi
for store in ebs s3; do for store in $stores; do
bucket=nixos-amis bucket=nixos-amis
bucketDir="$version-$type-$store" bucketDir="$version-$type-$store"
@ -39,7 +42,7 @@ for type in hvm pv; do
prevAmi= prevAmi=
prevRegion= 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 name=nixos-$version-$arch-$type-$store
description="NixOS $system $version ($type-$store)" description="NixOS $system $version ($type-$store)"
@ -51,10 +54,11 @@ for type in hvm pv; do
echo "doing $name in $region..." echo "doing $name in $region..."
if [ -n "$prevAmi" ]; then if [ -n "$prevAmi" ]; then
ami=$(ec2-copy-image \ ami=$(aws ec2 copy-image \
--region "$region" \ --region "$region" \
--source-region "$prevRegion" --source-ami-id "$prevAmi" \ --source-region "$prevRegion" --source-image-id "$prevAmi" \
--name "$name" --description "$description" | cut -f 2) --name "$name" --description "$description" | json -q .ImageId)
if [ "$ami" = null ]; then break; fi
else else
if [ $store = s3 ]; then if [ $store = s3 ]; then
@ -85,12 +89,12 @@ for type in hvm pv; do
ec2-upload-bundle \ ec2-upload-bundle \
-m $imageDir/$type.raw.manifest.xml \ -m $imageDir/$type.raw.manifest.xml \
-b "$bucket/$bucketDir" \ -b "$bucket/$bucketDir" \
-a "$EC2_ACCESS_KEY" -s "$EC2_SECRET_KEY" \ -a "$AWS_ACCESS_KEY_ID" -s "$AWS_SECRET_ACCESS_KEY" \
--location EU --location EU
touch $imageDir/uploaded touch $imageDir/uploaded
fi fi
extraFlags="$bucket/$bucketDir/$type.raw.manifest.xml" extraFlags="--image-location $bucket/$bucketDir/$type.raw.manifest.xml"
else else
@ -115,7 +119,8 @@ for type in hvm pv; do
if [ -z "$snapId" -a -z "$volId" -a -z "$taskId" ]; then if [ -z "$snapId" -a -z "$volId" -a -z "$taskId" ]; then
echo "importing $vhdFile..." echo "importing $vhdFile..."
taskId=$(ec2-import-volume $vhdFile --no-upload -f vhd \ 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" \ --region "$region" -z "${region}a" \
--bucket "$bucket" --prefix "$bucketDir/" \ --bucket "$bucket" --prefix "$bucketDir/" \
| tee /dev/stderr \ | tee /dev/stderr \
@ -125,15 +130,16 @@ for type in hvm pv; do
if [ -z "$snapId" -a -z "$volId" ]; then if [ -z "$snapId" -a -z "$volId" ]; then
ec2-resume-import $vhdFile -t "$taskId" --region "$region" \ 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 fi
# Wait for the volume creation to finish. # Wait for the volume creation to finish.
if [ -z "$snapId" -a -z "$volId" ]; then if [ -z "$snapId" -a -z "$volId" ]; then
echo "waiting for import to finish..." echo "waiting for import to finish..."
while true; do while true; do
volId=$(ec2-describe-conversion-tasks "$taskId" --region "$region" | sed 's/.*VolumeId.*\(vol-[0-9a-f]\+\).*/\1/ ; t ; d') volId=$(aws ec2 describe-conversion-tasks --conversion-task-ids "$taskId" --region "$region" | jq -r .ConversionTasks[0].ImportVolume.Volume.Id)
if [ -n "$volId" ]; then break; fi if [ "$volId" != null ]; then break; fi
sleep 10 sleep 10
done done
@ -143,22 +149,24 @@ for type in hvm pv; do
# Delete the import task. # Delete the import task.
if [ -n "$volId" -a -n "$taskId" ]; then if [ -n "$volId" -a -n "$taskId" ]; then
echo "removing import task..." 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 rm -f $stateDir/$region.$type.task-id
fi fi
# Create a snapshot. # Create a snapshot.
if [ -z "$snapId" ]; then if [ -z "$snapId" ]; then
echo "creating snapshot..." 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 echo -n "$snapId" > $stateDir/$region.$type.snap-id
ec2-create-tags "$snapId" -t "Name=$description" --region "$region"
fi fi
# Wait for the snapshot to finish. # Wait for the snapshot to finish.
echo "waiting for snapshot to finish..." echo "waiting for snapshot to finish..."
while true; do 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 if [ "$status" = completed ]; then break; fi
sleep 10 sleep 10
done done
@ -166,35 +174,50 @@ for type in hvm pv; do
# Delete the volume. # Delete the volume.
if [ -n "$volId" ]; then if [ -n "$volId" ]; then
echo "deleting volume..." 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 rm -f $stateDir/$region.$type.vol-id
fi 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 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 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 fi
# Register the AMI. # Register the AMI.
if [ $type = pv ]; then if [ $type = pv ]; then
kernel=$(ec2-describe-images -o amazon --filter "manifest-location=*pv-grub-hd0_1.04-$arch*" --region "$region" | cut -f 2) kernel=$(aws ec2 describe-images --owner amazon --filters "Name=name,Values=pv-grub-hd0_1.04-$arch.gz" | jq -r .Images[0].ImageId)
[ -n "$kernel" ] if [ "$kernel" = null ]; then break; fi
echo "using PV-GRUB kernel $kernel" echo "using PV-GRUB kernel $kernel"
extraFlags+=" --virtualization-type paravirtual --kernel $kernel" extraFlags+=" --virtualization-type paravirtual --kernel $kernel"
else else
extraFlags+=" --virtualization-type hvm" extraFlags+=" --virtualization-type hvm"
fi fi
ami=$(ec2-register \ ami=$(aws ec2 register-image \
-n "$name" \ --name "$name" \
-d "$description" \ --description "$description" \
--region "$region" \ --region "$region" \
--architecture "$arch" \ --architecture "$arch" \
$extraFlags | cut -f 2) --block-device-mappings $blockDeviceMappings \
$extraFlags | jq -r .ImageId)
if [ "$ami" = null ]; then break; fi
fi fi
echo -n "$ami" > $amiFile echo -n "$ami" > $amiFile
@ -204,23 +227,45 @@ for type in hvm pv; do
ami=$(cat $amiFile) ami=$(cat $amiFile)
fi 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" echo "region = $region, type = $type, store = $store, ami = $ami"
if [ -z "$prevAmi" ]; then if [ -z "$prevAmi" ]; then
prevAmi="$ami" prevAmi="$ami"
prevRegion="$region" prevRegion="$region"
fi 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 echo " \"$major\".$region.$type-$store = \"$ami\";" >> ec2-amis.nix
done 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 { consoleFont = mkOption {
type = types.str; type = types.str;
default = "Lat2-Terminus16"; default = "Lat2-Terminus16";

View File

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

View File

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

View File

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

View File

@ -249,6 +249,7 @@
./services/misc/nix-ssh-serve.nix ./services/misc/nix-ssh-serve.nix
./services/misc/nzbget.nix ./services/misc/nzbget.nix
./services/misc/octoprint.nix ./services/misc/octoprint.nix
./services/misc/packagekit.nix
./services/misc/parsoid.nix ./services/misc/parsoid.nix
./services/misc/phd.nix ./services/misc/phd.nix
./services/misc/plex.nix ./services/misc/plex.nix
@ -258,6 +259,7 @@
./services/misc/ripple-data-api.nix ./services/misc/ripple-data-api.nix
./services/misc/rogue.nix ./services/misc/rogue.nix
./services/misc/siproxd.nix ./services/misc/siproxd.nix
./services/misc/sonarr.nix
./services/misc/spice-vdagentd.nix ./services/misc/spice-vdagentd.nix
./services/misc/subsonic.nix ./services/misc/subsonic.nix
./services/misc/sundtek.nix ./services/misc/sundtek.nix
@ -368,6 +370,7 @@
./services/networking/ntopng.nix ./services/networking/ntopng.nix
./services/networking/ntpd.nix ./services/networking/ntpd.nix
./services/networking/nylon.nix ./services/networking/nylon.nix
./services/networking/offlineimap.nix
./services/networking/oidentd.nix ./services/networking/oidentd.nix
./services/networking/openfire.nix ./services/networking/openfire.nix
./services/networking/openntpd.nix ./services/networking/openntpd.nix
@ -474,6 +477,7 @@
./services/web-servers/winstone.nix ./services/web-servers/winstone.nix
./services/web-servers/zope2.nix ./services/web-servers/zope2.nix
./services/x11/colord.nix ./services/x11/colord.nix
./services/x11/compton.nix
./services/x11/unclutter.nix ./services/x11/unclutter.nix
./services/x11/desktop-managers/default.nix ./services/x11/desktop-managers/default.nix
./services/x11/display-managers/auto.nix ./services/x11/display-managers/auto.nix
@ -524,6 +528,7 @@
./system/boot/luksroot.nix ./system/boot/luksroot.nix
./system/boot/modprobe.nix ./system/boot/modprobe.nix
./system/boot/networkd.nix ./system/boot/networkd.nix
./system/boot/plymouth.nix
./system/boot/resolved.nix ./system/boot/resolved.nix
./system/boot/shutdown.nix ./system/boot/shutdown.nix
./system/boot/stage-1.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" ]) || elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ])
&& fs.fsType == "zfs") && fs.fsType == "zfs")
(attrValues config.fileSystems) != []; (attrValues config.fileSystems) != [];
# Ascertain whether NixOS container support is required
containerSupportRequired =
config.boot.enableContainers && config.containers != {};
in in
{ {
options.security.grsecurity = { options.security.grsecurity = {
enable = mkEnableOption "Grsecurity/PaX"; enable = mkEnableOption "grsecurity/PaX";
lockTunables = mkOption { lockTunables = mkOption {
type = types.bool; type = types.bool;
@ -27,9 +31,9 @@ in
description = '' description = ''
Whether to automatically lock grsecurity tunables Whether to automatically lock grsecurity tunables
(<option>boot.kernel.sysctl."kernel.grsecurity.*"</option>). Disable (<option>boot.kernel.sysctl."kernel.grsecurity.*"</option>). Disable
this to allow configuration of grsecurity features while the system is this to allow runtime configuration of grsecurity features. Activate
running. The lock can be manually engaged by activating the the <literal>grsec-lock</literal> service unit to prevent further
<literal>grsec-lock</literal> service unit. configuration until the next reboot.
''; '';
}; };
@ -48,10 +52,6 @@ in
(isYES "GRKERNSEC_SYSCTL_DISTRO") (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 # Install PaX related utillities into the system profile. Eventually, we
# also want to include gradm here. # also want to include gradm here.
environment.systemPackages = with pkgs; [ paxctl pax-utils ]; environment.systemPackages = with pkgs; [ paxctl pax-utils ];
@ -59,7 +59,7 @@ in
# Install rules for the grsec device node # Install rules for the grsec device node
services.udev.packages = [ pkgs.gradm ]; 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 # unit is always defined, but only activated on bootup if lockTunables is
# toggled. When lockTunables is toggled, failure to activate the unit will # toggled. When lockTunables is toggled, failure to activate the unit will
# enter emergency mode. The intent is to make it difficult to silently # 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_chroot" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0; "kernel.grsecurity.chroot_deny_mount" = mkForce 0;
"kernel.grsecurity.chroot_deny_pivot" = mkForce 0; "kernel.grsecurity.chroot_deny_pivot" = mkForce 0;
} // optionalAttrs config.boot.enableContainers { } // optionalAttrs containerSupportRequired {
# chroot(2) restrictions that conflict with NixOS lightweight containers # chroot(2) restrictions that conflict with NixOS lightweight containers
"kernel.grsecurity.chroot_deny_chmod" = mkForce 0; "kernel.grsecurity.chroot_deny_chmod" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0; "kernel.grsecurity.chroot_deny_mount" = mkForce 0;

View File

@ -154,7 +154,7 @@ in {
''; '';
script = '' 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} \ --httpPort=${toString cfg.port} \
--prefix=${cfg.prefix} \ --prefix=${cfg.prefix} \
${concatStringsSep " " cfg.extraOptions} ${concatStringsSep " " cfg.extraOptions}

View File

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

View File

@ -126,7 +126,7 @@ in
environment = { environment = {
LD_LIBRARY_PATH = ''/run/opengl-driver/lib:/run/opengl-driver-32/lib''; 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_MAX_ALLOC_PERCENT = "100";
GPU_USE_SYNC_OBJECTS = "1"; 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 = { envOptions = {
PATHS_DATA = cfg.dataDir; PATHS_DATA = cfg.dataDir;
PATHS_PLUGINS = "${cfg.dataDir}/plugins";
PATHS_LOGS = "${cfg.dataDir}/log"; PATHS_LOGS = "${cfg.dataDir}/log";
SERVER_PROTOCOL = cfg.protocol; SERVER_PROTOCOL = cfg.protocol;
@ -37,6 +38,8 @@ let
USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole; USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole;
AUTH_ANONYMOUS_ENABLED = b2s cfg.auth.anonymous.enable; 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; ANALYTICS_REPORTING_ENABLED = b2s cfg.analytics.reporting.enable;
} // cfg.extraOptions; } // cfg.extraOptions;
@ -196,6 +199,17 @@ in {
default = false; default = false;
type = types.bool; 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 = { analytics.reporting = {
@ -222,6 +236,8 @@ in {
"Grafana passwords will be stored as plaintext in the Nix store!" "Grafana passwords will be stored as plaintext in the Nix store!"
]; ];
environment.systemPackages = [ cfg.package ];
systemd.services.grafana = { systemd.services.grafana = {
description = "Grafana Service Daemon"; description = "Grafana Service Daemon";
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
@ -234,6 +250,7 @@ in {
}; };
preStart = '' preStart = ''
ln -fs ${cfg.package}/share/grafana/conf ${cfg.dataDir} 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 = ""; default = "";
type = str; type = str;
description = '' 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" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.caddy}/bin/caddy -conf=${configFile} -email=${cfg.email}"; ExecStart = "${pkgs.caddy.bin}/bin/caddy -conf=${configFile} -email=${cfg.email}";
Type = "simple"; Type = "simple";
User = "caddy"; User = "caddy";
Group = "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.upower.enable = config.powerManagement.enable;
services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ]; services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ];
services.colord.enable = mkDefault true; services.colord.enable = mkDefault true;
services.packagekit.enable = mkDefault true;
hardware.bluetooth.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 ]; fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell_fonts ];

View File

@ -50,13 +50,13 @@ in
security.setuidOwners = [ security.setuidOwners = [
{ {
program = "kcheckpass"; program = "kcheckpass";
source = "${kde5.plasma-workspace}/lib/libexec/kcheckpass"; source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
owner = "root"; owner = "root";
setuid = true; setuid = true;
} }
{ {
program = "start_kdeinit_wrapper"; program = "start_kdeinit";
source = "${kde5.plasma-workspace}/lib/libexec/kf5/start_kdeinit_wrapper"; source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
owner = "root"; owner = "root";
setuid = true; setuid = true;
} }
@ -65,10 +65,50 @@ in
environment.systemPackages = environment.systemPackages =
[ [
kde5.frameworkintegration 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.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.breeze
kde5.kactivitymanagerd
kde5.kde-cli-tools kde5.kde-cli-tools
kde5.kdecoration
kde5.kdeplasma-addons kde5.kdeplasma-addons
kde5.kgamma5 kde5.kgamma5
kde5.khelpcenter kde5.khelpcenter
@ -76,12 +116,16 @@ in
kde5.kinfocenter kde5.kinfocenter
kde5.kmenuedit kde5.kmenuedit
kde5.kscreen kde5.kscreen
kde5.kscreenlocker
kde5.ksysguard kde5.ksysguard
kde5.kwayland kde5.kwayland
kde5.kwin kde5.kwin
kde5.kwrited kde5.kwrited
kde5.libkscreen
kde5.libksysguard
kde5.milou kde5.milou
kde5.oxygen kde5.oxygen
kde5.plasma-integration
kde5.polkit-kde-agent kde5.polkit-kde-agent
kde5.systemsettings kde5.systemsettings

View File

@ -34,7 +34,7 @@ let
${optionalString cfg.displayManager.logToJournal '' ${optionalString cfg.displayManager.logToJournal ''
if [ -z "$_DID_SYSTEMD_CAT" ]; then 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 fi
''} ''}

View File

@ -4,7 +4,8 @@ with lib;
let let
dmcfg = config.services.xserver.displayManager; xcfg = config.services.xserver;
dmcfg = xcfg.displayManager;
xEnv = config.systemd.services."display-manager".environment; xEnv = config.systemd.services."display-manager".environment;
cfg = dmcfg.lightdm; cfg = dmcfg.lightdm;
@ -36,16 +37,31 @@ let
lightdmConf = writeText "lightdm.conf" lightdmConf = writeText "lightdm.conf"
'' ''
[LightDM] [LightDM]
greeter-user = ${config.users.extraUsers.lightdm.name} ${optionalString cfg.greeter.enable ''
greeters-directory = ${cfg.greeter.package} greeter-user = ${config.users.extraUsers.lightdm.name}
greeters-directory = ${cfg.greeter.package}
''}
sessions-directory = ${dmcfg.session.desktops} sessions-directory = ${dmcfg.session.desktops}
[Seat:*] [Seat:*]
xserver-command = ${xserverWrapper} xserver-command = ${xserverWrapper}
session-wrapper = ${dmcfg.session.script} 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} ${cfg.extraSeatDefaults}
''; '';
defaultSessionName =
let
dm = xcfg.desktopManager.default;
wm = xcfg.windowManager.default;
in dm + optionalString (wm != "none") (" + " + wm);
in in
{ {
# Note: the order in which lightdm greeter modules are imported # Note: the order in which lightdm greeter modules are imported
@ -68,6 +84,14 @@ in
}; };
greeter = { 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 { package = mkOption {
type = types.package; type = types.package;
description = '' description = ''
@ -102,10 +126,67 @@ in
description = "Extra lines to append to SeatDefaults section."; 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 { 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.slim.enable = false;
services.xserver.displayManager.job = { services.xserver.displayManager.job = {
@ -144,6 +225,17 @@ in
session optional ${pkgs.systemd}/lib/security/pam_systemd.so 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 = { users.extraUsers.lightdm = {
createHome = true; createHome = true;

View File

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

View File

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

View File

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

View File

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

View File

@ -19,6 +19,7 @@ in
./jwm.nix ./jwm.nix
./metacity.nix ./metacity.nix
./openbox.nix ./openbox.nix
./pekwm.nix
./notion.nix ./notion.nix
./ratpoison.nix ./ratpoison.nix
./sawfish.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 [ config = mkMerge [
(mkIf config.systemd.coredump.enable { (mkIf config.systemd.coredump.enable {
systemd.additionalUpstreamSystemUnits = [ "systemd-coredump.socket" "systemd-coredump@.service" ];
environment.etc."systemd/coredump.conf".text = environment.etc."systemd/coredump.conf".text =
'' ''
[Coredump] [Coredump]
@ -45,7 +47,7 @@ with lib;
# Have the kernel pass core dumps to systemd's coredump helper binary. # Have the kernel pass core dumps to systemd's coredump helper binary.
# From systemd's 50-coredump.conf file. See: # From systemd's 50-coredump.conf file. See:
# <https://github.com/systemd/systemd/blob/v218/sysctl.d/50-coredump.conf.in> # <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) { (mkIf (!config.systemd.coredump.enable) {

View File

@ -100,9 +100,6 @@ in
''; '';
boot.initrd.network.postCommands = '' boot.initrd.network.postCommands = ''
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo '${cfg.shell}' > /etc/shells echo '${cfg.shell}' > /etc/shells
echo 'root:x:0:0:root:/root:${cfg.shell}' > /etc/passwd echo 'root:x:0:0:root:/root:${cfg.shell}' > /etc/passwd
echo 'passwd: files' > /etc/nsswitch.conf 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 targetRoot=/mnt-root
console=tty1 console=tty1
extraUtils="@extraUtils@"
export LD_LIBRARY_PATH=@extraUtils@/lib export LD_LIBRARY_PATH=@extraUtils@/lib
export PATH=@extraUtils@/bin export PATH=@extraUtils@/bin
ln -s @extraUtils@/bin /bin ln -s @extraUtils@/bin /bin
@ -13,6 +14,8 @@ export LVM_SUPPRESS_FD_WARNINGS=true
fail() { fail() {
if [ -n "$panicOnFail" ]; then exit 1; fi if [ -n "$panicOnFail" ]; then exit 1; fi
@preFailCommands@
# If starting stage 2 failed, allow the user to repair the problem # If starting stage 2 failed, allow the user to repair the problem
# in an interactive shell. # in an interactive shell.
cat <<EOF cat <<EOF
@ -70,6 +73,8 @@ mount -t sysfs sysfs /sys
mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev mount -t devtmpfs -o "size=@devSize@" devtmpfs /dev
mkdir -p /run mkdir -p /run
mount -t tmpfs -o "mode=0755,size=@runSize@" tmpfs /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. # Log the script output to /dev/kmsg or /run/log/stage-1-init.log.
mkdir -p /tmp mkdir -p /tmp

View File

@ -81,9 +81,9 @@ let
# Copy ld manually since it isn't detected correctly # Copy ld manually since it isn't detected correctly
cp -pv ${pkgs.glibc.out}/lib/ld*.so.? $out/lib cp -pv ${pkgs.glibc.out}/lib/ld*.so.? $out/lib
# Copy all of the needed libraries for the binaries # Copy all of the needed libraries
for BIN in $(find $out/{bin,sbin} -type f); do find $out/bin $out/lib -type f | while read BIN; do
echo "Copying libs for bin $BIN" echo "Copying libs for executable $BIN"
LDD="$(ldd $BIN)" || continue LDD="$(ldd $BIN)" || continue
LIBS="$(echo "$LDD" | awk '{print $3}' | sed '/^$/d')" LIBS="$(echo "$LDD" | awk '{print $3}' | sed '/^$/d')"
for LIB in $LIBS; do for LIB in $LIBS; do
@ -104,13 +104,17 @@ let
stripDirs "lib bin" "-s" stripDirs "lib bin" "-s"
# Run patchelf to make the programs refer to the copied libraries. # 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 find $out/bin -type f | while read i; do
if ! test -L $i; then if ! test -L $i; then
echo "patching $i..." echo "patching $i..."
patchelf --set-interpreter $out/lib/ld*.so.? --set-rpath $out/lib $i || true patchelf --set-interpreter $out/lib/ld*.so.? --set-rpath $out/lib $i || true
fi fi
done done
# Make sure that the patchelf'ed binaries still work. # Make sure that the patchelf'ed binaries still work.
@ -138,6 +142,7 @@ let
udevRules = pkgs.stdenv.mkDerivation { udevRules = pkgs.stdenv.mkDerivation {
name = "udev-rules"; name = "udev-rules";
allowedReferences = [ extraUtils ];
buildCommand = '' buildCommand = ''
mkdir -p $out mkdir -p $out
@ -160,7 +165,8 @@ let
--replace /sbin/mdadm ${extraUtils}/bin/mdadm \ --replace /sbin/mdadm ${extraUtils}/bin/mdadm \
--replace /bin/sh ${extraUtils}/bin/sh \ --replace /bin/sh ${extraUtils}/bin/sh \
--replace /usr/bin/readlink ${extraUtils}/bin/readlink \ --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 done
# Work around a bug in QEMU, which doesn't implement the "READ # 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) resumeDevice devSize runSize;
inherit (config.boot.initrd) checkJournalingFS 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}") 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); (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 { boot.initrd.extraUtilsCommands = mkOption {
internal = true; internal = true;
default = ""; default = "";

View File

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

View File

@ -120,7 +120,6 @@ let
"systemd-poweroff.service" "systemd-poweroff.service"
"halt.target" "halt.target"
"systemd-halt.service" "systemd-halt.service"
"ctrl-alt-del.target"
"shutdown.target" "shutdown.target"
"umount.target" "umount.target"
"final.target" "final.target"
@ -162,7 +161,6 @@ let
"systemd-hostnamed.service" "systemd-hostnamed.service"
"systemd-binfmt.service" "systemd-binfmt.service"
] ]
++ cfg.additionalUpstreamSystemUnits; ++ cfg.additionalUpstreamSystemUnits;
upstreamSystemWants = upstreamSystemWants =
@ -485,6 +483,15 @@ in
description = "Default unit started when the system boots."; 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 { systemd.globalEnvironment = mkOption {
type = types.attrs; type = types.attrs;
default = {}; default = {};
@ -764,7 +771,7 @@ in
{ wantedBy = [ "timers.target" ]; { wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = service.startAt; 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. # Generate timer units for all services that have a startAt value.
systemd.user.timers = 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}" ("$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-mount" = { after = [ "systemd-modules-load.service" ]; };
"zfs-share" = { after = [ "systemd-modules-load.service" ]; }; "zfs-share" = { after = [ "systemd-modules-load.service" ]; };
"zed" = { after = [ "systemd-modules-load.service" ]; }; "zed" = { after = [ "systemd-modules-load.service" ]; };

View File

@ -5,14 +5,33 @@ with lib;
let let
makeColor = n: value: "COLOR_${toString n}=${value}"; 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; 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" '' vconsoleConf = pkgs.writeText "vconsole.conf" ''
KEYMAP=${config.i18n.consoleKeyMap} KEYMAP=${config.i18n.consoleKeyMap}
FONT=${config.i18n.consoleFont} FONT=${config.i18n.consoleFont}
${colors} ${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; setVconsole = !config.boot.isContainer;
in 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 ###### implementation
config = mkMerge [ config = mkMerge [
(mkIf (!setVconsole) { (mkIf (!setVconsole || (setVconsole && config.boot.earlyVconsoleSetup)) {
systemd.services."systemd-vconsole-setup".enable = false; systemd.services."systemd-vconsole-setup".enable = false;
}) })
(mkIf setVconsole { (mkIf setVconsole (mkMerge [
environment.systemPackages = [ pkgs.kbd ]; { environment.systemPackages = [ pkgs.kbd ];
# Let systemd-vconsole-setup.service do the work of setting up the # Let systemd-vconsole-setup.service do the work of setting up the
# virtual consoles. FIXME: trigger a restart of # virtual consoles.
# systemd-vconsole-setup.service if /etc/vconsole.conf changes. environment.etc."vconsole.conf".source = vconsoleConf;
environment.etc = [ { # Provide kbd with additional packages.
target = "vconsole.conf"; environment.etc."kbd".source = "${kbdEnv}/share";
source = vconsoleConf; }
} ];
# This is identical to the systemd-vconsole-setup.service unit (mkIf (!config.boot.earlyVconsoleSetup) {
# shipped with systemd, except that it uses /dev/tty1 instead of # This is identical to the systemd-vconsole-setup.service unit
# /dev/tty0 to prevent putting the X server in non-raw mode, and # shipped with systemd, except that it uses /dev/tty1 instead of
# it has a restart trigger. # /dev/tty0 to prevent putting the X server in non-raw mode, and
systemd.services."systemd-vconsole-setup" = # it has a restart trigger.
{ wantedBy = [ "multi-user.target" ]; systemd.services."systemd-vconsole-setup" =
before = [ "display-manager.service" ]; { wantedBy = [ "sysinit.target" ];
after = [ "systemd-udev-settle.service" ]; before = [ "display-manager.service" ];
restartTriggers = [ vconsoleConf ]; 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; autoResize = true;
}; };
boot.extraModulePackages = [ config.boot.kernelPackages.ixgbevf ]; boot.extraModulePackages =
boot.initrd.kernelModules = [ "xen-blkfront" "xen-netfront" "ixgbevf" ]; [ 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" ]; boot.kernelParams = mkIf cfg.hvm [ "console=ttyS0" ];
# Prevent the nouveau kernel module from being loaded, as it # Prevent the nouveau kernel module from being loaded, as it

View File

@ -4,22 +4,6 @@ with lib;
let 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 # The container's init script, a small wrapper around the regular
# NixOS stage-2 init script. # NixOS stage-2 init script.
containerInit = pkgs.writeScript "container-init" containerInit = pkgs.writeScript "container-init"
@ -410,7 +394,7 @@ in
ExecReload = pkgs.writeScript "reload-container" ExecReload = pkgs.writeScript "reload-container"
'' ''
#! ${pkgs.stdenv.shell} -e #! ${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" bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test"
''; '';
@ -498,6 +482,6 @@ in
networking.dhcpcd.denyInterfaces = [ "ve-*" ]; 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-ebs = "ami-005fb160";
"15.09".us-west-2.pv-s3 = "ami-cd55bbad"; "15.09".us-west-2.pv-s3 = "ami-cd55bbad";
"16.03".ap-northeast-1.hvm-ebs = "ami-b6edf5d8"; "16.03".ap-northeast-1.hvm-ebs = "ami-40619d21";
"16.03".ap-northeast-1.hvm-s3 = "ami-b1e3fbdf"; "16.03".ap-northeast-1.hvm-s3 = "ami-ce629eaf";
"16.03".ap-northeast-1.pv-ebs = "ami-6190880f"; "16.03".ap-northeast-1.pv-ebs = "ami-ef639f8e";
"16.03".ap-northeast-1.pv-s3 = "ami-908d95fe"; "16.03".ap-northeast-1.pv-s3 = "ami-a1609cc0";
"16.03".ap-southeast-1.hvm-ebs = "ami-35b16656"; "16.03".ap-northeast-2.hvm-ebs = "ami-deca00b0";
"16.03".ap-southeast-1.hvm-s3 = "ami-41be6922"; "16.03".ap-northeast-2.hvm-s3 = "ami-a3b77dcd";
"16.03".ap-southeast-1.pv-ebs = "ami-4cb96e2f"; "16.03".ap-northeast-2.pv-ebs = "ami-7bcb0115";
"16.03".ap-southeast-1.pv-s3 = "ami-3bb96e58"; "16.03".ap-northeast-2.pv-s3 = "ami-a2b77dcc";
"16.03".ap-southeast-2.hvm-ebs = "ami-debc91bd"; "16.03".ap-south-1.hvm-ebs = "ami-0dff9562";
"16.03".ap-southeast-2.hvm-s3 = "ami-55bc9136"; "16.03".ap-south-1.hvm-s3 = "ami-13f69c7c";
"16.03".ap-southeast-2.pv-ebs = "ami-b38ba6d0"; "16.03".ap-south-1.pv-ebs = "ami-0ef39961";
"16.03".ap-southeast-2.pv-s3 = "ami-9e8ba6fd"; "16.03".ap-south-1.pv-s3 = "ami-e0c8a28f";
"16.03".eu-central-1.hvm-ebs = "ami-7c967413"; "16.03".ap-southeast-1.hvm-ebs = "ami-5e964a3d";
"16.03".eu-central-1.hvm-s3 = "ami-b29072dd"; "16.03".ap-southeast-1.hvm-s3 = "ami-4d964a2e";
"16.03".eu-central-1.pv-ebs = "ami-7a947615"; "16.03".ap-southeast-1.pv-ebs = "ami-ec9b478f";
"16.03".eu-central-1.pv-s3 = "ami-729b791d"; "16.03".ap-southeast-1.pv-s3 = "ami-999b47fa";
"16.03".eu-west-1.hvm-ebs = "ami-ff27a98c"; "16.03".ap-southeast-2.hvm-ebs = "ami-9f7359fc";
"16.03".eu-west-1.hvm-s3 = "ami-6c21af1f"; "16.03".ap-southeast-2.hvm-s3 = "ami-987359fb";
"16.03".eu-west-1.pv-ebs = "ami-a33cb2d0"; "16.03".ap-southeast-2.pv-ebs = "ami-a2705ac1";
"16.03".eu-west-1.pv-s3 = "ami-ec38b69f"; "16.03".ap-southeast-2.pv-s3 = "ami-a3705ac0";
"16.03".sa-east-1.hvm-ebs = "ami-5bef6637"; "16.03".eu-central-1.hvm-ebs = "ami-17a45178";
"16.03".sa-east-1.hvm-s3 = "ami-55f87139"; "16.03".eu-central-1.hvm-s3 = "ami-f9a55096";
"16.03".sa-east-1.pv-ebs = "ami-76e56c1a"; "16.03".eu-central-1.pv-ebs = "ami-c8a550a7";
"16.03".sa-east-1.pv-s3 = "ami-e1f8718d"; "16.03".eu-central-1.pv-s3 = "ami-6ea45101";
"16.03".us-east-1.hvm-ebs = "ami-4bfd1926"; "16.03".eu-west-1.hvm-ebs = "ami-b5b3d5c6";
"16.03".us-east-1.hvm-s3 = "ami-60c5210d"; "16.03".eu-west-1.hvm-s3 = "ami-c986e0ba";
"16.03".us-east-1.pv-ebs = "ami-c0c92dad"; "16.03".eu-west-1.pv-ebs = "ami-b083e5c3";
"16.03".us-east-1.pv-s3 = "ami-f9d63294"; "16.03".eu-west-1.pv-s3 = "ami-3c83e54f";
"16.03".us-west-1.hvm-ebs = "ami-13aad473"; "16.03".sa-east-1.hvm-ebs = "ami-f6eb7f9a";
"16.03".us-west-1.hvm-s3 = "ami-e1a8d681"; "16.03".sa-east-1.hvm-s3 = "ami-93e773ff";
"16.03".us-west-1.pv-ebs = "ami-c0a6d8a0"; "16.03".sa-east-1.pv-ebs = "ami-cbb82ca7";
"16.03".us-west-1.pv-s3 = "ami-6aa9d70a"; "16.03".sa-east-1.pv-s3 = "ami-abb82cc7";
"16.03".us-west-2.hvm-ebs = "ami-265dad46"; "16.03".us-east-1.hvm-ebs = "ami-c123a3d6";
"16.03".us-west-2.hvm-s3 = "ami-cd40b0ad"; "16.03".us-east-1.hvm-s3 = "ami-bc25a5ab";
"16.03".us-west-2.pv-ebs = "ami-7b4aba1b"; "16.03".us-east-1.pv-ebs = "ami-bd25a5aa";
"16.03".us-west-2.pv-s3 = "ami-0849b968"; "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 idx=2
extraDisks="" extraDisks=""
${flip concatMapStrings cfg.emptyDiskImages (size: '' ${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" extraDisks="$extraDisks -drive index=$idx,file=$(pwd)/empty$idx.qcow2,if=${cfg.qemu.diskInterface},werror=report"
idx=$((idx + 1)) idx=$((idx + 1))
'')} '')}

View File

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

View File

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

View File

@ -220,6 +220,7 @@ in rec {
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
tests.dockerRegistry = hydraJob (import tests/docker-registry.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.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.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-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; 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 = callTest tests/gnome3.nix {};
tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {}; tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
tests.grsecurity = callTest tests/grsecurity.nix {}; tests.grsecurity = callTest tests/grsecurity.nix {};
tests.hibernate = callTest tests/hibernate.nix {};
tests.i3wm = callTest tests/i3wm.nix {}; tests.i3wm = callTest tests/i3wm.nix {};
tests.installer = callSubTests tests/installer.nix {}; tests.installer = callSubTests tests/installer.nix {};
tests.influxdb = callTest tests/influxdb.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.nixos-artwork
pkgs.perlPackages.XMLLibXML pkgs.perlPackages.XMLLibXML
pkgs.perlPackages.ListCompare 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 ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub
++ optionals (bootLoader == "grub" && grubVersion == 2) [ pkgs.grub2 pkgs.grub2_efi ]; ++ 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, fetchurl, cmake, fftw, gtkmm, libxcb, lv2, pkgconfig, xorg }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "eq10q-2-${version}"; name = "eq10q-${version}";
version = "beta7.1"; version = "2.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/eq10q/${name}.tar.gz"; 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 ]; buildInputs = [ cmake fftw gtkmm libxcb lv2 pkgconfig xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];

View File

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

View File

@ -1,12 +1,13 @@
{ stdenv, fetchurl, unzip, puredata }: { stdenv, fetchurl, unzip, puredata }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "puremapping-1.01"; name = "puremapping-${version}";
version = "20160130";
src = fetchurl { 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"; name = "puremapping";
sha256 = "1ygzxsfj3rnzjkpmgi4wch810q8s5vm1gdam6a938hbbvamafgvc"; sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
}; };
buildInputs = [ unzip puredata ]; buildInputs = [ unzip puredata ];

View File

@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
for i in ${puredata}/include/pd/*; do for i in ${puredata}/include/pd/*; do
ln -s $i . ln -s $i .
done done
patchShebangs
./bootstrap.sh ./bootstrap.sh
./configure --enable-lpt=no --prefix=$out ./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 { stdenv.mkDerivation rec {
name = "plugin-torture-git-${version}"; name = "plugin-torture-${version}";
version = "2013-10-03"; version = "5";
src = fetchgit { src = fetchFromGitHub {
url = "https://github.com/cth103/plugin-torture"; owner = "cth103";
rev = "9ee06016982bdfbaa215cd0468cc6ada6367462a"; repo = "plugin-torture";
sha256 = "0ynzfs3z95lbw4l1w276as2a37zxp0cw6pi3lbikr0qk0r7j5j10"; rev = "v${version}";
sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih";
}; };
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ]; buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
@ -15,7 +16,7 @@ stdenv.mkDerivation rec {
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp plugin-torture $out/bin/ cp plugin-torture $out/bin/
cp README $out/bin/ cp find-safe-plugins $out/bin/
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

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

View File

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

View File

@ -3,12 +3,12 @@
, lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }: , lv2, mesa, gtk2, cairo, pango, fftwFloat, zita-convolver }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2015-07-02"; version = "20160619";
name = "x42-plugins-${version}"; name = "x42-plugins-${version}";
src = fetchurl { src = fetchurl {
url = "http://gareus.org/misc/x42-plugins/x42-plugins-20150702.tar.xz"; url = "http://gareus.org/misc/x42-plugins/${name}.tar.xz";
sha256 = "1mq0grabzbl9xsd53v2qajhr8nngk0d4lx9n0n3nwy95y2gmy6sm"; sha256 = "1ald0c5xbfkdq6g5xwyy8wmbi636m3k3gqrq16kbh46g0kld1as9";
}; };
buildInputs = [ mesa_glu ftgl freefont_ttf libjack2 libltc libsndfile libsamplerate lv2 mesa gtk2 cairo pango fftwFloat pkgconfig zita-convolver]; 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 , autoconf, automake
, withX ? !stdenv.isDarwin , withX ? !stdenv.isDarwin
, withGTK3 ? false, gtk3 ? null , withGTK3 ? false, gtk3 ? null
, withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null
, withGTK2 ? true, gtk2 , withGTK2 ? true, gtk2
}: }:
@ -14,6 +15,7 @@ assert withGTK2 -> withX || stdenv.isDarwin;
assert withGTK3 -> withX || stdenv.isDarwin; assert withGTK3 -> withX || stdenv.isDarwin;
assert withGTK2 -> !withGTK3 && gtk2 != null; assert withGTK2 -> !withGTK3 && gtk2 != null;
assert withGTK3 -> !withGTK2 && gtk3 != null; assert withGTK3 -> !withGTK2 && gtk3 != null;
assert withXwidgets -> withGTK3 && webkitgtk24x != null;
let let
toolkit = toolkit =
@ -49,17 +51,19 @@ stdenv.mkDerivation rec {
imagemagick gconf ] imagemagick gconf ]
++ stdenv.lib.optional (withX && withGTK2) gtk2 ++ stdenv.lib.optional (withX && withGTK2) gtk2
++ stdenv.lib.optional (withX && withGTK3) gtk3 ++ 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 ]; propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ];
configureFlags = configureFlags =
if stdenv.isDarwin (if stdenv.isDarwin
then [ "--with-ns" "--disable-ns-self-contained" ] then [ "--with-ns" "--disable-ns-self-contained" ]
else if withX else if withX
then [ "--with-x-toolkit=${toolkit}" "--with-xft" ] then [ "--with-x-toolkit=${toolkit}" "--with-xft" ]
else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no" 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) NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX)
"-I${cairo.dev}/include/cairo"; "-I${cairo.dev}/include/cairo";

View File

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

View File

@ -2,5 +2,7 @@
let name = builtins.replaceStrings ["geany-"] ["geany-with-vte-"] geany.name; let name = builtins.replaceStrings ["geany-"] ["geany-with-vte-"] geany.name;
in in
runCommand "${name}" { nativeBuildInputs = [ makeWrapper ]; } " 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 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 { idea-community = buildIdea rec {
name = "idea-community-${version}"; name = "idea-community-${version}";
version = "2016.1.3"; version = "2016.2";
build = "IC-145.1617.8"; build = "IC-162.1121";
description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = stdenv.lib.licenses.asl20; license = stdenv.lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "0yd1jqz4arywyjsiakszrr48w2xqnik6vnl1a6l0ph2hssgkzkfi"; sha256 = "164x4l0q31zpc1jh3js1xx9y6afrzsshmnkx1mwhmq8qmvzc4w32";
}; };
wmClass = "jetbrains-idea-ce"; wmClass = "jetbrains-idea-ce";
}; };
@ -228,13 +228,13 @@ in
idea-ultimate = buildIdea rec { idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}"; name = "idea-ultimate-${version}";
version = "2016.1.3"; version = "2016.2";
build = "IU-145.1617.8"; build = "IU-162.1121";
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
sha256 = "1zzxwdnw2bbnl86kj7fjk5p8c99d0hdn1ki2alw5xm8wp4k0w7rv"; sha256 = "10hiqh6ccmai2cnc5p72vqjcz9kzmmcpn0hy5v514h4mq6vs4zk4";
}; };
wmClass = "jetbrains-idea"; wmClass = "jetbrains-idea";
}; };

View File

@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
2a3,5 2a3,5
> export MONO_GAC_PREFIX=${gnome-sharp}:${gtk-sharp}:\$MONO_GAC_PREFIX > export MONO_GAC_PREFIX=${gnome-sharp}:${gtk-sharp}:\$MONO_GAC_PREFIX
> export PATH=${mono}/bin:\$PATH > 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 EOF
done 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 { stdenv.mkDerivation rec {
name = "vis-nightly-${version}"; name = "vis-nightly-${version}";
version = "2016-04-15"; inherit version;
src = fetchFromGitHub { src = fetchFromGitHub {
sha256 = "0a4gpwniy5r9dpfq51fxjxxnxavdjv8x76w9bbjnbnh8n63p3sj7"; inherit sha256;
rev = "472c559a273d3c7b0f5ee92260c5544bc3d74576"; inherit rev;
repo = "vis"; repo = "vis";
owner = "martanne"; owner = "martanne";
}; };
@ -14,12 +20,14 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildInputs = [ buildInputs = [
unzip unzip pkgconfig
pkgconfig ncurses
ncurses libtermkey
libtermkey lua
lua lpeg
lpeg ] ++ stdenv.lib.optional stdenv.isLinux [
acl
libselinux
]; ];
LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;"; LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;";
@ -33,11 +41,10 @@ stdenv.mkDerivation rec {
--prefix VIS_PATH : "$out/share/vis" --prefix VIS_PATH : "$out/share/vis"
''; '';
meta = { meta = with stdenv.lib; {
description = "A vim like editor"; description = "A vim like editor";
homepage = http://github.com/martanne/vis; homepage = http://github.com/martanne/vis;
license = stdenv.lib.licenses.isc; license = licenses.isc;
maintainers = [ stdenv.lib.maintainers.vrthra ]; maintainers = [ maintainers.vrthra ];
}; };
} }

View File

@ -11,8 +11,8 @@ let
else throw "ImageMagick is not supported on this platform."; else throw "ImageMagick is not supported on this platform.";
cfg = { cfg = {
version = "6.9.3-9"; version = "6.9.5-2";
sha256 = "0q19jgn1iv7zqrw8ibxp4z57iihrc9kyb09k2wnspcacs6vrvinf"; sha256 = "09h3rpr1jnzd7ipy5d16r2gi0bwg4hk5khwzv4cyhv1xzs8pk7pj";
patches = []; patches = [];
} }
# Freeze version on mingw so we don't need to port the patch too often. # 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 --- a/config/policy.xml
+++ b/config/policy.xml +++ b/config/policy.xml
@@ -58,4 +58,10 @@ 67a68,72
<!-- <policy domain="resource" name="time" value="3600"/> --> > <policy domain="coder" rights="none" pattern="EPHEMERAL" />
<!-- <policy domain="system" name="precision" value="6"/> --> > <policy domain="coder" rights="none" pattern="URL" />
<policy domain="cache" name="shared-secret" value="passphrase"/> > <policy domain="coder" rights="none" pattern="HTTPS" />
+ > <policy domain="coder" rights="none" pattern="MVG" />
+ <policy domain="coder" rights="none" pattern="EPHEMERAL" /> > <policy domain="coder" rights="none" pattern="MSL" />
+ <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>

View File

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

View File

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

View File

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

View File

@ -32,5 +32,8 @@ stdenv.mkDerivation rec {
license = licenses.gpl2; # Commercial license is also available license = licenses.gpl2; # Commercial license is also available
maintainers = with maintainers; [ bjornfor prikhi ]; maintainers = with maintainers; [ bjornfor prikhi ];
platforms = platforms.linux; 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 { 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 , gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper
, gnome_doc_utils, hicolor_icon_theme }: , gnome_doc_utils, hicolor_icon_theme }:
# for dependencies see http://www.yorba.org/projects/shotwell/install/ # for dependencies see http://www.yorba.org/projects/shotwell/install/
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.22.0"; version = "${major}.${minor}";
major = "0.23";
minor = "2";
name = "shotwell-${version}"; name = "shotwell-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/shotwell/0.22/${name}.tar.xz"; url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz";
sha256 = "0cgqaaikrb10plhf6zxbgqy32zqpiwyi9dpx3g8yr261q72r5c81"; sha256 = "d52caae4e3204f2f78e2eb828d955848ea6fef5c91d3ac6e9eb0b185c0490b39";
}; };
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include"; 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 pkgconfig gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee
which udev libgudev gnome3.gexiv2 hicolor_icon_theme which udev libgudev gnome3.gexiv2 hicolor_icon_theme
libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "emem"; pname = "emem";
version = "0.2.15"; version = "0.2.18";
name = "${pname}-${version}"; name = "${pname}-${version}";
inherit jdk; inherit jdk;
src = fetchurl { src = fetchurl {
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar"; url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
sha256 = "0jj990syd9biq2awnjydi4x3p4hivigc522ds59hdf5wg4y2gg6c"; sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8";
}; };
buildInputs = [ ]; 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 }: , desktop_file_utils, libSM, imagemagick }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.7.86"; version = "0.7.87";
name = "mediainfo-gui-${version}"; name = "mediainfo-gui-${version}";
src = fetchurl { src = fetchurl {
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5"; sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ autoreconfHook pkgconfig ];

View File

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

View File

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

View File

@ -3,26 +3,26 @@
stdenv.mkDerivation { stdenv.mkDerivation {
name = "procmail-3.22"; name = "procmail-3.22";
buildInputs = [ stdenv.cc.libc ]; patches = [ ./CVE-2014-3618.patch ];
# getline is defined differently in glibc now. So rename it. # getline is defined differently in glibc now. So rename it.
installPhase = " postPatch = ''
mkdir -p \$out/bin sed -e "s%^RM.*$%#%" -i Makefile
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%^BASENAME.*%\BASENAME=$out%\" -i Makefile sed -e "s%^LIBS=.*%LIBS=-lm%" -i Makefile
sed -e \"s%^LIBS=.*%LIBS=-lm%\" -i Makefile sed -e "s%getline%thisgetline%g" -i src/*.c src/*.h
sed -e \"s%getline%thisgetline%g\" -i src/*.c src/*.h '';
make DESTDIR=\$out install
";
phases = "unpackPhase patchPhase installPhase";
patches = [ ./CVE-2014-3618.patch ];
src = fetchurl { src = fetchurl {
url = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz; url = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz;
sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08"; 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 { stdenv.mkDerivation {
name = "urxvt-font-size-2015-05-22"; name = "urxvt-font-size-2015-05-22";
@ -13,7 +13,8 @@ stdenv.mkDerivation {
installPhase = '' installPhase = ''
substituteInPlace font-size \ 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 mkdir -p $out/lib/urxvt/perl
cp font-size $out/lib/urxvt/perl cp font-size $out/lib/urxvt/perl

View File

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

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "vifm-${version}"; name = "vifm-${version}";
version = "0.8.1"; version = "0.8.2";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/vifm/vifm/${name}.tar.bz2"; url = "mirror://sourceforge/project/vifm/vifm/${name}.tar.bz2";
sha256 = "0yf3xc4czdrcbvmhq7d4xkck5phrmxwybmnv1zdb56qg56baq64r"; sha256 = "07r15kq7kjl3a41sd11ncpsii866xxps4f90zh3lv8jqcrv6silb";
}; };
nativeBuildInputs = [ pkgconfig ]; 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; doCheck = false;
propogatedBuildInputs = [ python3 ]; propagatedBuildInputs = [ python3 ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A text scroller for use with panels and shells"; description = "A text scroller for use with panels and shells";

View File

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

View File

@ -4,189 +4,189 @@
# ruby generate_sources.rb 46.0.1 > sources.nix # ruby generate_sources.rb 46.0.1 > sources.nix
{ {
version = "48.0b1"; version = "48.0b7";
sources = [ sources = [
{ locale = "ach"; arch = "linux-i686"; sha512 = "464c3b19ab7bda118d962da2699dd40482e1742887bcd9d72b8b7d211c7ab085aaf4c31fdea3c4e195af9030276118431ed7c2e6a917b354c5bf9f55cc8111a9"; } { 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"; }
{ locale = "ach"; arch = "linux-x86_64"; sha512 = "d9f9844fb06637ca7449bc00c54c02abf8660c42207c0671fffd53e2415df7b0fc3df782c4a2ccde807b4c2e477b0cf3a74c36acb7cce3f75e4ce267a3575e5c"; } { 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"; }
{ locale = "af"; arch = "linux-i686"; sha512 = "77bca1f05627ed9ace120eee7a7cd24fc354e9bf23a7709e38879241ad87c5d39a8cfcf2aed12881b6f9d6d611c334a864c20c9dee877952990c47c631c6a61b"; } { 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"; }
{ locale = "af"; arch = "linux-x86_64"; sha512 = "bf4d5353a46778d93627c232c404c768e643420b17d490c932848d126846e4ca3a185df671dcf72b1c1d3fe75606c212e6b0dadd2169b52c4fe73f5088e87b94"; } { 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"; }
{ locale = "an"; arch = "linux-i686"; sha512 = "2882258205866c93a4b808b7397ff62efd629b74b5233154190ce72ddd0be5d1eb8153d686d921ddb72049dfae0f11c3eb46128413e578c0f9f6323636a0e378"; } { 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"; }
{ locale = "an"; arch = "linux-x86_64"; sha512 = "543b1d66dc37e1843f370ff071adb050af16e5777bc0042c2d25579a7d99b5b1d176ea099a0b3afc19f270ad5f191fec65e544634e2bbc2223ccc6afcb1869e0"; } { 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"; }
{ locale = "ar"; arch = "linux-i686"; sha512 = "855fc1c71b50ba5b8354ee7ce2ea59664b40b77d007d99ea6b658873de729e22ca9018e475a669992b2e2bea9388fe0966e06f1e2b0d334df4ffbff2be147949"; } { 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"; }
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "8ff272dd30cc66460a617dd80678b68917067b87d63d6b307f6d60e61deda092f46bca9e890d08b69a0738f4c204cd2c5896201b362df68aa9abbe7dd0fcc96d"; } { 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"; }
{ locale = "as"; arch = "linux-i686"; sha512 = "607039866932e6ec0692c534aa2e4ddcb3725d81f2908e7e905edafdbafb3221161f5ae4a5b6eb2ba065e9bd66e1f63c008015b17040033ed90ffa0576b1d08b"; } { 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"; }
{ locale = "as"; arch = "linux-x86_64"; sha512 = "59f3c28bcbc50a9ffe780025e03edafbbf82a213f28ba8e0f62a04a0e052038c24e1a5928ad4a730455bd358fc3cd0f1188e785dd13f79b377d86e5c55360735"; } { 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"; }
{ locale = "ast"; arch = "linux-i686"; sha512 = "c9767d9b73ec2dd411e16b1fab503e97b7960c315533ca529c4898dd10a6e0f809104588ac33f440e1026d026d114ec080cfc312b1902601958656607cdd4ad1"; } { 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"; }
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "f4c7ab66af5e7fca460999b3d68793f8099b177809e70f682fcd7b0a50a3d5ad2a1c15bc5df5a63c37437fce9d70e08e963119755626c357bce6eb17bfb229ee"; } { 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"; }
{ locale = "az"; arch = "linux-i686"; sha512 = "58bb0eb057caf6af113debeb8d9d7eeb3b2fbd2c52c9dac04c527a67da45b3a4ebac4debfea1704639cdf20ec116876e140f4b55ea5f2b90f3afb9db6b2641b6"; } { 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"; }
{ locale = "az"; arch = "linux-x86_64"; sha512 = "a82fdc532e4d9fee9ffab9ab8aa58074c4ed174c131d56b4ed48b1ebce1f8950371fa7c7e174c4f35150b752cdeccc2a553b416e94fb3eec22c0c4467c0b1f20"; } { 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"; }
{ locale = "be"; arch = "linux-i686"; sha512 = "55a96ff3fe9e54ec09a828f740899118504848c82b9c842ed27b9c1e1179f8efcbb2fae5e25f01dd1440f9d2ad896e37056fe8240979cf2c60f536870590cac3"; } { 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"; }
{ locale = "be"; arch = "linux-x86_64"; sha512 = "6fe1b00f8a03160a5131a52aba5b31401bf18913eb5b6018d1dccb0456ee09154c76220bb94b1ee20bf5b8e63535a888abf895af570e9a668395b497bbdf90b1"; } { 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"; }
{ locale = "bg"; arch = "linux-i686"; sha512 = "e21d3a2234b533b9d5904be3c1ee4f489bfdea747ff2b45828c40712f70d631ca824375c7a232989741bfceb8a7eb1ca341a4709285056cea2cf3689326a9c35"; } { 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"; }
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "160600a553d452c30d533e4d9a4ccc4c4d0cbbadf7875856f9be0fc81dbb7a686aa79f47ae8ea1c1e3746d150db31c7ce0dc18f1d271a47abb6d9bc35f478bf0"; } { 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"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "6a4267ce4e0d474779f16a7bb31fb873c0d2ba4af993428330bef8c93a24c1f9121b68d50956beb3df549fccf233fa2ce851c69950bf93cf6cdf34debae0cfce"; } { 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"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "31100d78f0b2fcca2643c822f930ffcf01da9ad3c026d8e05e88b659afddb9d55a000dfe043a87d6e4008d40fced109c134a3bb2c8183a1044d462fdc050989d"; } { 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"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha512 = "cb0efc8151949b33c23cb9d4fe41168830e215d4361963ec9399e43c97aa4504b4539a202f2c43283e63ea0a4afbdffb9bbfa1340a256483c3b848ef24660734"; } { 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"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "37e8311e0126da80740b9f97b4b69eb2285716b309e1986daaec5becf88ee5624343ca3b208fa84eb63477f47234c8d5958e394bf750da32e02d777ee94437f1"; } { 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"; }
{ locale = "br"; arch = "linux-i686"; sha512 = "be6cb0e7b1ceb0be27a7203620b19341c16061ce0d4632f9ce135b2559db2ca31adac2e40ef95f98db903fd151a1b5d411232361631272f2d6200dbcc45464be"; } { 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"; }
{ locale = "br"; arch = "linux-x86_64"; sha512 = "aa71bd069902a921b2a61ebbcbb604972104ba5f4274788da261e1e527dc7ce10c6a9aa0652773f0d0499d53c2916dd1e2d862b900fb87d678a9bcb401948cba"; } { 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"; }
{ locale = "bs"; arch = "linux-i686"; sha512 = "5282780a9f35577498b95ded38f86423d043429a0fb4b9ded956716381a3343ebe653508e8929bd8ac7475a2fa0d6c4c67e84482cae0d40a681338eba09f4c96"; } { 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"; }
{ locale = "bs"; arch = "linux-x86_64"; sha512 = "1056be9971338d821025a5d272321ea4b1704f3103c02014cde711516e9da5303dbc5753f0c2c1cf236096a53b3b067261b628f17d6d45e6c713f5b5cdee69b1"; } { 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"; }
{ locale = "ca"; arch = "linux-i686"; sha512 = "15c98207cb051466bc89dc15fb2dc1da95490306030fb318f3e3bb184d23590df7213e183af2e5178969099a4edf9752e5872a9d4a091958d7a9ab6087ff6bdf"; } { 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"; }
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "f7fc94c6c358dff1336938ff2d28c4fb9b0d391c22acefa7e286004978570e18cc1fd1a41a101a8bee27cbec1d750e04ba43cb409886f2b72e8e16a9aed6c835"; } { 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"; }
{ locale = "cak"; arch = "linux-i686"; sha512 = "96da63ceb6d4382abd8d1e343fdc4b72ead5e5ed2e3d451e768c6b092186287dcbaf239c389d29bc23e5641495a3f2a05512377300f45402428647ab77550b17"; } { 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"; }
{ locale = "cak"; arch = "linux-x86_64"; sha512 = "8584d4d82c79a56657a01a9cff211fa99e0fbcf0a42103a6cd9688713e7c11b77f35535fe31ed7e48855e055897b2c5fd84c2b1796c313401d8f01ed889ac7cf"; } { 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"; }
{ locale = "cs"; arch = "linux-i686"; sha512 = "2dff956f8df85bd007b68eeb8b809ddf7d99a6185f6946d2f4fd371f17e4dbf46bf2aad1799b6a1c84bd983935fa2ade5acd3b062f3eee48f7a160f37f3e8e6e"; } { 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"; }
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "725a2e1272722cdce125b5dea7e61525a43ddda6a45cb003f397ec8d1c9334f11adcd7fb6dd2c901de1cd9a0d07eae54304e5f95ecc6c529c80070b9d6af1b47"; } { 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"; }
{ locale = "cy"; arch = "linux-i686"; sha512 = "5eeacbc1cd803687235927a91923895930e135a39de62574c79499fe56accb5278da3efc4d151f0f93ec482ad44099481960dd6e3102afa94cce3c30db67b133"; } { 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"; }
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "49fc8136b3900b96fcea850a9549812b1cf1e9b1058cf99ee7e2e135cf49827e46ef4361badcc4efbd5dd09600d5269e68392f8df03c2e039d6b3d04b244aa71"; } { 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"; }
{ locale = "da"; arch = "linux-i686"; sha512 = "f806a36960cbec3624be8ebf6e7f8116635c7fff63ca890a886bd16fe73ec8a311d1e8b3c34ca680425d4634c91f8b96b0617cd175eef69e701d7c72e8917872"; } { 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"; }
{ locale = "da"; arch = "linux-x86_64"; sha512 = "22a274b9a5a1e670369009f2e48a4b7d2f63f18baf435d001506dd590b59115d43619fa824e2156b468b17739aea420621148ca47cd46bc3ace31bc5be4533f8"; } { 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"; }
{ locale = "de"; arch = "linux-i686"; sha512 = "6d64a77f420d1f87b7dac151eec75d4d42ec1f904b882b970d88b0e20a38ed5ebf8cbb2180abbdb8fb00dd60621e538fecaf77e09c4aee51f71a38a14f81b9b8"; } { 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"; }
{ locale = "de"; arch = "linux-x86_64"; sha512 = "897918d57691fb1a3f93273da48c128cf8a91e9bc5dd12d0ce2b4a085ff4df01db3ee28a378f36b7e7944c23f71df8a6dbf3481ec207cf85b73f3bac95bde054"; } { 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"; }
{ locale = "dsb"; arch = "linux-i686"; sha512 = "d5fa1438b71fcd3507175619090840cf983de9efb003f537eb28b9dba66f1cb3518e1410c4918187eb25766634464aaa796ebe0020f8fc110361008751e1c359"; } { 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"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "30cb3759bd1f6ba91dfa847703326a57901782ebf397adaa1a403afe894f9b8cdeba80fc910f50037bae003e61956845f605b0e62c364c1c415b12a5abb87080"; } { 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"; }
{ locale = "el"; arch = "linux-i686"; sha512 = "991dfd0870e38ee4a8887a61ce87a4c5af1c21206442a0602197caafae0be2c3c5aa4c7b25fd92fd9968bdf25c780ac342dd0203c3df8d729034ba20a459d120"; } { 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"; }
{ locale = "el"; arch = "linux-x86_64"; sha512 = "d62b4f1eb5feeb30e4d2d7b8cb7391f374a209d14b70cdd77acb56106b6df36f54c67a3c5fa1ab4286fd7c46b5d0a42efc52d140b8e5cbe08b17c6d7bd14b498"; } { 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"; }
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "2cddfb3d4472bfda882a3e3a054d5826a596bfd6b9b4399d7f45c6ad9f157599206f5e149f6c4fb35845ae291320520bf7a76c891713f1951c6e9a9450e92d23"; } { 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"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "d6bda8496f96448b9b046822547167c9c631dbf35c8bba07226634fc9aa1058009200d10e4e586fe059ab1e7b558d6cfa2c0040a33220d46dba5ca742bfe6f5c"; } { 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"; }
{ locale = "en-US"; arch = "linux-i686"; sha512 = "a9025b8d66c9294ede71ed37b7df256476cc640f7b7ce74cc4998c0b4b5741b5f869c486f1eaf4793fb4b2f347ba069f859e1c5318fa8df18c52377c83f8a09d"; } { 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"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "a551550037fe762d6d06a4f046ff4e2f37cd2607aace13df5ba2e28d643ddcef01210367555fb2fc66c6fe45d83f0306f61f4139001d1059ea5e913fbd43cd69"; } { 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"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha512 = "3e4721593a69bc289c7299b64e91af0ff121d59ded0167bfdd6692dc6d7a0ce0b0a7e8e89a591cee9fb90dc8b9eac26c5d978e4443b1d3462a0f4030ec8c5a50"; } { 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"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "76e069c8938cc133576c934e4049fd4d8920d8a823122f1961d4ab69802e9e52e920873fc1406dbab01edebd0cc576ccb12df0ebbf5487ddd49c339111bf7101"; } { 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"; }
{ locale = "eo"; arch = "linux-i686"; sha512 = "ff071fd2545a8dfe0fbb1b1dae57d3fc4b0743698e54746da1f774b568b2b9ad9b0e14e2cd27f56031e1d159a05ae7d54060509532a7503b3dcc7fffa442a514"; } { 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"; }
{ locale = "eo"; arch = "linux-x86_64"; sha512 = "7705efee2c65de30a0efc6ea0c372061f47c4266ab7faeb6feb01bfde4324ac92ed99a9eab81d8c4e2e6972245953a200c4331b26845eb7a2f9e048fb3023840"; } { 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"; }
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "3c08ab10d76650fd11ecd9616af1d4646fabdc55b63c7625940630f8aa25427482a3ff04052b91e6aceac708ca187552f7c87343d08c01cc1b4940e341e1672b"; } { 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"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "b6d700123f612b93b952f05bfa92dceed8878ad20a84214f8daab63e4eb669f1f69a9a5d6d28896b16b19d3dbd710b98a4851d7f611bea0fd79e41930c3d838e"; } { 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"; }
{ locale = "es-CL"; arch = "linux-i686"; sha512 = "7c64c7f7058b1cb3bd5f55b1afa0bc2e779d46d05e5dd354fac7573ad6245ba31aa126301d827ffd17f197b460be24c98ad7c2a9a3d4c66cb6189618a4e38ebe"; } { 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"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dcc4b4085fd4e480e79ca85b862c421f6e85d200d46b40178ce27177c1ac00f0d19d0c71ae3d7c12e15bf570cd0234743d080d06dae1e9e3c0c2f0eccf4bdf86"; } { 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"; }
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "d049bada399fbc723ceb14aa116b9218d14729cca6a2297d852782e4d3a0cc7e278aecc62ec4b7f1e1c5af10f65d0cd0bd39e6fbf95d989ce4d2ea5b0e2f7901"; } { 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"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "a77978f8af7f932151468c9e002731c8b6b3e9d3d8d8dfdcf28cc545b63f1d859b99c6dd25c547201b050f58bde9a55fc67b8134ecb0c893ce50f7788774fe99"; } { 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"; }
{ locale = "es-MX"; arch = "linux-i686"; sha512 = "46a7bc0f112f99ffc218e0161116b373c5b496e8d73744f9ed341fcd0fece5bc4618bcaebd68cb0aa80bf86078163d92205d322464dd8a918463507e4a9bde9d"; } { 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"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha512 = "412f52d4eaf3f85cd452d18164d2ce13d3057b45bd4f81ef2255a3580bb5b7e68f23dfc8622dbe3c4d69291b1fbb4a3312a429713b940b081415157fe5dc849c"; } { 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"; }
{ locale = "et"; arch = "linux-i686"; sha512 = "34d56c20cd06f224d1a3916a12bfd3f076a1659d9bf21aacacd5bea59e789ff496600b712a12f0b67410da97e0500d2f28f1f916872bd223f9f3b913ac648552"; } { 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"; }
{ locale = "et"; arch = "linux-x86_64"; sha512 = "383a4e2b28217651e76a06dd84eed5f058bf53c25847a6ef0ad1ea9e6a3c98f6a94ef05999a92f03f669e7cea0df11654b201c4e21fc595fcf99bc91b90c05df"; } { 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"; }
{ locale = "eu"; arch = "linux-i686"; sha512 = "cae20dc1b9880dcd9ecf4331bf1b6c6208a63ee3490ac8b827c9e338916a9d07e447f93be4108db78ce3cc96b8d3828f1882c28aaf28f198fa4f875035ca5835"; } { 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"; }
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "38ff3155783328b685c72f1ada0e01ab8a8fb75b191455dd43de590207f9b3a258da7cca6ecd3538a7d8319c8d1372e174fea0a22baecb497ca33aaff80a33d2"; } { 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"; }
{ locale = "fa"; arch = "linux-i686"; sha512 = "6d4d15e4897568d32128f193fa7bb413e63cb2bca23b81a16cb5b9ae7a558b768193461a182552da1153dfb708f834434a1fb63478cb5fe7984b91d00415ea34"; } { 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"; }
{ locale = "fa"; arch = "linux-x86_64"; sha512 = "6439f27cec2a8af66a4e68406c88b536c5f8e2b0202ce82aa46e75f840cb3977ddb041d8ee315d95505ebaa0e37b36afbf26ea0f39310cda09f6e765eb7bb120"; } { 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"; }
{ locale = "ff"; arch = "linux-i686"; sha512 = "ee9114fe358d9a6dcb7e404f13fc594de9339fc7ad126063b52548d42aaedac7abbce9e647766462de2716c3ad248b6992dc04e96ea3816068e884c30a3bcf84"; } { 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"; }
{ locale = "ff"; arch = "linux-x86_64"; sha512 = "beae2223a6b3aa555c071b51a46d3b0758efa53b6002f2486554f5bec154cfc1a1598f0175af654fc47a60a170eda916152e959a5ce2f799b779e5040ae15c5e"; } { 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"; }
{ locale = "fi"; arch = "linux-i686"; sha512 = "d8414f63f04a5a9c916487f93c67d2368bb4d8c8fb757c1d58233e6c6e6bde139f323b1c77dda57730173c6005b2647c688f7072ac09c1962b04a2493cdfa18b"; } { 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"; }
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "7e0fce63b69653fa5d0d0ffa9598d10976a1f49aeeb48bcd8eee26b51ca1f6d1d898c84944a442d530abcab700dcfdf89c48ca23db9d835c877388a8f694b7ea"; } { 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"; }
{ locale = "fr"; arch = "linux-i686"; sha512 = "c3bfda75397d644bc4392ef87f1d24faa033f4c5672adc4d5d0007d5fbd63efd7f46a2febd0bfdf95d8f06152d274daf39ef6355e049e7fd5e53e2d750d03ae0"; } { 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"; }
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "81c8091c9d8cc1ede738bb1d9b4fe72580d13de7e3f89410d1c684ca017ee197837788e63243c9722b30e23b2c910cb54fc7985f4936bc6068643a504d9a4ebd"; } { 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"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "59797af1d76fb2afceb06de28c6fd13bdbc14d42c61f87f1f71d8273e03aa691e2ade3ba0361d19721862878c911ec46ffbfd0431d19d6ec0a92ebac05cfb4c4"; } { 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"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "19d0cfb01374bf2842a17ef4e9f5ab85280c1090723c1657459a230262d22aeb14c2faee1b86ac0b342c5926cbbf0479f2e1ec315117c06ad3272a3362d02f8c"; } { 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"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "c1a4fe00a36e95fcd33d21544ee6b4fa5a6eae0628a37c27057cc801a641fbe5519818ccc157b87b64f24f4886dd6dd629809c89b9c89dc4878de794e48b107d"; } { 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"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "8d9654ecf7b6cb43b4794f345105c779809b9bd39a9dd46a0fbb1920139e9234e7433fd9a8d7dd57192c738d187f97ab82c8dd3f3a2460e3a34cdc9e9a5c5089"; } { 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"; }
{ locale = "gd"; arch = "linux-i686"; sha512 = "0d48b2886c431a9237293f24fa5f8cc7104a3373b24c98e23bbf93f66aeeb5b8b9e737712bdd1c777db19bbd6b01f9a33f0c388b6af023d852cce6543d486973"; } { 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"; }
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "0339b6952f993d38686d92ac9a664cfa558f2827b92ae3464188f12e28e2676c8c4718cff62a840dba14de687434cf13902a621094f63e1bca1ebce321800d15"; } { 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"; }
{ locale = "gl"; arch = "linux-i686"; sha512 = "5cecaede8ebdfb58951b3f839388b81dccaaaa5d3b4fb5cbf26978b23cd962905191fa91d961037fa15000af47ab48042d272fd18a73e5ed4dcc2bb0ff4416ca"; } { 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"; }
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "d1a0447ce592e7d2a8564d9c27fbce5f9378a4e21db3fa501782e57b6e13ede6f42b612fffea32e8891d47010509ac8e3ed1f63c5a81878008f9bead68b6b750"; } { 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"; }
{ locale = "gn"; arch = "linux-i686"; sha512 = "aff2f407e4c947d3e34447b43e844135562d79bf937a05dad5ce4dd1853dd479f35b4f6af1b2d8b52deeb9786a4fc67980cbf58ad82a747a7e55ea753a50ad43"; } { 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"; }
{ locale = "gn"; arch = "linux-x86_64"; sha512 = "78645796fffe364fcd28b80cde591d88db91a756318f645610f6823b616222c0c53faf8d55aaf1703d4bbcec1e8381cee566bb5739ccfa181e1d1224408463de"; } { 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"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha512 = "331bc227d138a49d74cca37f8d7ba4e6eb891064357aa5b0606761f9af8cc4a029816a3a96cc3ac4dfb71b1d010c569940ebd70375fdd06af7b6b487bd90dafe"; } { 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"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "d1f6c5af9e75e76683d39281eb559ac688436eae65d6bc486763028744af030a6c311d1f0358ead5e88ead60357261032dd739251352cde097986251dfdff325"; } { 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"; }
{ locale = "he"; arch = "linux-i686"; sha512 = "7a49d8cabab6aa8480026de6b77e1b6d60333c580d2b9591cf3fdc8c491d269f6a7a7f93118594de8c87576dda868f12de5a88f494736f721ee3ddc16a9afea9"; } { 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"; }
{ locale = "he"; arch = "linux-x86_64"; sha512 = "0eed4301d7949415d21426d9e52825710a0f48a1a0a3546f62d757059091bf12b3b53091f2c3102de0682162e3982a9fb58c111c9a6b8245d84825892e1d6844"; } { 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"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha512 = "70ecabcdfee807b1a7e0b6a167bab07d3df798672a61bb7b80d1d6c3ace9385c472e08dd31f2c4c684cd5e723e7024016728df7b22943d3adec3d770ba7abd1b"; } { 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"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "11e8be059afa8298a23857bd68b2f895bb60f73378c513d2aae0395b5faed68123631d9ee44b5608263334269e33b76b4563c063b2feec486e7a2dac1be42275"; } { 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"; }
{ locale = "hr"; arch = "linux-i686"; sha512 = "2c99b81cb0c8413aa98dcbac2cbd45d59a440c173a9cd744b78ee0d60b82ec4fe4894fe5e313d51b81caf6b86f40effdb36f5fd90c73cab82acf97c20fb5b152"; } { 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"; }
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "fc209d82cbc24eea777a4318f5555d2cea4828bb7f305f868b8fca18014ea7c930f778c716eb0b9c1a7e29d9a4353b4c537900f9d659c432d6a75b1eebf30963"; } { 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"; }
{ locale = "hsb"; arch = "linux-i686"; sha512 = "3232380f15a33f31f8e3755707231ba0725b9afdae1d2a0d4fb2eb883ab4dcb5c8aee75549e41e7e2cdf445b6f39331b2be4d7e417604987c7ced46d2dd5dc51"; } { 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"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "11bb460c404316c322e2498986ac6e7cb976a196de7208ee54dcd4ec61b8f05fa8f7782d6cf462cd5531f3137b1688b7797da2d78437e3c4d4f95867c781953c"; } { 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"; }
{ locale = "hu"; arch = "linux-i686"; sha512 = "40c3837c7ca4e0dc9e97e4c4422e54cc3ef157933ce9969abf71fd422fbcad517a6f6da3bcada83d3567323e83248a060fccc8a23a7f6fb55568a5b7ee0ff464"; } { 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"; }
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "d05bdf14ed9c72031a29e7e9b39afe79bd2ccdc69bafaf8c6196081d462b0aa57a220a8a2105812b215067494c53de8adc994fbbb3549ccfcadfc15f99c710ac"; } { 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"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "a9da495cc3e7a1e89ca8dd7a3db6c83529e0b7ba6562e7f0542f8b9c93bee8e4c219973b0b6fda1abd046d933fca718fab1f6bd4350ee960ddd89144dd321ed6"; } { 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"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "53db4843e0c9e99188e28bbe46b09239d998a3bae35ab79954bc6eedc5e73c0f3010c500dbb93f8a6ee2d5b22fb3ee9fef9ef6eef2dbbadf4b83f948282a8bc3"; } { 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"; }
{ locale = "id"; arch = "linux-i686"; sha512 = "05e7450a164c940e43ce34f6b7c9ad610d1652f11b0f030dfea7c9d8539961b2f3e69ab0d3b8d714725cf3e8bb256f18f4ac3613bc86bbf6223d9914e4eb77f3"; } { 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"; }
{ locale = "id"; arch = "linux-x86_64"; sha512 = "7ce0b880406dfbef90ca6ae6f121eaf72bd289e7b57f7686ea83fc182cb9b54a3e0bd8b23bffbcfb3c9e82a6b13c7afa16ce56d426f33f66072db4b5f466db04"; } { 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"; }
{ locale = "is"; arch = "linux-i686"; sha512 = "71446911d5142ab19308aca456dcc1d4d087db07898e331604230faa58c2146b980212880c7f88b6e3770b303a8450cff9e447638b5a063daf50ec25d29de738"; } { 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"; }
{ locale = "is"; arch = "linux-x86_64"; sha512 = "2542f214cb2474eab97d18a1daffb1181fff569058b91c1c9d7d6400b8401020b69ea9492fca55153c904289be45215b37ed0846d563f8f06ba401c482d59762"; } { 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"; }
{ locale = "it"; arch = "linux-i686"; sha512 = "bdf0da50be211492e2acdd9de223ef741fa916c54e94bf9c8eb20685006b68b5f430949161199a915c368d11143caf828c25b2e82c33fd5a61bfcd05de53966e"; } { 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"; }
{ locale = "it"; arch = "linux-x86_64"; sha512 = "a4562fdcac6d9ba96fc840498bbb381de6190158fea65c4809ea1ff3518181ed47b7c33bb772077975fd07c23a1e8700403cb6cc67c5fcb1c24e72563214f4bc"; } { 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"; }
{ locale = "ja"; arch = "linux-i686"; sha512 = "cc81a02282474928e7d2efc694761168db022ffcbf5ff32d92c21b90edfb194187dfb78f2eca4c42e60cfbba8ab6614c1c7b0359aaecafa47b1c9d3918327cee"; } { 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"; }
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "07cd92b7f9647f774b080cfcef828899144cb03472d70394be197c43732b164978e1d9ebc9212a47b58fdcc61f5009328e766f4c6f799f35d73a4dcd2b31fdd4"; } { 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"; }
{ locale = "kk"; arch = "linux-i686"; sha512 = "1bef31c35180ad7fd49ab695a6985d8be301a6802225d319e979b8c716e78a5687753b6f63516f4b4221c402a2d2c8c0a0e22aec9023cdee98d71a4335728e7a"; } { 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"; }
{ locale = "kk"; arch = "linux-x86_64"; sha512 = "dff599278a27fe2b4efbcc99b7ad3b211ef5debbf1b95d765a36fdbdbaebff69936c250018f237843481244e2b02cb8de4e3090d9422adcbb3d8af4239759269"; } { 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"; }
{ locale = "km"; arch = "linux-i686"; sha512 = "0080783187b80019cb4c56e2b30a1a403c632defc375adab7d613489fbf7f217a22a779f0119e2810ee9f0bd024418ffc654df146873a06f59bc7f1de5fbf244"; } { 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"; }
{ locale = "km"; arch = "linux-x86_64"; sha512 = "84d1ca7fd0a4d6a39aff375e922dcdcbe51fb2b497c6eebc312abe6cb5b29bd049e648197f0181bb2ee1b47b43275c14eb13233958c0bd4f7cf7b28e5725de97"; } { 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"; }
{ locale = "kn"; arch = "linux-i686"; sha512 = "2dac35157e3264547726ad33f786bd86e52a4db8aa8d1449cdfa9993e5bc16556c6005e06cee915e427e74b3eb4eed665a4a6deed7bf3800a95319346fda3690"; } { 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"; }
{ locale = "kn"; arch = "linux-x86_64"; sha512 = "175b3edf58286a229ab4045ca2d75f8a00e8ddcac532fbfc8aee5a048e0ae0cd5044155a8619d6dc53756150bce2d46b910e1abe216bf537d259435199cb42cd"; } { 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"; }
{ locale = "ko"; arch = "linux-i686"; sha512 = "1db17eaf47e7916366d05021d683c2b4d8f26316abc057a450d24a5d19fa1ed9aaad2f7a45cee63c0f021d93214b62a032d17312cdb123289b31dd2e5bd43808"; } { 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"; }
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "4bc673e54fb0c30b7c8389c2a66b322bd4b19e8635cb3d633754214c0726fb95d3194d09435bb4afca17e6cb3f03f028408d13f9ed44d8c2b9c323eabe5101e9"; } { 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"; }
{ locale = "lij"; arch = "linux-i686"; sha512 = "8349ba8cf921d73f0c3bd54c9a30df9c0232d7686724a0d635435d65a6bc8baa1915e25702b930cbefe954b5aedd1d3faeaf54ffa9b5dc494e465a635a57369e"; } { 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"; }
{ locale = "lij"; arch = "linux-x86_64"; sha512 = "e12597062c060dabaff08c251f82ad63f534c341d1afa94e567c763b7ac290cbb03a27726e03b449ff89fe8b86b25211e807ef7ba34e876d902705f9361d5cdc"; } { 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"; }
{ locale = "lt"; arch = "linux-i686"; sha512 = "f67ff28a20ae0580aa537797928bf84cdc088cc0df586071a460eda6ea7b96337a5004b2689688a487ed246b5d83a14bf77a5002f39fe7ccc46e92f65b565cf1"; } { 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"; }
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "f4ffb37c69b9c69e9ea54d691bfa3c069b28d5b1b0b48b917f4c6f10c1434bb451b7c17e777b5daf3c869eeefb2a064264bba7591f681d319fcab00335b37384"; } { 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"; }
{ locale = "lv"; arch = "linux-i686"; sha512 = "7efe759ef2f0e585a8887e829e2bdf917209efd5b3d5235f5765c0995206c25941abed9b11f9241da565a919f94890682a944d2bb7dd1d1360f67f173dcf2852"; } { 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"; }
{ locale = "lv"; arch = "linux-x86_64"; sha512 = "63cdba3ea94fb1847913a42ba70193ebfbbf1235a28881c7d671b20dc8272c5989dcb8290087a0862cea7a4c8ff448ee61b42a13d6c03c8787be1dbd957769f1"; } { 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"; }
{ locale = "mai"; arch = "linux-i686"; sha512 = "0619cde7ad13590d2da001fdf87e2fe9772d65d1ce468ea2b1f3085d8c6c157f48d23b343e6886969dde5827d12a368e208242dd16df4e498893d53f030665d7"; } { 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"; }
{ locale = "mai"; arch = "linux-x86_64"; sha512 = "f65ab5c51b7dd0f127a4b9f65a0280002af3387b12e8730f8efd79f4700f6c5f5842e3f634dd738571995dfa52ef58ec0d68255ceb52c6a7df0332797dfab253"; } { 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"; }
{ locale = "mk"; arch = "linux-i686"; sha512 = "e6d2bf183fc1fa88d0bbccbf058344e8dada0271694ba3bfc149e965ff16ec05ba6f7a04cc39f3657524555e84f25d072d7922fb2c075b0bbb8cd933336f1d94"; } { 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"; }
{ locale = "mk"; arch = "linux-x86_64"; sha512 = "68a96a11e38944d654d1aa720b5a099fd0789520b8681f15cf33d972956e7dd2c44d940ea0b2840c48db79615aed8c83d3f19769908752f960f84a7bdcf3a2ab"; } { 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"; }
{ locale = "ml"; arch = "linux-i686"; sha512 = "32c8e00f71a7fa609c3b99799f64362962d245d75865ce54fcd72e8cefc45f5cec7a99ed343a7bd92614569e62a02ac0e712b4ca3fce3d5d0f2f7ad52767c209"; } { 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"; }
{ locale = "ml"; arch = "linux-x86_64"; sha512 = "c641244006a11de3b6ae947f2d5bf8b40fd4bcde8e7b71d2fa2a8258087bf3d6382f21b10b05b2554f031ee95a579d31d0e0d8f1b72a5e1101acb31075aee02c"; } { 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"; }
{ locale = "mr"; arch = "linux-i686"; sha512 = "3949d3e4d9fa507c50f5ca92ee9cb041dc9d034f78d44343139a1576f128a06d8ef3aa2b1fcfe11d77a7489b0f7dd18e14f0ec0fff595dbefc219f6b1eadd969"; } { 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"; }
{ locale = "mr"; arch = "linux-x86_64"; sha512 = "c323cf8842f695e47f3c91d356ff63bb0ce7a5cf47cbe874dc6956d90fd84f6330e6e1f5f0bbf61e2cfda66a2dd0e81a756f3b464108e7ad84450722562e5906"; } { 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"; }
{ locale = "ms"; arch = "linux-i686"; sha512 = "f5ded01c47ac91d506a10774b198b3c2fdcff35a10ced17cd0cd94a1e367d489f2afe7ae22d59beb420f771684cefe3724c88313249a4c6072ce68f36bb16cbf"; } { 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"; }
{ locale = "ms"; arch = "linux-x86_64"; sha512 = "39d4a052c21fe9ee876f8b8a7fabeae9a6a30d959e1a7b27b0a1fd08658cac5959aa4879e3056675e2b7de83f588cf82f5d138f2ee5d9b0bbd135b51de109f7b"; } { 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"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "6cc34cda3cccb3ce92f44244e291dc94238292ef6e91172d73659ca5b4b46fd004483680a7a45ad3643d59c57c7fe7bf4286f4cf7c903301eb39712db9bd3583"; } { 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"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "da645c69d2675bdd1d2808f0d7446ded4414311bffe5f1a37a685f6f4338a56e831349a1a7904c0332266e909e4e82085585afb14b3fda7925698d66e9912a65"; } { 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"; }
{ locale = "nl"; arch = "linux-i686"; sha512 = "a2d906caf6b4c36305cbcd2840915000c53db2ac03122aca162e672014b217237363bc309cdee5ec19d21106073044fe8668fd044805161bf4916cdd938565ed"; } { 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"; }
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "6288c2f0306aacd87a82a3a6262b514f32a177674e6b96eeb5a8f937ee36b6573d8a3e6925be87609e4d7dabd1e6367eb0e730d87148cd50c1572756bb098a5a"; } { 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"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "04454f9f5dd2611cc76575a41d56f6819c5b97e213f82ebf0aa5e8393d9cd4a99a9df5291d3e3c3985396a99559f39fe5dc6a85141ac1d2f4919b731d7539a89"; } { 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"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "fb55685275d0b6c9e47b0356bd4249feeb3005b338d2a2caea4bb7b86edc6991752af9276db91f448032ba7d9e01209d92706f7612531232f87c05cbcb13f337"; } { 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"; }
{ locale = "or"; arch = "linux-i686"; sha512 = "16639bc10229e171577abfeab841bd7b5dc411f4e314335787727803a486b8f04e8730a7be9321172fdd60791fce7363d5ce5aa28628cc4d2b7769357737cd0a"; } { 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"; }
{ locale = "or"; arch = "linux-x86_64"; sha512 = "041f3a63a4cd9c0f287132252df7aa6d7eedc72650244729e01eb52a93a9ca8206a11cd7783e7778d4cad9a525ce2aef1c423840ea5c54fa202600a0b5805e31"; } { 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"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "7c9cda0d9dd9d1196ca33a58b6f5f3c3f09896bf65e8fbeed67fd9811cb1bdc12b7ca8966b7612cad524a3bcc9dd1e2678627f6cfe172b1bfc2d9b64eaac17cc"; } { 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"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "56507e7e1e93ae880de5410b4ad8c1302f58b43ade2ee4dc70c1290334edf2ea05f7ddf2ca00317ee33662de29c635caad8f73332935fd5bd4ff6a37758bd195"; } { 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"; }
{ locale = "pl"; arch = "linux-i686"; sha512 = "52cb7e700e541a82328c935a0a99313dad6b7699c09a1386697c77544284d53653705ec6d57f3cc1bec632962217c090ee39687a81b19f3a3af2178eba9a1eae"; } { 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"; }
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "77a99740ad99808a31df3e71038944901fc0d5339f919cce40389de67baeecf2b9c34608194ea1f0e4a25bbaed0ba06159d10ac8816735b34a2e28ab041ae97b"; } { 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"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "e39d9b22f8b7226ff2908b34847fb77cbe0c834f51985712024de83ece7549c8a89c3ab3d81abb6bfe6a7b21f18dee2d87926abf3d2edf9f8a8976242a4dcb26"; } { 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"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "a03a0e37ecc2d903715b70eec0a4b2808a913a8e27398dd96206295e1e765283e97b76ba278b394f9629e352c10cdb2011f3184b903d0e6de784a13abfcf9668"; } { 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"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "2d511400948ce05358b9400752bba41cbd947d1a4a5a5a92f982830db92507e257c28ae319f411717253dd53a1a7e73607f9f62fb7b7c8666aa339fdc73ce728"; } { 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"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71e2a000333ae8565de6fc9d01e871c2e894f96a9a2544a21aac08ccea0399da37d74c3230c4b3cb7ba0231fcdddaa417f78e48848fda8f063179766cb675038"; } { 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"; }
{ locale = "rm"; arch = "linux-i686"; sha512 = "4337964e6daa7bc799f01aa52a33f04c060288bbb881c2321ef938658b57f05b632f734ea0564cddd0078f4b38d1c8cb2c2e6221849ca4aa80579f308fdc2056"; } { 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"; }
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "a55e250de5e11ef808243ef974fac8938c70269a36bcf9db898a11997722b8d96d60d76ca28e41e023b4c7e6614e323479d3d4d2831b83655ad3ae3eb5ed774c"; } { 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"; }
{ locale = "ro"; arch = "linux-i686"; sha512 = "17171889ac7647e525783c96afa5a5de796d603c8fa6a7ad8d12205ad510f869b35f0df79aaa04e4b980c86ceb923f89936499df7e55539393e40ac92c23bb1d"; } { 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"; }
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "721912e5ad4b0ad0727f0185f660351b3c59291b3a22aa394f01c26ee87366b43b5aa08cdfc164c16117e1650837bc2007e42c34756dc26466edbb113f11fc09"; } { 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"; }
{ locale = "ru"; arch = "linux-i686"; sha512 = "28dafdbe6ae4fdabc061c68ca82dc6ab8fc463da11c712500378d90dfb662d6e0991f35a918315ce138603283befcee182092ac4f8d348815bef27431252874b"; } { 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"; }
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "27bbd48859f5ed6053a2062778537f4952a0847ff74d2dd407766ef4b4f144903167b4fe80b98a5b2b80e42d6b730bdfed36fe9a958d247a335bf31f091b8c70"; } { 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"; }
{ locale = "si"; arch = "linux-i686"; sha512 = "0f50616131a3b80499885ed5fb8573fd3ebe522cc893496d03e48ac6eafbc2a5224240971b66c393323d2583512dacb73f3201eef1a495298badad605cc76bb3"; } { 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"; }
{ locale = "si"; arch = "linux-x86_64"; sha512 = "37996cbc994a7527c2ffc5143dfe970ae2fe0e098f0bcbf9fd4643e8297bddbe7fc0f4af2f2ee15b0807c339c25d780040e2f9f03975ba9f49359052a2be271e"; } { 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"; }
{ locale = "sk"; arch = "linux-i686"; sha512 = "db95ce3b68fdfdfc9916cfbfa6a797370ddf58f5aa234d59bde6e76cf7fc0e821e9954cd0ce090404f5f718b9ede9c1ae6b9c7e37db9e64eb9d9dcfd975c6a79"; } { 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"; }
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "f9e28572c83e70c7658fd67abce93d021600fcf6b8daa7861cb6eff315a28c0e531f1082f6c25f5779371b2884c975fbc22cb953aaf589ba6b050bc736d25d9f"; } { 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"; }
{ locale = "sl"; arch = "linux-i686"; sha512 = "e40c201c5e892a83a23ac9f1af22e9274bf6d964b39bae2e191bdac100170685376fa81210ddca38c76e5277978772c693563e55871318777cca7ac7e47fd1f3"; } { 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"; }
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "ea4a198b300e2fbb23fdf863659b683b772624cf4f6c2c3e5e07af9a3f991a8fdf7113f852646f36f697c705c3a6f24485dcb8e2d615a3a358bfdfca406254a0"; } { 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"; }
{ locale = "son"; arch = "linux-i686"; sha512 = "b510efeafff8c32ef3b7f88e81d4c1a1c1b2bb435c2ed4ad69adbef8f5d374677e2231f94700cdbff9e5f747c712d8f58245a4c8f0d38ac3eebb5adcdc42c7ae"; } { 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"; }
{ locale = "son"; arch = "linux-x86_64"; sha512 = "8c8d583e7e5ef1363096c905535c8e6dd63900ee50684d9cd36b4e55100930b8fc8ee9a3ae770128cfc71a30a73f331cc508555ecdfd3fbbf359ad08d5cc9519"; } { 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"; }
{ locale = "sq"; arch = "linux-i686"; sha512 = "809ec8706df6f3538e3c53765a1f1834cee3d2d9cffbfb1f3e991faeedaca28a2dc3d4e037ed9e00d58ac6cdb27f5575bdafdc454828d9fa988d7764bca88c0c"; } { 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"; }
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "6f2c5778d40e9bc5bb558ac626becfcbe33c42e2a2e588ee59065f60643708ff83be55a082b383f7747241ad8d59c0e3e13bc8556967f5fce034ee23d7f054f8"; } { 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"; }
{ locale = "sr"; arch = "linux-i686"; sha512 = "cc0e0c039af32611d489bf082dba5ba971b54b22937d4b8fa80150a560a3c452851e67d02f7cb27e1a63229c9a42da449f932cdb88af342e0146022586de109c"; } { 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"; }
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "21928411981e8d3fac5e44f02173a08ad4c3135ec874998d6ddf5ef2821226ffee260023e5bb45848a40db19537b1d6cc0b127d9524c0d0616d80618ab1d9228"; } { 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"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "cddd222328f1099c25591b03abe23692fdccc82405df127ff920818fb7952fe384fc1373b1330b971d196e98acd62b3754711b38876050ec3cce7de20f183b79"; } { 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"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "06c819436de292d531a9d3df34b76bad36bb627e0e45ca042f2dafb06db14cc23e956dc2e00904d5147bf7d0b39c16f712f2b8acb1d9bc4daa210d56d8058e22"; } { 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"; }
{ locale = "ta"; arch = "linux-i686"; sha512 = "5e8560e423aa88c1fc5b61cf91c558a861a58d09d7e560790ba835f0bbae85cc82c61e1eb9e1a92e632d2fe24419d3eecec4a15bb083bf0c1568a441a5586a50"; } { 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"; }
{ locale = "ta"; arch = "linux-x86_64"; sha512 = "6ba48474d930036d77d23b717fd2e592b19d0ab2b4399f7a6f7bd36da48cc0a2dea9c25442928c507cdfe8a8f37a8d0e4ddb94da42a7a3d6c2ecba26d4f7dd2f"; } { 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"; }
{ locale = "te"; arch = "linux-i686"; sha512 = "2df2a46677c979b8702700c69f687e8bfa49e879ccd9204a1ca876b7a5f8925abfe6f81f42e6d6576aff6cea264cced854ae536a3cc01ed04b7a536396e9ff33"; } { 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"; }
{ locale = "te"; arch = "linux-x86_64"; sha512 = "d6c7bdb7a823be0cbe8286b977cc265e80ae290ae8fc4002a7dc71eddb3b80a3796e66ad1e00fe2e797ae83272422f460defa86322dea8e33ad0d7dfb50491de"; } { 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"; }
{ locale = "th"; arch = "linux-i686"; sha512 = "eb017475d187ef4f1329d303bde84a17995ed84458923330c2ef61940c86674c03f06de2e3655885df49cdc384d1b8e952dfe8ce960cec738f99b8853af1e018"; } { 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"; }
{ locale = "th"; arch = "linux-x86_64"; sha512 = "cca6fe63bf24ca1db9d736305dff312f334cbe0a836cb181fdde85c4b2e383e1a19135f441a1f07c69cce716a4c2d3fe42a07fe3c91146aa6598d651890ff049"; } { 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"; }
{ locale = "tr"; arch = "linux-i686"; sha512 = "98aa598f348be7705c11834f6d174fa19a8408b87193a93f641c4fe92898f3175f79a1bef9c66dc93c3cc19a372930725025d7ff1bf178e951c9d5dfd675ff36"; } { 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"; }
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "a4c2d82f7e56e413526cbe40eb24df79ea264b37dc09b470ccf3416c922730d714ad166507f06b6a68fc85ff73df73309da936ff56499cdf81b78fc973675c86"; } { 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"; }
{ locale = "uk"; arch = "linux-i686"; sha512 = "cc04ead20aa1f6d3a8ac470ed3fc69ac0d348ab0523308ae56b49734785fd63bae4ac6fcc32bcac3f2e9350ebfefe76fa39efc2a7a7f5d7c2309b6999f490e90"; } { 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"; }
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "1f29246b8bd1a4e07af7b30c2ffcb5239ee5f870e529227e96c0ef091cf9d9d8783891b2e60b0a5dee10e80893ddc6a5cb972d27e70ae4cd0f820ba9f60a2165"; } { 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"; }
{ locale = "uz"; arch = "linux-i686"; sha512 = "d144626529e57e93ea12ddca25184903b78b878563302c7f14a396435187791d2a14482a7d10bb569890d9483253474634574f105b9c79763ad6a85fb10de73d"; } { 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"; }
{ locale = "uz"; arch = "linux-x86_64"; sha512 = "4e6b7706c6f529739a18748f35d7e31071c6818c0f83261e1d31e66306fb40ac94573f7ebe3b811f4c70f88a2bbca29528b868821962e88ba30dbf84039c5ea1"; } { 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"; }
{ locale = "vi"; arch = "linux-i686"; sha512 = "fc7144a73551e09196b7c79e4fcf1ecf5ad92b3e54e8a203e213627133df0260dc53f0cc9bb9e03ccae0953de5f2752e303a35e0fdb720a40637e5b31edd3544"; } { 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"; }
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "7a38b4814418516c8971825616874782512bf91d51a798fbdb1b8d8a817d30e72d9fde45238602a6de9cb9c53cd0512acb07f6e16a819ce24fba6467ab1cc8b2"; } { 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"; }
{ locale = "xh"; arch = "linux-i686"; sha512 = "0fe791a3270343598417b093476fc7eb50628a7557c56294b3222e657c62a2b5ce7988243d75ae08f7a11c2b9e437d01d47258b1ac93c2579638ac67e12c4d78"; } { 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"; }
{ locale = "xh"; arch = "linux-x86_64"; sha512 = "f797c52d88b62aaff15419baf5d7c5b2a44909674602ca82c295120b4b0fcb7182a36952f7adeaf7e9878b3d21031e990d22e5f8dcbc5421a3d587ba37f63906"; } { 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"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "970c14e1f105d6092fd542d73db57260836bf249aee99ab53f43882cb6327520905b7a452e96a6c142676794bf22e13c80e86291bb5b6dcaa09d0d9bb376d4be"; } { 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"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "b811f9d359fb61674781443d71e961ba687fecbe4904622b6ac410e435e31b6118f30726896021d28ae51628ab95092b28181ca0ae471374c0cbc5a740fea496"; } { 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"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "43f8d6e9cdf5815365e0eb1516ccb5f6c7ac7e19c10d1ee45ee367d721bf1944321879d9966f7000f50d324f14c36f9f8fcd9bb43ef20c780ba39d3c138f2192"; } { 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"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "02f4910b3c5b6f75e2f19c03452ce0534980be7ff18abed8be2a2f9af19c6eee5928c493e618b00d167bb3b2d7e60724741a2f4de1df9b1e48a05923a7649cef"; } { 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