Merge branch 'master' into staging

Hydra nixpkgs: ?compare=1279790
This commit is contained in:
Vladimír Čunát 2016-06-19 12:33:04 +02:00
commit e757404555
614 changed files with 55697 additions and 27124 deletions

View file

@ -171,42 +171,18 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
<section xml:id="sec-fhs-environments">
<title>buildFHSChrootEnv/buildFHSUserEnv</title>
<title>buildFHSUserEnv</title>
<para>
<function>buildFHSChrootEnv</function> and
<function>buildFHSUserEnv</function> provide a way to build and run
FHS-compatible lightweight sandboxes. They get their own isolated root with
binded <filename>/nix/store</filename>, so their footprint in terms of disk
<function>buildFHSUserEnv</function> provides a way to build and run
FHS-compatible lightweight sandboxes. It creates an isolated root with
bound <filename>/nix/store</filename>, so its footprint in terms of disk
space needed is quite small. This allows one to run software which is hard or
unfeasible to patch for NixOS -- 3rd-party source trees with FHS assumptions,
games distributed as tarballs, software with integrity checking and/or external
self-updated binaries.
</para>
<para>
<function>buildFHSChrootEnv</function> allows to create persistent
environments, which can be constructed, deconstructed and entered by
multiple users at once. A downside is that it requires
<literal>root</literal> access for both those who create and destroy and
those who enter it. It can be useful to create environments for daemons that
one can enter and observe.
</para>
<para>
<function>buildFHSUserEnv</function> uses Linux namespaces feature to create
self-updated binaries. It uses Linux namespaces feature to create
temporary lightweight environments which are destroyed after all child
processes exit. It does not require root access, and can be useful to create
sandboxes and wrap applications.
</para>
<para>
Those functions both rely on <function>buildFHSEnv</function>, which creates
an actual directory structure given a list of necessary packages and extra
build commands.
<function>buildFHSChrootEnv</function> and <function>buildFHSUserEnv</function>
both accept those arguments which are passed to
<function>buildFHSEnv</function>:
processes exit, without root user rights requirement. Accepted arguments are:
</para>
<variablelist>
@ -220,14 +196,16 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
<term><literal>targetPkgs</literal></term>
<listitem><para>Packages to be installed for the main host's architecture
(i.e. x86_64 on x86_64 installations).</para></listitem>
(i.e. x86_64 on x86_64 installations). Along with libraries binaries are also
installed.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>multiPkgs</literal></term>
<listitem><para>Packages to be installed for all architectures supported by
a host (i.e. i686 and x86_64 on x86_64 installations).</para></listitem>
a host (i.e. i686 and x86_64 on x86_64 installations). Only libraries are
installed by default.</para></listitem>
</varlistentry>
<varlistentry>
@ -240,29 +218,33 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
<varlistentry>
<term><literal>extraBuildCommandsMulti</literal></term>
<listitem><para>Like <literal>extraBuildCommandsMulti</literal>, but
<listitem><para>Like <literal>extraBuildCommands</literal>, but
executed only on multilib architectures.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>extraOutputsToInstall</literal></term>
<listitem><para>Additional derivation outputs to be linked for both
target and multi-architecture packages.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>extraInstallCommands</literal></term>
<listitem><para>Additional commands to be executed for finalizing the
derivation with runner script.</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>runScript</literal></term>
<listitem><para>A command that would be executed inside the sandbox and
passed all the command line arguments. It defaults to
<literal>bash</literal>.</para></listitem>
</varlistentry>
</variablelist>
<para>
Additionally, <function>buildFHSUserEnv</function> accepts
<literal>runScript</literal> parameter, which is a command that would be
executed inside the sandbox and passed all the command line arguments. It
default to <literal>bash</literal>.
</para>
<para>
It also uses <literal>CHROOTENV_EXTRA_BINDS</literal> environment variable
for binding extra directories in the sandbox to outside places. The format of
the variable is <literal>/mnt=test-mnt:/data</literal>, where
<literal>/mnt</literal> would be mounted as <literal>/test-mnt</literal>
and <literal>/data</literal> would be mounted as <literal>/data</literal>.
<literal>extraBindMounts</literal> array argument to
<function>buildFHSUserEnv</function> function is prepended to this variable.
Latter entries take priority if defined several times -- i.e. in case of
<literal>/data=data1:/data=data2</literal> the actual bind path would be
<literal>/data2</literal>.
</para>
<para>
One can create a simple environment using a <literal>shell.nix</literal>
like that:

View file

@ -5,27 +5,29 @@
<title>Go</title>
<para>The function <varname>buildGoPackage</varname> builds
standard Go packages.
standard Go programs.
</para>
<example xml:id='ex-buildGoPackage'><title>buildGoPackage</title>
<programlisting>
net = buildGoPackage rec {
name = "go.net-${rev}";
goPackagePath = "golang.org/x/net"; <co xml:id='ex-buildGoPackage-1' />
subPackages = [ "ipv4" "ipv6" ]; <co xml:id='ex-buildGoPackage-2' />
rev = "e0403b4e005";
deis = buildGoPackage rec {
name = "deis-${version}";
version = "1.13.0";
goPackagePath = "github.com/deis/deis"; <co xml:id='ex-buildGoPackage-1' />
subPackages = [ "client" ]; <co xml:id='ex-buildGoPackage-2' />
src = fetchFromGitHub {
inherit rev;
owner = "golang";
repo = "net";
sha256 = "1g7cjzw4g4301a3yqpbk8n1d4s97sfby2aysl275x04g0zh8jxqp";
owner = "deis";
repo = "deis";
rev = "v${version}";
sha256 = "1qv9lxqx7m18029lj8cw3k7jngvxs4iciwrypdy0gd2nnghc68sw";
};
goPackageAliases = [ "code.google.com/p/go.net" ]; <co xml:id='ex-buildGoPackage-3' />
propagatedBuildInputs = [ goPackages.text ]; <co xml:id='ex-buildGoPackage-4' />
buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-5' />
disabled = isGo13;<co xml:id='ex-buildGoPackage-6' />
};
goDeps = ./deps.json; <co xml:id='ex-buildGoPackage-3' />
buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-4' />
}
</programlisting>
</example>
@ -47,50 +49,90 @@ the following arguments are of special significance to the function:
packages will be built.
</para>
<para>
In this example only <literal>code.google.com/p/go.net/ipv4</literal> and
<literal>code.google.com/p/go.net/ipv6</literal> will be built.
In this example only <literal>github.com/deis/deis/client</literal> will be built.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-3'>
<para>
<varname>goPackageAliases</varname> is a list of alternative import paths
that are valid for this library.
Packages that depend on this library will automatically rename
import paths that match any of the aliases to <literal>goPackagePath</literal>.
</para>
<para>
In this example imports will be renamed from
<literal>code.google.com/p/go.net</literal> to
<literal>golang.org/x/net</literal> in every package that depend on the
<literal>go.net</literal> library.
<varname>goDeps</varname> is where the Go dependencies of a Go program are listed
in a JSON format described below.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-4'>
<para>
<varname>propagatedBuildInputs</varname> is where the dependencies of a Go library are
listed. Only libraries should list <varname>propagatedBuildInputs</varname>. If a standalone
program is being built instead, use <varname>buildInputs</varname>. If a library's tests require
additional dependencies that are not propagated, they should be listed in <varname>buildInputs</varname>.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-5'>
<para>
<varname>buildFlags</varname> is a list of flags passed to the go build command.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-6'>
</calloutlist>
</para>
<para>The <varname>goDeps</varname> attribute should point to a JSON file that defines which Go libraries
are needed and should be included in <varname>GOPATH</varname> for <varname>buildPhase</varname>.
</para>
<example xml:id='ex-goDeps'><title>deps.json</title>
<programlisting>
[ <co xml:id='ex-goDeps-1' />
{
"goPackagePath": "gopkg.in/yaml.v2", <co xml:id='ex-goDeps-2' />
"fetch": {
"type": "git", <co xml:id='ex-goDeps-3' />
"url": "https://gopkg.in/yaml.v2",
"rev": "a83829b6f1293c91addabc89d0571c246397bbf4",
"sha256": "1m4dsmk90sbi17571h6pld44zxz7jc4lrnl4f27dpd1l8g5xvjhh"
}
},
{
"include": "../../libs.json", <co xml:id='ex-goDeps-4' />
"packages": [ <co xml:id='ex-goDeps-5' />
"github.com/docopt/docopt-go",
"golang.org/x/crypto",
]
}
]
</programlisting>
</example>
<para>
<calloutlist>
<callout arearefs='ex-goDeps-1'>
<para>
If <varname>disabled</varname> is <literal>true</literal>,
nix will refuse to build this package.
<varname>goDeps</varname> is a list of Go dependencies.
</para>
</callout>
<callout arearefs='ex-goDeps-2'>
<para>
In this example the package will not be built for go 1.3. The <literal>isGo13</literal>
is an utility function that returns <literal>true</literal> if go used to build the
package has version 1.3.x.
<varname>goPackagePath</varname> specifies Go package import path.
</para>
</callout>
<callout arearefs='ex-goDeps-3'>
<para>
<varname>fetch type</varname> that needs to be used to get package source. If <varname>git</varname>
is used there should be <varname>url</varname>, <varname>rev</varname> and <varname>sha256</varname>
defined next to it.
</para>
</callout>
<callout arearefs='ex-goDeps-4'>
<para>
<varname>include</varname> could be used to reuse <varname>goDeps</varname> between Go programs.
There is a common libs set in <varname>&lt;nixpkgs/pkgs/development/go-modules/libs.json&gt;</varname>
with pinned versions of many packages that you can reuse.
</para>
</callout>
<callout arearefs='ex-goDeps-5'>
<para>
<varname>packages</varname> enumerates all Go packages that will be imported from included file.
</para>
</callout>
@ -99,12 +141,21 @@ the following arguments are of special significance to the function:
</para>
<para>
Reusable Go libraries may be found in the <varname>goPackages</varname> set. You can test
build a Go package as follows:
<varname>buildGoPackage</varname> produces <xref linkend='chap-multiple-output' xrefstyle="select: title" />
where <varname>bin</varname> includes program binaries. You can test build a Go binary as follows:
<screen>
$ nix-build -A goPackages.net
</screen>
<screen>
$ nix-build -A deis.bin
</screen>
or build all outputs with:
<screen>
$ nix-build -A deis.all
</screen>
<varname>bin</varname> output will be installed by default with <varname>nix-env -i</varname>
or <varname>systemPackages</varname>.
</para>
@ -119,6 +170,7 @@ done
</screen>
</para>
<para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>.</para>
<para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>.
It can produce complete derivation and <varname>goDeps</varname> file for Go programs.</para>
</section>

View file

@ -378,6 +378,23 @@ special options turned on:
buildInputs = [ R zeromq zlib ];
}
You can select a particular GHC version to compile with by setting the
`ghc` attribute as an argument to `buildStackProject`. Better yet, let
Stack choose what GHC version it wants based on the snapshot specified
in `stack.yaml` (only works with Stack >= 1.1.3):
{nixpkgs ? import <nixpkgs> { }, ghc ? nixpkgs.ghc}
with nixpkgs;
let R = pkgs.R.override { enableStrictBarrier = true; };
in
haskell.lib.buildStackProject {
name = "HaskellR";
buildInputs = [ R zeromq zlib ];
inherit ghc;
}
[stack-nix-doc]: http://docs.haskellstack.org/en/stable/nix_integration.html
### How to create ad hoc environments for `nix-shell`
@ -636,7 +653,7 @@ then you have to download and re-install `foo` and all its dependents from
scratch:
# nix-store -q --referrers /nix/store/*-haskell-text-1.2.0.4 \
| xargs -L 1 nix-store --repair-path --option binary-caches http://hydra.nixos.org
| xargs -L 1 nix-store --repair-path
If you're using additional Hydra servers other than `hydra.nixos.org`, then it
might be necessary to purge the local caches that store data from those

View file

@ -532,6 +532,7 @@ All parameters from `mkDerivation` function are still supported.
* `makeWrapperArgs`: A list of strings. Arguments to be passed to `makeWrapper`, which wraps generated binaries. By default, the arguments to `makeWrapper` set `PATH` and `PYTHONPATH` environment variables before calling the binary. Additional arguments here can allow a developer to set environment variables which will be available when the binary is run. For example, `makeWrapperArgs = ["--set FOO BAR" "--set BAZ QUX"]`.
* `installFlags`: A list of strings. Arguments to be passed to `pip install`. To pass options to `python setup.py install`, use `--install-option`. E.g., `installFlags=["--install-option='--cpp_implementation'"].
* `format`: Format of the source. Options are `setup` for when the source has a `setup.py` and `setuptools` is used to build a wheel, and `wheel` in case the source is already a binary wheel. The default value is `setup`.
* `catchConflicts` If `true`, abort package build if a package name appears more than once in dependency tree. Default is `true`.
#### `buildPythonApplication` function

View file

@ -68,18 +68,7 @@ rec {
imap (i: v: "${v}-${toString i}") ["a" "b"]
=> [ "a-1" "b-2" ]
*/
imap =
if builtins ? genList then
f: list: genList (n: f (n + 1) (elemAt list n)) (length list)
else
f: list:
let
len = length list;
imap' = n:
if n == len
then []
else [ (f (n + 1) (elemAt list n)) ] ++ imap' (n + 1);
in imap' 0;
imap = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
/* Map and concatenate the result.
@ -216,17 +205,11 @@ rec {
range 3 2
=> [ ]
*/
range =
if builtins ? genList then
first: last:
if first > last
then []
else genList (n: first + n) (last - first + 1)
range = first: last:
if first > last then
[]
else
first: last:
if last < first
then []
else [first] ++ range (first + 1) last;
genList (n: first + n) (last - first + 1);
/* Splits the elements of a list in two lists, `right' and
`wrong', depending on the evaluation of a predicate.
@ -250,19 +233,9 @@ rec {
zipListsWith (a: b: a + b) ["h" "l"] ["e" "o"]
=> ["he" "lo"]
*/
zipListsWith =
if builtins ? genList then
f: fst: snd: genList (n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd))
else
f: fst: snd:
let
len = min (length fst) (length snd);
zipListsWith' = n:
if n != len then
[ (f (elemAt fst n) (elemAt snd n)) ]
++ zipListsWith' (n + 1)
else [];
in zipListsWith' 0;
zipListsWith = f: fst: snd:
genList
(n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd));
/* Merges two lists of the same size together. If the sizes aren't the same
the merging stops at the shortest.
@ -280,11 +253,8 @@ rec {
reverseList [ "b" "o" "j" ]
=> [ "j" "o" "b" ]
*/
reverseList =
if builtins ? genList then
xs: let l = length xs; in genList (n: elemAt xs (l - n - 1)) l
else
fold (e: acc: acc ++ [ e ]) [];
reverseList = xs:
let l = length xs; in genList (n: elemAt xs (l - n - 1)) l;
/* Sort a list based on a comparator function which compares two
elements and returns true if the first argument is strictly below
@ -320,19 +290,7 @@ rec {
take 2 [ ]
=> [ ]
*/
take =
if builtins ? genList then
count: sublist 0 count
else
count: list:
let
len = length list;
take' = n:
if n == len || n == count
then []
else
[ (elemAt list n) ] ++ take' (n + 1);
in take' 0;
take = count: sublist 0 count;
/* Remove the first (at most) N elements of a list.
@ -342,19 +300,7 @@ rec {
drop 2 [ ]
=> [ ]
*/
drop =
if builtins ? genList then
count: list: sublist count (length list) list
else
count: list:
let
len = length list;
drop' = n:
if n == -1 || n < count
then []
else
drop' (n - 1) ++ [ (elemAt list n) ];
in drop' (len - 1);
drop = count: list: sublist count (length list) list;
/* Return a list consisting of at most count elements of list,
starting at index start.

View file

@ -131,6 +131,7 @@
falsifian = "James Cook <james.cook@utoronto.ca>";
flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
fluffynukeit = "Daniel Austin <dan@fluffynukeit.com>";
fmthoma = "Franz Thoma <f.m.thoma@googlemail.com>";
forkk = "Andrew Okin <forkk@forkk.net>";
fornever = "Friedrich von Never <friedrich@fornever.me>";
fpletz = "Franz Pletz <fpletz@fnordicwalking.de>";
@ -241,6 +242,7 @@
meisternu = "Matt Miemiec <meister@krutt.org>";
michaelpj = "Michael Peyton Jones <michaelpj@gmail.com>";
michelk = "Michel Kuhlmann <michel@kuhlmanns.info>";
mimadrid = "Miguel Madrid <mimadrid@ucm.es>";
mingchuan = "Ming Chuan <ming@culpring.com>";
mirdhyn = "Merlin Gaillard <mirdhyn@gmail.com>";
mirrexagon = "Andrew Abbott <mirrexagon@mirrexagon.com>";
@ -281,6 +283,7 @@
pakhfn = "Fedor Pakhomov <pakhfn@gmail.com>";
palo = "Ingolf Wanger <palipalo9@googlemail.com>";
pashev = "Igor Pashev <pashev.igor@gmail.com>";
pawelpacana = "Paweł Pacana <pawel.pacana@gmail.com>";
pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>";
peterhoeg = "Peter Hoeg <peter@hoeg.com>";
peti = "Peter Simons <simons@cryp.to>";
@ -356,6 +359,7 @@
spinus = "Tomasz Czyż <tomasz.czyz@gmail.com>";
sprock = "Roger Mason <rmason@mun.ca>";
spwhitt = "Spencer Whitt <sw@swhitt.me>";
SShrike = "Severen Redwood <severen@shrike.me>";
stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
steveej = "Stefan Junker <mail@stefanjunker.de>";
swistak35 = "Rafał Łasocha <me@swistak35.com>";

View file

@ -16,11 +16,7 @@ rec {
concatStrings ["foo" "bar"]
=> "foobar"
*/
concatStrings =
if builtins ? concatStringsSep then
builtins.concatStringsSep ""
else
lib.foldl' (x: y: x + y) "";
concatStrings = builtins.concatStringsSep "";
/* Map a function over a list and concatenate the resulting strings.

View file

@ -0,0 +1,49 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils findutils gnused nix wget
tmp=$(mktemp -d)
pushd $tmp >/dev/null
wget -nH -r -c --no-parent "$@" >/dev/null
csv=$(mktemp)
find . -type f | while read src; do
# Sanitize file name
filename=$(basename "$src" | tr '@' '_')
nameVersion="${filename%.tar.*}"
name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,')
version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
echo "$name,$version,$src,$filename" >>$csv
done
cat <<EOF
# DO NOT EDIT! This file is generated automatically by fetchsrcs.sh
{ fetchurl, mirror }:
{
EOF
gawk -F , "{ print \$1 }" $csv | sort | uniq | while read name; do
versions=$(gawk -F , "/^$name,/ { print \$2 }" $csv)
latestVersion=$(echo "$versions" | sort -rV | head -n 1)
src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" $csv)
filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" $csv)
url="${src:2}"
sha256=$(nix-hash --type sha256 --base32 --flat "$src")
cat <<EOF
$name = {
version = "$latestVersion";
src = fetchurl {
url = "\${mirror}/$url";
sha256 = "$sha256";
name = "$filename";
};
};
EOF
done
echo "}"
popd >/dev/null
rm -fr $tmp >/dev/null
rm -f $csv >/dev/null

View file

@ -0,0 +1,3 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/applications/16.04.2/ -A '*.tar.xz'

View file

@ -0,0 +1,3 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/frameworks/5.22/ -A '*.tar.xz'

View file

@ -0,0 +1,3 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.kde.org/stable/plasma/5.6.5/ -A '*.tar.xz'

View file

@ -0,0 +1,3 @@
#!/bin/sh
./fetch-kde-qt.sh http://download.qt.io/official_releases/qt/5.6/5.6.1/submodules/ -A '*.tar.xz'

View file

@ -13,10 +13,6 @@ if [[ $1 == nix ]]; then
sudo mkdir /etc/nix
sudo sh -c 'echo "build-max-jobs = 4" > /etc/nix/nix.conf'
# Nix builds in /tmp and we need exec support
sudo mount
sudo mount -o remount,exec /run
# Verify evaluation
echo "=== Verifying that nixpkgs evaluates..."
nix-env -f. -qa --json >/dev/null
@ -30,6 +26,11 @@ elif [[ $1 == build ]]; then
if [[ $TRAVIS_OS_NAME == "osx" ]]; then
echo "Skipping NixOS things on darwin"
else
# Nix builds in /tmp and we need exec support
sudo mount -o remount,exec /run
sudo mount -o remount,exec /run/user
sudo mount
echo "=== Checking NixOS options"
nix-build nixos/release.nix -A options --show-trace

View file

@ -468,7 +468,6 @@ in {
home = "/root";
shell = mkDefault cfg.defaultUserShell;
group = "root";
extraGroups = [ "grsecurity" ];
initialHashedPassword = mkDefault config.security.initialRootPassword;
};
nobody = {
@ -497,7 +496,6 @@ in {
nixbld.gid = ids.gids.nixbld;
utmp.gid = ids.gids.utmp;
adm.gid = ids.gids.adm;
grsecurity.gid = ids.gids.grsecurity;
input.gid = ids.gids.input;
};

View file

@ -147,7 +147,6 @@
foundationdb = 118;
newrelic = 119;
starbound = 120;
#grsecurity = 121; # unused
hydra = 122;
spiped = 123;
teamspeak = 124;
@ -396,7 +395,6 @@
foundationdb = 118;
newrelic = 119;
starbound = 120;
grsecurity = 121;
hydra = 122;
spiped = 123;
teamspeak = 124;

View file

@ -125,10 +125,11 @@
./services/computing/torque/server.nix
./services/computing/torque/mom.nix
./services/computing/slurm/slurm.nix
./services/continuous-integration/jenkins/default.nix
./services/continuous-integration/jenkins/slave.nix
./services/continuous-integration/jenkins/job-builder.nix
./services/continuous-integration/buildkite-agent.nix
./services/continuous-integration/hydra/default.nix
./services/continuous-integration/jenkins/default.nix
./services/continuous-integration/jenkins/job-builder.nix
./services/continuous-integration/jenkins/slave.nix
./services/databases/4store-endpoint.nix
./services/databases/4store.nix
./services/databases/couchdb.nix
@ -218,6 +219,7 @@
./services/misc/confd.nix
./services/misc/devmon.nix
./services/misc/dictd.nix
./services/misc/dysnomia.nix
./services/misc/disnix.nix
./services/misc/docker-registry.nix
./services/misc/emby.nix
@ -369,6 +371,7 @@
./services/networking/ostinato.nix
./services/networking/pdnsd.nix
./services/networking/polipo.nix
./services/networking/pptpd.nix
./services/networking/prayer.nix
./services/networking/privoxy.nix
./services/networking/prosody.nix
@ -431,6 +434,7 @@
./services/security/haveged.nix
./services/security/hologram.nix
./services/security/munge.nix
./services/security/oauth2_proxy.nix
./services/security/physlock.nix
./services/security/torify.nix
./services/security/tor.nix
@ -490,6 +494,7 @@
./services/x11/window-managers/windowlab.nix
./services/x11/window-managers/wmii.nix
./services/x11/window-managers/xmonad.nix
./services/x11/xbanish.nix
./services/x11/xfs.nix
./services/x11/xserver.nix
./system/activation/activation-script.nix

View file

@ -114,6 +114,26 @@ with lib;
(mkRenamedOptionModule [ "services" "iodined" "extraConfig" ] [ "services" "iodine" "server" "extraConfig" ])
(mkRemovedOptionModule [ "services" "iodined" "client" ])
# Grsecurity
(mkRemovedOptionModule [ "security" "grsecurity" "kernelPatch" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "mode" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "priority" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "system" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "virtualisationConfig" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "hardwareVirtualisation" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "virtualisationSoftware" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "sysctl" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "denyChrootChmod" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "denyChrootCaps" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "denyUSB" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "restrictProc" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "restrictProcWithGroup" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "unrestrictProcGid" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "disableRBAC" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "disableSimultConnect" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "verboseVersion" ])
(mkRemovedOptionModule [ "security" "grsecurity" "config" "kernelExtraConfig" ])
# Options that are obsolete and have no replacement.
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ])
(mkRemovedOptionModule [ "programs" "bash" "enable" ])

View file

@ -1,312 +1,122 @@
{ config, lib, pkgs, ... }:
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.security.grsecurity;
grsecLockPath = "/proc/sys/kernel/grsecurity/grsec_lock";
customGrsecPkg =
(import ../../../pkgs/build-support/grsecurity {
grsecOptions = cfg;
inherit pkgs lib;
}).grsecPackage;
# Ascertain whether ZFS is required for booting the system; grsecurity is
# currently incompatible with ZFS, rendering the system unbootable.
zfsNeededForBoot = filter
(fs: (fs.neededForBoot
|| elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ])
&& fs.fsType == "zfs")
(attrValues config.fileSystems) != [];
in
{
options = {
security.grsecurity = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable grsecurity support. This enables advanced exploit
hardening for the Linux kernel, and adds support for
administrative Role-Based Acess Control (RBAC) via
<literal>gradm</literal>. It also includes traditional
utilities for PaX.
'';
};
options.security.grsecurity = {
kernelPatch = mkOption {
type = types.attrs;
example = lib.literalExample "pkgs.kernelPatches.grsecurity_4_1";
description = ''
Grsecurity patch to use.
'';
};
enable = mkEnableOption "Grsecurity/PaX";
config = {
mode = mkOption {
type = types.enum [ "auto" "custom" ];
default = "auto";
description = ''
grsecurity configuration mode. This specifies whether
grsecurity is auto-configured or otherwise completely
manually configured.
'';
};
priority = mkOption {
type = types.enum [ "security" "performance" ];
default = "security";
description = ''
grsecurity configuration priority. This specifies whether
the kernel configuration should emphasize speed or
security.
'';
};
system = mkOption {
type = types.enum [ "desktop" "server" ];
default = "desktop";
description = ''
grsecurity system configuration.
'';
};
virtualisationConfig = mkOption {
type = types.nullOr (types.enum [ "host" "guest" ]);
default = null;
description = ''
grsecurity virtualisation configuration. This specifies
the virtualisation role of the machine - that is, whether
it will be a virtual machine guest, a virtual machine
host, or neither.
'';
};
hardwareVirtualisation = mkOption {
type = types.nullOr types.bool;
default = null;
example = true;
description = ''
grsecurity hardware virtualisation configuration. Set to
<literal>true</literal> if your machine supports hardware
accelerated virtualisation.
'';
};
virtualisationSoftware = mkOption {
type = types.nullOr (types.enum [ "kvm" "xen" "vmware" "virtualbox" ]);
default = null;
description = ''
Configure grsecurity for use with this virtualisation software.
'';
};
sysctl = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERN_SYSCTL y</literal>. If
enabled then grsecurity can be controlled using sysctl
(and turned off). You are advised to *never* enable this,
but if you do, make sure to always set the sysctl
<literal>kernel.grsecurity.grsec_lock</literal> to
non-zero as soon as all sysctl options are set. *THIS IS
EXTREMELY IMPORTANT*!
'';
};
denyChrootChmod = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERN_CHROOT_CHMOD
y</literal>. If enabled, this denies processes inside a
chroot from setting the suid or sgid bits using
<literal>chmod</literal> or <literal>fchmod</literal>.
By default this protection is disabled - it makes it
impossible to use Nix to build software on your system,
which is what most users want.
If you are using NixOps to deploy your software to a
remote machine, you're encouraged to enable this as you
won't need to compile code.
'';
};
denyChrootCaps = mkOption {
type = types.bool;
default = false;
description = ''
Whether to lower capabilities of all processes within a chroot,
preventing commands that require <literal>CAP_SYS_ADMIN</literal>.
This protection is disabled by default because it breaks
<literal>nixos-rebuild</literal>. Whenever possible, it is
highly recommended to enable this protection.
'';
};
denyUSB = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERNSEC_DENYUSB y</literal>.
This enables a sysctl with name
<literal>kernel.grsecurity.deny_new_usb</literal>. Setting
its value to <literal>1</literal> will prevent any new USB
devices from being recognized by the OS. Any attempted
USB device insertion will be logged.
This option is intended to be used against custom USB
devices designed to exploit vulnerabilities in various USB
device drivers.
'';
};
restrictProc = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERN_PROC_USER
y</literal>. This restricts non-root users to only viewing
their own processes and restricts network-related
information, kernel symbols, and module information.
'';
};
restrictProcWithGroup = mkOption {
type = types.bool;
default = true;
description = ''
If true, then set <literal>GRKERN_PROC_USERGROUP
y</literal>. This is similar to
<literal>restrictProc</literal> except it allows a special
group (specified by <literal>unrestrictProcGid</literal>)
to still access otherwise classified information in
<literal>/proc</literal>.
'';
};
unrestrictProcGid = mkOption {
type = types.int;
default = config.ids.gids.grsecurity;
description = ''
If set, specifies a GID which is exempt from
<literal>/proc</literal> restrictions (set by
<literal>GRKERN_PROC_USERGROUP</literal>). By default,
this is set to the GID for <literal>grsecurity</literal>,
a predefined NixOS group, which the
<literal>root</literal> account is a member of. You may
conveniently add other users to this group if you need
access to <literal>/proc</literal>
'';
};
disableRBAC = mkOption {
type = types.bool;
default = false;
description = ''
If true, then set <literal>GRKERN_NO_RBAC
y</literal>. This disables the
<literal>/dev/grsec</literal> device, which in turn
disables the RBAC system (and <literal>gradm</literal>).
'';
};
disableSimultConnect = mkOption {
type = types.bool;
default = false;
description = ''
Disable TCP simultaneous connect. The TCP simultaneous connect
feature allows two clients to connect without either of them
entering the listening state. This feature of the TCP specification
is claimed to enable an attacker to deny the target access to a given
server by guessing the source port the target would use to make the
connection.
This option is OFF by default because TCP simultaneous connect has
some legitimate uses. Enable this option if you know what this TCP
feature is for and know that you do not need it.
'';
};
verboseVersion = mkOption {
type = types.bool;
default = false;
description = "Use verbose version in kernel localversion.";
};
kernelExtraConfig = mkOption {
type = types.str;
default = "";
description = "Extra kernel configuration parameters.";
};
};
};
};
config = mkIf cfg.enable {
assertions =
[
{ assertion = (cfg.config.restrictProc -> !cfg.config.restrictProcWithGroup) ||
(cfg.config.restrictProcWithGroup -> !cfg.config.restrictProc);
message = "You cannot enable both restrictProc and restrictProcWithGroup";
}
{ assertion = config.boot.kernelPackages.kernel.features ? grsecurity
&& config.boot.kernelPackages.kernel.features.grsecurity;
message = "grsecurity enabled, but kernel doesn't have grsec support";
}
{ assertion = (cfg.config.mode == "auto" && (cfg.config.virtualisationConfig != null)) ->
cfg.config.hardwareVirtualisation != null;
message = "when using auto grsec mode with virtualisation, you must specify if your hardware has virtualisation extensions";
}
{ assertion = (cfg.config.mode == "auto" && (cfg.config.virtualisationConfig != null)) ->
cfg.config.virtualisationSoftware != null;
message = "grsecurity configured for virtualisation but no virtualisation software specified";
}
];
security.grsecurity.kernelPatch = lib.mkDefault pkgs.kernelPatches.grsecurity_latest;
systemd.services.grsec-lock = mkIf cfg.config.sysctl {
description = "grsecurity sysctl-lock Service";
wants = [ "systemd-sysctl.service" ];
after = [ "systemd-sysctl.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = "yes";
unitConfig.ConditionPathIsReadWrite = "/proc/sys/kernel/grsecurity/grsec_lock";
script = ''
locked=`cat /proc/sys/kernel/grsecurity/grsec_lock`
if [ "$locked" == "0" ]; then
echo 1 > /proc/sys/kernel/grsecurity/grsec_lock
echo grsecurity sysctl lock - enabled
else
echo grsecurity sysctl lock already enabled - doing nothing
fi
lockTunables = mkOption {
type = types.bool;
example = false;
default = true;
description = ''
Whether to automatically lock grsecurity tunables
(<option>boot.kernel.sysctl."kernel.grsecurity.*"</option>). Disable
this to allow configuration of grsecurity features while the system is
running. The lock can be manually engaged by activating the
<literal>grsec-lock</literal> service unit.
'';
};
# systemd.services.grsec-learn = {
# description = "grsecurity learning Service";
# wantedBy = [ "local-fs.target" ];
# serviceConfig = {
# Type = "oneshot";
# RemainAfterExit = "yes";
# ExecStart = "${pkgs.gradm}/sbin/gradm -VFL /etc/grsec/learning.logs";
# ExecStop = "${pkgs.gradm}/sbin/gradm -D";
# };
# };
};
system.activationScripts = lib.optionalAttrs (!cfg.config.disableRBAC) { grsec = ''
mkdir -p /etc/grsec
if [ ! -f /etc/grsec/learn_config ]; then
cp ${pkgs.gradm}/etc/grsec/learn_config /etc/grsec
fi
if [ ! -f /etc/grsec/policy ]; then
cp ${pkgs.gradm}/etc/grsec/policy /etc/grsec
fi
chmod -R 0600 /etc/grsec
''; };
config = mkIf cfg.enable {
# Allow the user to select a different package set, subject to the stated
# required kernel config
boot.kernelPackages = mkDefault pkgs.linuxPackages_grsec_nixos;
system.requiredKernelConfig = with config.lib.kernelConfig;
[ (isEnabled "GRKERNSEC")
(isEnabled "PAX")
(isYES "GRKERNSEC_SYSCTL")
(isYES "GRKERNSEC_SYSCTL_DISTRO")
];
# Crashing on an overflow in kernel land is user unfriendly and may prevent
# the system from booting, which is too severe for our use case.
boot.kernelParams = [ "pax_size_overflow_report_only" ];
# Install PaX related utillities into the system profile. Eventually, we
# also want to include gradm here.
environment.systemPackages = with pkgs; [ paxctl pax-utils ];
# Install rules for the grsec device node
services.udev.packages = [ pkgs.gradm ];
# This service unit is responsible for locking the Grsecurity tunables. The
# unit is always defined, but only activated on bootup if lockTunables is
# toggled. When lockTunables is toggled, failure to activate the unit will
# enter emergency mode. The intent is to make it difficult to silently
# enter multi-user mode without having locked the tunables. Some effort is
# made to ensure that starting the unit is an idempotent operation.
systemd.services.grsec-lock = {
description = "Lock grsecurity tunables";
wantedBy = optional cfg.lockTunables "multi-user.target";
wants = [ "local-fs.target" "systemd-sysctl.service" ];
after = [ "local-fs.target" "systemd-sysctl.service" ];
conflicts = [ "shutdown.target" ];
restartIfChanged = false;
script = ''
if ${pkgs.gnugrep}/bin/grep -Fq 0 ${grsecLockPath} ; then
echo -n 1 > ${grsecLockPath}
fi
'';
unitConfig = {
ConditionPathIsReadWrite = grsecLockPath;
DefaultDependencies = false;
} // optionalAttrs cfg.lockTunables {
OnFailure = "emergency.target";
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
};
# Configure system tunables
boot.kernel.sysctl = {
# Removed under grsecurity
"kernel.kptr_restrict" = mkForce null;
} // optionalAttrs config.nix.useSandbox {
# chroot(2) restrictions that conflict with sandboxed Nix builds
"kernel.grsecurity.chroot_caps" = mkForce 0;
"kernel.grsecurity.chroot_deny_chroot" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0;
"kernel.grsecurity.chroot_deny_pivot" = mkForce 0;
} // optionalAttrs config.boot.enableContainers {
# chroot(2) restrictions that conflict with NixOS lightweight containers
"kernel.grsecurity.chroot_deny_chmod" = mkForce 0;
"kernel.grsecurity.chroot_deny_mount" = mkForce 0;
"kernel.grsecurity.chroot_restrict_nice" = mkForce 0;
};
assertions = [
{ assertion = !zfsNeededForBoot;
message = "grsecurity is currently incompatible with ZFS";
}
];
# Enable AppArmor, gradm udev rules, and utilities
security.apparmor.enable = true;
boot.kernelPackages = customGrsecPkg;
services.udev.packages = lib.optional (!cfg.config.disableRBAC) pkgs.gradm;
environment.systemPackages = [ pkgs.paxctl pkgs.pax-utils ] ++ lib.optional (!cfg.config.disableRBAC) pkgs.gradm;
};
}

View file

@ -0,0 +1,100 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.buildkite-agent;
configFile = pkgs.writeText "buildkite-agent.cfg"
''
token="${cfg.token}"
name="${cfg.name}"
meta-data="${cfg.meta-data}"
hooks-path="${pkgs.buildkite-agent}/share/hooks"
build-path="/var/lib/buildkite-agent/builds"
bootstrap-script="${pkgs.buildkite-agent}/share/bootstrap.sh"
'';
in
{
options = {
services.buildkite-agent = {
enable = mkEnableOption "buildkite-agent";
token = mkOption {
type = types.str;
description = ''
The token from your Buildkite "Agents" page.
'';
};
name = mkOption {
type = types.str;
description = ''
The name of the agent.
'';
};
meta-data = mkOption {
type = types.str;
default = "";
description = ''
Meta data for the agent.
'';
};
openssh =
{ privateKey = mkOption {
type = types.str;
description = ''
Private agent key.
'';
};
publicKey = mkOption {
type = types.str;
description = ''
Public agent key.
'';
};
};
};
};
config = mkIf config.services.buildkite-agent.enable {
users.extraUsers.buildkite-agent =
{ name = "buildkite-agent";
home = "/var/lib/buildkite-agent";
createHome = true;
description = "Buildkite agent user";
};
environment.systemPackages = [ pkgs.buildkite-agent ];
systemd.services.buildkite-agent =
{ description = "Buildkite Agent";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
environment.HOME = "/var/lib/buildkite-agent";
preStart = ''
${pkgs.coreutils}/bin/mkdir -m 0700 -p /var/lib/buildkite-agent/.ssh
if ! [ -f /var/lib/buildkite-agent/.ssh/id_rsa ]; then
echo "${cfg.openssh.privateKey}" > /var/lib/buildkite-agent/.ssh/id_rsa
${pkgs.coreutils}/bin/chmod 600 /var/lib/buildkite-agent/.ssh/id_rsa
fi
if ! [ -f /var/lib/buildkite-agent/.ssh/id_rsa.pub ]; then
echo "${cfg.openssh.publicKey}" > /var/lib/buildkite-agent/.ssh/id_rsa.pub
${pkgs.coreutils}/bin/chmod 600 /var/lib/buildkite-agent/.ssh/id_rsa.pub
fi
'';
serviceConfig =
{ ExecStart = "${pkgs.buildkite-agent}/bin/buildkite-agent start --config ${configFile}";
User = "buildkite-agent";
RestartSec = 5;
Restart = "on-failure";
TimeoutSec = 10;
};
};
};
}

View file

@ -40,6 +40,13 @@ in
description = "Group account under which slapd runs.";
};
urlList = mkOption {
type = types.listOf types.string;
default = [ "ldap:///" ];
description = "URL list slapd should listen on.";
example = [ "ldaps:///" ];
};
dataDir = mkOption {
type = types.string;
default = "/var/db/openldap";
@ -50,7 +57,7 @@ in
type = types.lines;
default = "";
description = "
sldapd.conf configuration
slapd.conf configuration
";
example = literalExample ''
'''
@ -89,7 +96,7 @@ in
mkdir -p ${cfg.dataDir}
chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir}
'';
serviceConfig.ExecStart = "${openldap.out}/libexec/slapd -u ${cfg.user} -g ${cfg.group} -d 0 -f ${configFile}";
serviceConfig.ExecStart = "${openldap.out}/libexec/slapd -u ${cfg.user} -g ${cfg.group} -d 0 -h \"${concatStringsSep " " cfg.urlList}\" -f ${configFile}";
};
users.extraUsers.openldap =

View file

@ -127,11 +127,11 @@ let
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
'' + optionalString cfg.enableSubmission ''
submission inet n - n - - smtpd
${concatStringsSep "\n " (mapAttrsToList (x: y: "-o " + x + "=" + y) cfg.submissionOptions)}
''
+ ''
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
@ -201,6 +201,28 @@ in
default = true;
description = "Whether to enable smtp in master.cf.";
};
enableSubmission = mkOption {
type = types.bool;
default = false;
description = "Whether to enable smtp submission";
};
submissionOptions = mkOption {
type = types.attrs;
default = { "smtpd_tls_security_level" = "encrypt";
"smtpd_sasl_auth_enable" = "yes";
"smtpd_client_restrictions" = "permit_sasl_authenticated,reject";
"milter_macro_daemon_name" = "ORIGINATING";
};
description = "Options for the submission config in master.cf";
example = { "smtpd_tls_security_level" = "encrypt";
"smtpd_sasl_auth_enable" = "yes";
"smtpd_sasl_type" = "dovecot";
"smtpd_client_restrictions" = "permit_sasl_authenticated,reject";
"milter_macro_daemon_name" = "ORIGINATING";
};
};
setSendmail = mkOption {
type = types.bool;

View file

@ -75,7 +75,7 @@ in {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/confd";
ExecStart = "${cfg.package.bin}/bin/confd";
};
};

View file

@ -36,49 +36,32 @@ in
default = false;
description = "Whether to enable the DisnixWebService interface running on Apache Tomcat";
};
publishInfrastructure = {
enable = mkOption {
default = false;
description = "Whether to publish capabilities/properties of this machine in as attributes in the infrastructure option";
};
enableAuthentication = mkOption {
default = false;
description = "Whether to publish authentication credentials through the infrastructure attribute (not recommended in combination with Avahi)";
};
};
infrastructure = mkOption {
default = {};
description = "List of name value pairs containing properties for the infrastructure model";
};
publishAvahi = mkOption {
default = false;
description = "Whether to publish capabilities/properties as a Disnix service through Avahi";
package = mkOption {
type = types.path;
description = "The Disnix package";
default = pkgs.disnix;
};
};
};
###### implementation
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.disnix pkgs.dysnomia ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
dysnomia.enable = true;
environment.systemPackages = [ pkgs.disnix ] ++ optional cfg.useWebServiceInterface pkgs.DisnixWebService;
services.dbus.enable = true;
services.dbus.packages = [ pkgs.disnix ];
services.avahi.enable = cfg.publishAvahi;
services.tomcat.enable = cfg.useWebServiceInterface;
services.tomcat.extraGroups = [ "disnix" ];
services.tomcat.javaOpts = "${optionalString cfg.useWebServiceInterface "-Djava.library.path=${pkgs.libmatthew_java}/lib/jni"} ";
services.tomcat.sharedLibs = optional cfg.useWebServiceInterface "${pkgs.DisnixWebService}/share/java/DisnixConnection.jar"
++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar";
++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar";
services.tomcat.webapps = optional cfg.useWebServiceInterface pkgs.DisnixWebService;
users.extraGroups = singleton
@ -86,38 +69,6 @@ in
gid = config.ids.gids.disnix;
};
services.disnix.infrastructure =
optionalAttrs (cfg.publishInfrastructure.enable)
( { hostname = config.networking.hostName;
#targetHost = config.deployment.targetHost;
system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
supportedTypes = (import "${pkgs.stdenv.mkDerivation {
name = "supportedtypes";
buildCommand = ''
( echo -n "[ "
cd ${dysnomia}/libexec/dysnomia
for i in *
do
echo -n "\"$i\" "
done
echo -n " ]") > $out
'';
}}");
}
#// optionalAttrs (cfg.useWebServiceInterface) { targetEPR = "http://${config.deployment.targetHost}:8080/DisnixWebService/services/DisnixWebService"; }
// optionalAttrs (config.services.httpd.enable) { documentRoot = config.services.httpd.documentRoot; }
// optionalAttrs (config.services.mysql.enable) { mysqlPort = config.services.mysql.port; }
// optionalAttrs (config.services.tomcat.enable) { tomcatPort = 8080; }
// optionalAttrs (config.services.svnserve.enable) { svnBaseDir = config.services.svnserve.svnBaseDir; }
// optionalAttrs (config.services.ejabberd.enable) { ejabberdUser = config.services.ejabberd.user; }
// optionalAttrs (cfg.publishInfrastructure.enableAuthentication) (
optionalAttrs (config.services.mysql.enable) { mysqlUsername = "root"; mysqlPassword = readFile config.services.mysql.rootPassword; })
)
;
services.disnix.publishInfrastructure.enable = cfg.publishAvahi;
systemd.services = {
disnix = {
description = "Disnix server";
@ -133,46 +84,17 @@ in
restartIfChanged = false;
path = [ pkgs.nix pkgs.disnix dysnomia "/run/current-system/sw" ];
path = [ config.nix.package cfg.package config.dysnomia.package "/run/current-system/sw" ];
environment = {
HOME = "/root";
};
preStart = ''
mkdir -p /etc/systemd-mutable/system
if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
then
( echo "[Unit]"
echo "Description=Services that are activated and deactivated by Dysnomia"
echo "After=final.target"
) > /etc/systemd-mutable/system/dysnomia.target
fi
'';
script = "disnix-service";
}
// (if config.environment.variables ? DYSNOMIA_CONTAINERS_PATH then { inherit (config.environment.variables) DYSNOMIA_CONTAINERS_PATH; } else {})
// (if config.environment.variables ? DYSNOMIA_MODULES_PATH then { inherit (config.environment.variables) DYSNOMIA_MODULES_PATH; } else {});
serviceConfig.ExecStart = "${cfg.package}/bin/disnix-service";
};
} // optionalAttrs cfg.publishAvahi {
disnixAvahi = {
description = "Disnix Avahi publisher";
wants = [ "avahi-daemon.service" ];
wantedBy = [ "multi-user.target" ];
script = ''
${pkgs.avahi}/bin/avahi-publish-service disnix-${config.networking.hostName} _disnix._tcp 22 \
"mem=$(grep 'MemTotal:' /proc/meminfo | sed -e 's/kB//' -e 's/MemTotal://' -e 's/ //g')" \
${concatMapStrings (infrastructureAttrName:
let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
in
if isInt infrastructureAttrValue then
''${infrastructureAttrName}=${toString infrastructureAttrValue} \
''
else
''${infrastructureAttrName}=\"${infrastructureAttrValue}\" \
''
) (attrNames (cfg.infrastructure))}
'';
};
};
};
}

View file

@ -0,0 +1,217 @@
{pkgs, lib, config, ...}:
with lib;
let
cfg = config.dysnomia;
printProperties = properties:
concatMapStrings (propertyName:
let
property = properties."${propertyName}";
in
if isList property then "${propertyName}=(${lib.concatMapStrings (elem: "\"${toString elem}\" ") (properties."${propertyName}")})\n"
else "${propertyName}=\"${toString property}\"\n"
) (builtins.attrNames properties);
properties = pkgs.stdenv.mkDerivation {
name = "dysnomia-properties";
buildCommand = ''
cat > $out << "EOF"
${printProperties cfg.properties}
EOF
'';
};
containersDir = pkgs.stdenv.mkDerivation {
name = "dysnomia-containers";
buildCommand = ''
mkdir -p $out
cd $out
${concatMapStrings (containerName:
let
containerProperties = cfg.containers."${containerName}";
in
''
cat > ${containerName} <<EOF
${printProperties containerProperties}
type=${containerName}
EOF
''
) (builtins.attrNames cfg.containers)}
'';
};
linkMutableComponents = {containerName}:
''
mkdir ${containerName}
${concatMapStrings (componentName:
let
component = cfg.components."${containerName}"."${componentName}";
in
"ln -s ${component} ${containerName}/${componentName}\n"
) (builtins.attrNames (cfg.components."${containerName}" or {}))}
'';
componentsDir = pkgs.stdenv.mkDerivation {
name = "dysnomia-components";
buildCommand = ''
mkdir -p $out
cd $out
${concatMapStrings (containerName:
let
components = cfg.components."${containerName}";
in
linkMutableComponents { inherit containerName; }
) (builtins.attrNames cfg.components)}
'';
};
in
{
options = {
dysnomia = {
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable Dysnomia";
};
enableAuthentication = mkOption {
type = types.bool;
default = false;
description = "Whether to publish privacy-sensitive authentication credentials";
};
package = mkOption {
type = types.path;
description = "The Dysnomia package";
};
properties = mkOption {
description = "An attribute set in which each attribute represents a machine property. Optionally, these values can be shell substitutions.";
default = {};
};
containers = mkOption {
description = "An attribute set in which each key represents a container and each value an attribute set providing its configuration properties";
default = {};
};
components = mkOption {
description = "An atttribute set in which each key represents a container and each value an attribute set in which each key represents a component and each value a derivation constructing its initial state";
default = {};
};
extraContainerProperties = mkOption {
description = "An attribute set providing additional container settings in addition to the default properties";
default = {};
};
extraContainerPaths = mkOption {
description = "A list of paths containing additional container configurations that are added to the search folders";
default = [];
};
extraModulePaths = mkOption {
description = "A list of paths containing additional modules that are added to the search folders";
default = [];
};
};
};
config = mkIf cfg.enable {
environment.etc = {
"dysnomia/containers" = {
source = containersDir;
};
"dysnomia/components" = {
source = componentsDir;
};
"dysnomia/properties" = {
source = properties;
};
};
environment.variables = {
DYSNOMIA_STATEDIR = "/var/state/dysnomia-nixos";
DYSNOMIA_CONTAINERS_PATH = "${lib.concatMapStrings (containerPath: "${containerPath}:") cfg.extraContainerPaths}/etc/dysnomia/containers";
DYSNOMIA_MODULES_PATH = "${lib.concatMapStrings (modulePath: "${modulePath}:") cfg.extraModulePaths}/etc/dysnomia/modules";
};
environment.systemPackages = [ cfg.package ];
dysnomia.package = pkgs.dysnomia.override (origArgs: {
enableApacheWebApplication = config.services.httpd.enable;
enableAxis2WebService = config.services.tomcat.axis2.enable;
enableEjabberdDump = config.services.ejabberd.enable;
enableMySQLDatabase = config.services.mysql.enable;
enablePostgreSQLDatabase = config.services.postgresql.enable;
enableSubversionRepository = config.services.svnserve.enable;
enableTomcatWebApplication = config.services.tomcat.enable;
enableMongoDatabase = config.services.mongodb.enable;
});
dysnomia.properties = {
hostname = config.networking.hostName;
system = if config.nixpkgs.system == "" then builtins.currentSystem else config.nixpkgs.system;
supportedTypes = (import "${pkgs.stdenv.mkDerivation {
name = "supportedtypes";
buildCommand = ''
( echo -n "[ "
cd ${cfg.package}/libexec/dysnomia
for i in *
do
echo -n "\"$i\" "
done
echo -n " ]") > $out
'';
}}");
};
dysnomia.containers = lib.recursiveUpdate ({
process = {};
wrapper = {};
}
// lib.optionalAttrs (config.services.httpd.enable) { apache-webapplication = {
documentRoot = config.services.httpd.documentRoot;
}; }
// lib.optionalAttrs (config.services.tomcat.axis2.enable) { axis2-webservice = {}; }
// lib.optionalAttrs (config.services.ejabberd.enable) { ejabberd-dump = {
ejabberdUser = config.services.ejabberd.user;
}; }
// lib.optionalAttrs (config.services.mysql.enable) { mysql-database = {
mysqlPort = config.services.mysql.port;
} // lib.optionalAttrs cfg.enableAuthentication {
mysqlUsername = "root";
mysqlPassword = builtins.readFile (config.services.mysql.rootPassword);
};
}
// lib.optionalAttrs (config.services.postgresql.enable && cfg.enableAuthentication) { postgresql-database = {
postgresqlUsername = "root";
}; }
// lib.optionalAttrs (config.services.tomcat.enable) { tomcat-webapplication = {
tomcatPort = 8080;
}; }
// lib.optionalAttrs (config.services.mongodb.enable) { mongo-database = {}; }
// lib.optionalAttrs (config.services.svnserve.enable) { subversion-repository = {
svnBaseDir = config.services.svnserve.svnBaseDir;
}; }) cfg.extraContainerProperties;
system.activationScripts.dysnomia = ''
mkdir -p /etc/systemd-mutable/system
if [ ! -f /etc/systemd-mutable/system/dysnomia.target ]
then
( echo "[Unit]"
echo "Description=Services that are activated and deactivated by Dysnomia"
echo "After=final.target"
) > /etc/systemd-mutable/system/dysnomia.target
fi
'';
};
}

View file

@ -115,7 +115,7 @@ in {
serviceConfig = {
Type = "notify";
ExecStart = "${pkgs.etcd}/bin/etcd";
ExecStart = "${pkgs.etcd.bin}/bin/etcd";
User = "etcd";
PermissionsStartOnly = true;
};

View file

@ -91,7 +91,7 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${pkgs.nodePackages_0_10.parsoid}/lib/node_modules/parsoid/api/server.js -c ${confFile} -n ${toString cfg.workers}";
ExecStart = "${pkgs.nodePackages.parsoid}/lib/node_modules/parsoid/api/server.js -c ${confFile} -n ${toString cfg.workers}";
};
};

View file

@ -148,7 +148,7 @@ in {
User = cfg.user;
Group = cfg.group;
ExecStart = ''
${cfg.package}/bin/bosun -c ${configFile}
${cfg.package.bin}/bin/bosun -c ${configFile}
'';
};
};

View file

@ -228,7 +228,7 @@ in {
after = ["networking.target"];
environment = mapAttrs' (n: v: nameValuePair "GF_${n}" (toString v)) envOptions;
serviceConfig = {
ExecStart = "${cfg.package}/bin/grafana-server -homepath ${cfg.dataDir}";
ExecStart = "${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir}";
WorkingDirectory = cfg.dataDir;
User = "grafana";
};

View file

@ -119,7 +119,7 @@ in {
PermissionsStartOnly = true;
User = cfg.user;
Group = cfg.group;
ExecStart = "${cfg.package}/bin/scollector -conf=${conf} ${lib.concatStringsSep " " cfg.extraOpts}";
ExecStart = "${cfg.package.bin}/bin/scollector -conf=${conf} ${lib.concatStringsSep " " cfg.extraOpts}";
};
};

View file

@ -178,14 +178,14 @@ in
(filterAttrs (n: _: hasPrefix "consul.d/" n) config.environment.etc);
serviceConfig = {
ExecStart = "@${cfg.package}/bin/consul consul agent -config-dir /etc/consul.d"
ExecStart = "@${cfg.package.bin}/bin/consul consul agent -config-dir /etc/consul.d"
+ concatMapStrings (n: " -config-file ${n}") configFiles;
ExecReload = "${cfg.package}/bin/consul reload";
ExecReload = "${cfg.package.bin}/bin/consul reload";
PermissionsStartOnly = true;
User = if cfg.dropPrivileges then "consul" else null;
TimeoutStartSec = "0";
} // (optionalAttrs (cfg.leaveOnStop) {
ExecStop = "${cfg.package}/bin/consul leave";
ExecStop = "${cfg.package.bin}/bin/consul leave";
});
path = with pkgs; [ iproute gnugrep gawk consul ];
@ -236,7 +236,7 @@ in
serviceConfig = {
ExecStart = ''
${cfg.alerts.package}/bin/consul-alerts start \
${cfg.alerts.package.bin}/bin/consul-alerts start \
--alert-addr=${cfg.alerts.listenAddr} \
--consul-addr=${cfg.alerts.consulAddr} \
${optionalString cfg.alerts.watchChecks "--watch-checks"} \

View file

@ -89,8 +89,8 @@ in
'';
example = literalExample "${pkgs.dnscrypt-proxy}/share/dnscrypt-proxy/dnscrypt-resolvers.csv";
default = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv";
sha256 = "0lac20qhcgjxxiiz8jzcn3hkqj4ywl58hahp5n2i6vf9akfyqp7c";
url = https://raw.githubusercontent.com/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv;
sha256 = "171zvdqcqqvcw3zr7wl9h1wmdmk6m3h55xr4gq2z1j7a0x0ba2in";
};
defaultText = "pkgs.fetchurl { url = ...; sha256 = ...; }";
};

View file

@ -0,0 +1,124 @@
{ config, stdenv, pkgs, lib, ... }:
with lib;
{
options = {
services.pptpd = {
enable = mkEnableOption "Whether pptpd should be run on startup.";
serverIp = mkOption {
type = types.string;
description = "The server-side IP address.";
default = "10.124.124.1";
};
clientIpRange = mkOption {
type = types.string;
description = "The range from which client IPs are drawn.";
default = "10.124.142.2-11";
};
maxClients = mkOption {
type = types.int;
description = "The maximum number of simultaneous connections.";
default = 10;
};
extraPptpdOptions = mkOption {
type = types.lines;
description = "Adds extra lines to the pptpd configuration file.";
default = "";
};
extraPppdOptions = mkOption {
type = types.lines;
description = "Adds extra lines to the pppd options file.";
default = "";
example = ''
ms-dns 8.8.8.8
ms-dns 8.8.4.4
'';
};
};
};
config = mkIf config.services.pptpd.enable {
systemd.services.pptpd = let
cfg = config.services.pptpd;
pptpd-conf = pkgs.writeText "pptpd.conf" ''
# Inspired from pptpd-1.4.0/samples/pptpd.conf
ppp ${ppp-pptpd-wrapped}/bin/pppd
option ${pppd-options}
pidfile /run/pptpd.pid
localip ${cfg.serverIp}
remoteip ${cfg.clientIpRange}
connections ${toString cfg.maxClients} # (Will get harmless warning if inconsistent with IP range)
# Extra
${cfg.extraPptpdOptions}
'';
pppd-options = pkgs.writeText "ppp-options-pptpd.conf" ''
# From: cat pptpd-1.4.0/samples/options.pptpd | grep -v ^# | grep -v ^$
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
# Extra:
${cfg.extraPppdOptions}
'';
ppp-pptpd-wrapped = pkgs.stdenv.mkDerivation {
name = "ppp-pptpd-wrapped";
phases = [ "installPhase" ];
buildInputs = with pkgs; [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
makeWrapper ${pkgs.ppp}/bin/pppd $out/bin/pppd \
--set LD_PRELOAD "${pkgs.libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS "/etc/ppp=/etc/ppp-pptpd"
'';
};
in {
description = "pptpd server";
requires = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
mkdir -p -m 700 /etc/ppp-pptpd
secrets="/etc/ppp-pptpd/chap-secrets"
[ -f "$secrets" ] || cat > "$secrets" << EOF
# From: pptpd-1.4.0/samples/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
#username pptpd password *
EOF
chown root.root "$secrets"
chmod 600 "$secrets"
'';
serviceConfig = {
ExecStart = "${pkgs.pptpd}/bin/pptpd --conf ${pptpd-conf}";
KillMode = "process";
Restart = "on-success";
Type = "forking";
PIDFile = "/run/pptpd.pid";
};
};
};
}

View file

@ -83,7 +83,7 @@ in {
SKYDNS_NAMESERVERS = concatStringsSep "," cfg.nameservers;
};
serviceConfig = {
ExecStart = "${cfg.package}/bin/skydns";
ExecStart = "${cfg.package.bin}/bin/skydns";
};
};

View file

@ -129,7 +129,7 @@ in {
in {
description = "WPA Supplicant";
after = [ "network-interfaces.target" ];
after = [ "network-interfaces.target" ] ++ lib.concatMap deviceUnit ifaces;
requires = lib.concatMap deviceUnit ifaces;
wantedBy = [ "network.target" ];

View file

@ -95,7 +95,7 @@ in {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.hologram}/bin/hologram-server --debug --conf ${cfgFile}";
ExecStart = "${pkgs.hologram.bin}/bin/hologram-server --debug --conf ${cfgFile}";
};
};
};

View file

@ -0,0 +1,523 @@
# NixOS module for oauth2_proxy.
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.oauth2_proxy;
# Use like:
# repeatedArgs (arg: "--arg=${arg}") args
repeatedArgs = concatMapStringsSep " ";
# 'toString' doesn't quite do what we want for bools.
fromBool = x: if x then "true" else "false";
# oauth2_proxy provides many options that are only relevant if you are using
# a certain provider. This set maps from provider name to a function that
# takes the configuration and returns a string that can be inserted into the
# command-line to launch oauth2_proxy.
providerSpecificOptions = {
azure = cfg: ''
--azure-tenant=${cfg.azure.tenant} \
--resource=${cfg.azure.resource} \
'';
github = cfg: ''
$(optionalString (!isNull cfg.github.org) "--github-org=${cfg.github.org}") \
$(optionalString (!isNull cfg.github.team) "--github-org=${cfg.github.team}") \
'';
google = cfg: ''
--google-admin-email=${cfg.google.adminEmail} \
--google-service-account=${cfg.google.serviceAccountJSON} \
$(repeatedArgs (group: "--google-group=${group}") cfg.google.groups) \
'';
};
authenticatedEmailsFile = pkgs.writeText "authenticated-emails" cfg.email.addresses;
getProviderOptions = cfg: provider:
if providerSpecificOptions ? provider then providerSpecificOptions.provider cfg else "";
mkCommandLine = cfg: ''
--provider='${cfg.provider}' \
${optionalString (!isNull cfg.email.addresses) "--authenticated-emails-file='${authenticatedEmailsFile}'"} \
--approval-prompt='${cfg.approvalPrompt}' \
${optionalString (cfg.passBasicAuth && !isNull cfg.basicAuthPassword) "--basic-auth-password='${cfg.basicAuthPassword}'"} \
--client-id='${cfg.clientID}' \
--client-secret='${cfg.clientSecret}' \
${optionalString (!isNull cfg.cookie.domain) "--cookie-domain='${cfg.cookie.domain}'"} \
--cookie-expire='${cfg.cookie.expire}' \
--cookie-httponly=${fromBool cfg.cookie.httpOnly} \
--cookie-name='${cfg.cookie.name}' \
--cookie-secret='${cfg.cookie.secret}' \
--cookie-secure=${fromBool cfg.cookie.secure} \
${optionalString (!isNull cfg.cookie.refresh) "--cookie-refresh='${cfg.cookie.refresh}'"} \
${optionalString (!isNull cfg.customTemplatesDir) "--custom-templates-dir='${cfg.customTemplatesDir}'"} \
${repeatedArgs (x: "--email-domain='${x}'") cfg.email.domains} \
--http-address='${cfg.httpAddress}' \
${optionalString (!isNull cfg.htpasswd.file) "--htpasswd-file='${cfg.htpasswd.file}' --display-htpasswd-form=${fromBool cfg.htpasswd.displayForm}"} \
${optionalString (!isNull cfg.loginURL) "--login-url='${cfg.loginURL}'"} \
--pass-access-token=${fromBool cfg.passAccessToken} \
--pass-basic-auth=${fromBool cfg.passBasicAuth} \
--pass-host-header=${fromBool cfg.passHostHeader} \
--proxy-prefix='${cfg.proxyPrefix}' \
${optionalString (!isNull cfg.profileURL) "--profile-url='${cfg.profileURL}'"} \
${optionalString (!isNull cfg.redeemURL) "--redeem-url='${cfg.redeemURL}'"} \
${optionalString (!isNull cfg.redirectURL) "--redirect-url='${cfg.redirectURL}'"} \
--request-logging=${fromBool cfg.requestLogging} \
${optionalString (!isNull cfg.scope) "--scope='${cfg.scope}'"} \
${repeatedArgs (x: "--skip-auth-regex='${x}'") cfg.skipAuthRegexes} \
${optionalString (!isNull cfg.signatureKey) "--signature-key='${cfg.signatureKey}'"} \
--upstream='${cfg.upstream}' \
${optionalString (!isNull cfg.validateURL) "--validate-url='${cfg.validateURL}'"} \
${optionalString cfg.tls.enable "--tls-cert='${cfg.tls.certificate}' --tls-key='${cfg.tls.key}' --https-address='${cfg.tls.httpsAddress}'"} \
'' + getProviderOptions cfg cfg.provider;
in
{
options.services.oauth2_proxy = {
enable = mkEnableOption "oauth2_proxy";
package = mkOption {
type = types.package;
default = pkgs.oauth2_proxy;
defaultText = "pkgs.oauth2_proxy";
description = ''
The package that provides oauth2_proxy.
'';
};
##############################################
# PROVIDER configuration
provider = mkOption {
type = types.enum [
"google"
"github"
"azure"
"gitlab"
"linkedin"
"myusa"
];
default = "google";
description = ''
OAuth provider.
'';
};
approvalPrompt = mkOption {
type = types.enum ["force" "auto"];
default = "force";
description = ''
OAuth approval_prompt.
'';
};
clientID = mkOption {
type = types.str;
description = ''
The OAuth Client ID.
'';
example = "123456.apps.googleusercontent.com";
};
clientSecret = mkOption {
type = types.str;
description = ''
The OAuth Client Secret.
'';
};
skipAuthRegexes = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Skip authentication for requests matching any of these regular
expressions.
'';
};
# XXX: Not clear whether these two options are mutually exclusive or not.
email = {
domains = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Authenticate emails with the specified domains. Use
<literal>*</literal> to authenticate any email.
'';
};
addresses = mkOption {
type = types.nullOr types.lines;
default = null;
description = ''
Line-separated email addresses that are allowed to authenticate.
'';
};
};
loginURL = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Authentication endpoint.
You only need to set this if you are using a self-hosted provider (e.g.
Github Enterprise). If you're using a publicly hosted provider
(e.g github.com), then the default works.
'';
example = "https://provider.example.com/oauth/authorize";
};
redeemURL = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Token redemption endpoint.
You only need to set this if you are using a self-hosted provider (e.g.
Github Enterprise). If you're using a publicly hosted provider
(e.g github.com), then the default works.
'';
example = "https://provider.example.com/oauth/token";
};
validateURL = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Access token validation endpoint.
You only need to set this if you are using a self-hosted provider (e.g.
Github Enterprise). If you're using a publicly hosted provider
(e.g github.com), then the default works.
'';
example = "https://provider.example.com/user/emails";
};
redirectURL = mkOption {
# XXX: jml suspects this is always necessary, but the command-line
# doesn't require it so making it optional.
type = types.nullOr types.str;
default = null;
description = ''
The OAuth2 redirect URL.
'';
example = "https://internalapp.yourcompany.com/oauth2/callback";
};
azure = {
tenant = mkOption {
type = types.str;
default = "common";
description = ''
Go to a tenant-specific or common (tenant-independent) endpoint.
'';
};
resource = mkOption {
type = types.str;
description = ''
The resource that is protected.
'';
};
};
google = {
adminEmail = mkOption {
type = types.str;
description = ''
The Google Admin to impersonate for API calls.
Only users with access to the Admin APIs can access the Admin SDK
Directory API, thus the service account needs to impersonate one of
those users to access the Admin SDK Directory API.
See <link xlink:href="https://developers.google.com/admin-sdk/directory/v1/guides/delegation#delegate_domain-wide_authority_to_your_service_account" />.
'';
};
groups = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Restrict logins to members of these Google groups.
'';
};
serviceAccountJSON = mkOption {
type = types.path;
description = ''
The path to the service account JSON credentials.
'';
};
};
github = {
org = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Restrict logins to members of this organisation.
'';
};
team = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Restrict logins to members of this team.
'';
};
};
####################################################
# UPSTREAM Configuration
upstream = mkOption {
type = types.commas;
description = ''
The http url(s) of the upstream endpoint or <literal>file://</literal>
paths for static files. Routing is based on the path.
'';
};
passAccessToken = mkOption {
type = types.bool;
default = false;
description = ''
Pass OAuth access_token to upstream via X-Forwarded-Access-Token header.
'';
};
passBasicAuth = mkOption {
type = types.bool;
default = true;
description = ''
Pass HTTP Basic Auth, X-Forwarded-User and X-Forwarded-Email information to upstream.
'';
};
basicAuthPassword = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
The password to set when passing the HTTP Basic Auth header.
'';
};
passHostHeader = mkOption {
type = types.bool;
default = true;
description = ''
Pass the request Host Header to upstream.
'';
};
signatureKey = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
GAP-Signature request signature key.
'';
example = "sha1:secret0";
};
cookie = {
domain = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
An optional cookie domain to force cookies to.
'';
example = ".yourcompany.com";
};
expire = mkOption {
type = types.str;
default = "168h0m0s";
description = ''
Expire timeframe for cookie.
'';
};
httpOnly = mkOption {
type = types.bool;
default = true;
description = ''
Set HttpOnly cookie flag.
'';
};
name = mkOption {
type = types.str;
default = "_oauth2_proxy";
description = ''
The name of the cookie that the oauth_proxy creates.
'';
};
refresh = mkOption {
# XXX: Unclear what the behavior is when this is not specified.
type = types.nullOr types.str;
default = null;
description = ''
Refresh the cookie after this duration; 0 to disable.
'';
example = "168h0m0s";
};
secret = mkOption {
type = types.str;
description = ''
The seed string for secure cookies.
'';
};
secure = mkOption {
type = types.bool;
default = true;
description = ''
Set secure (HTTPS) cookie flag.
'';
};
};
####################################################
# OAUTH2 PROXY configuration
httpAddress = mkOption {
type = types.str;
default = "127.0.0.1:4180";
description = ''
HTTPS listening address. This module does not expose the port by
default. If you want this URL to be accessible to other machines, please
add the port to <literal>networking.firewall.allowedTCPPorts</literal>.
'';
};
htpasswd = {
file = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Additionally authenticate against a htpasswd file. Entries must be
created with <literal>htpasswd -s</literal> for SHA encryption.
'';
};
displayForm = mkOption {
type = types.bool;
default = true;
description = ''
Display username / password login form if an htpasswd file is provided.
'';
};
};
customTemplatesDir = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Path to custom HTML templates.
'';
};
proxyPrefix = mkOption {
type = types.str;
default = "/oauth2";
description = ''
The url root path that this proxy should be nested under.
'';
};
tls = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to serve over TLS.
'';
};
certificate = mkOption {
type = types.path;
description = ''
Path to certificate file.
'';
};
key = mkOption {
type = types.path;
description = ''
Path to private key file.
'';
};
httpsAddress = mkOption {
type = types.str;
default = ":443";
description = ''
<literal>addr:port</literal> to listen on for HTTPS clients.
Remember to add <literal>port</literal> to
<literal>allowedTCPPorts</literal> if you want other machines to be
able to connect to it.
'';
};
};
requestLogging = mkOption {
type = types.bool;
default = true;
description = ''
Log requests to stdout.
'';
};
####################################################
# UNKNOWN
# XXX: Is this mandatory? Is it part of another group? Is it part of the provider specification?
scope = mkOption {
# XXX: jml suspects this is always necessary, but the command-line
# doesn't require it so making it optional.
type = types.nullOr types.str;
default = null;
description = ''
OAuth scope specification.
'';
};
profileURL = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Profile access endpoint.
'';
};
};
config = mkIf cfg.enable {
users.extraUsers.oauth2_proxy = {
description = "OAuth2 Proxy";
};
systemd.services.oauth2_proxy = {
description = "OAuth2 Proxy";
path = [ cfg.package ];
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
serviceConfig = {
User = "oauth2_proxy";
Restart = "always";
ExecStart = "${cfg.package.bin}/bin/oauth2_proxy ${mkCommandLine cfg}";
};
};
};
}

View file

@ -337,6 +337,7 @@ let
allModules =
concatMap (svc: svc.extraModulesPre) allSubservices
++ map (name: {inherit name; path = "${httpd}/modules/mod_${name}.so";}) apacheModules
++ optional mainCfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; }
++ optional enablePHP { name = "php5"; path = "${php}/modules/libphp5.so"; }
++ concatMap (svc: svc.extraModules) allSubservices
++ extraForeignModules;
@ -541,6 +542,12 @@ in
'';
};
enableMellon = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the mod_auth_mellon module.";
};
enablePHP = mkOption {
type = types.bool;
default = false;
@ -650,6 +657,7 @@ in
environment =
optionalAttrs enablePHP { PHPRC = phpIni; }
// optionalAttrs mainCfg.enableMellon { LD_LIBRARY_PATH = "${pkgs.xmlsec}/lib"; }
// (listToAttrs (concatMap (svc: svc.globalEnvVars) allSubservices));
preStart =

View file

@ -78,6 +78,8 @@ in {
type = types.listOf types.path;
description = "List of packages for which gsettings are overridden.";
};
debug = mkEnableOption "gnome-session debug messages";
};
environment.gnome3.packageSet = mkOption {
@ -159,7 +161,7 @@ in {
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
${gnome3.gnome_session}/bin/gnome-session&
${gnome3.gnome_session}/bin/gnome-session ${optionalString cfg.debug "--debug"} &
waitPID=$!
'';
};

View file

@ -170,7 +170,9 @@ in
services.xserver.displayManager.sddm = {
theme = "breeze";
themes = [
kde5.extra-cmake-modules # for the setup-hook
kde5.plasma-workspace
kde5.breeze-icons
(kde5.oxygen-icons or kde5.oxygen-icons5)
];
};

View file

@ -3,37 +3,43 @@
with lib;
let
cfg = config.services.xserver.windowManager.i3;
wmCfg = config.services.xserver.windowManager;
i3option = name: {
enable = mkEnableOption name;
configFile = mkOption {
default = null;
type = types.nullOr types.path;
description = ''
Path to the i3 configuration file.
If left at the default value, $HOME/.i3/config will be used.
'';
};
};
i3config = name: pkg: cfg: {
services.xserver.windowManager.session = [{
inherit name;
start = ''
${pkg}/bin/i3 ${optionalString (cfg.configFile != null)
"-c \"${cfg.configFile}\""
} &
waitPID=$!
'';
}];
environment.systemPackages = [ pkg ];
};
in
{
options = {
services.xserver.windowManager.i3 = {
enable = mkEnableOption "i3";
configFile = mkOption {
default = null;
type = types.nullOr types.path;
description = ''
Path to the i3 configuration file.
If left at the default value, $HOME/.i3/config will be used.
'';
};
};
options.services.xserver.windowManager = {
i3 = i3option "i3";
i3-gaps = i3option "i3-gaps";
};
config = mkIf cfg.enable {
services.xserver.windowManager = {
session = [{
name = "i3";
start = ''
${pkgs.i3}/bin/i3 ${optionalString (cfg.configFile != null)
"-c \"${cfg.configFile}\""
} &
waitPID=$!
'';
}];
};
environment.systemPackages = with pkgs; [ i3 ];
};
config = mkMerge [
(mkIf wmCfg.i3.enable (i3config "i3" pkgs.i3 wmCfg.i3))
(mkIf wmCfg.i3-gaps.enable (i3config "i3-gaps" pkgs.i3-gaps wmCfg.i3-gaps))
];
}

View file

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.services.xbanish;
in {
options.services.xbanish = {
enable = mkEnableOption "xbanish";
arguments = mkOption {
description = "Arguments to pass to xbanish command";
default = "";
example = "-d -i shift";
type = types.str;
};
};
config = mkIf cfg.enable {
systemd.user.services.xbanish = {
description = "xbanish hides the mouse pointer";
wantedBy = [ "default.target" ];
serviceConfig.ExecStart = ''
${pkgs.xbanish}/bin/xbanish ${cfg.arguments}
'';
serviceConfig.Restart = "always";
};
};
}

View file

@ -95,7 +95,7 @@ in
LimitNPROC = 1048576;
} // proxy_env;
path = [ pkgs.kmod ] ++ (optional (cfg.storageDriver == "zfs") pkgs.zfs);
path = [ config.system.sbin.modprobe ] ++ (optional (cfg.storageDriver == "zfs") pkgs.zfs);
environment.MODULE_DIR = "/run/current-system/kernel-modules/lib/modules";
postStart = if cfg.socketActivation then "" else cfg.postStart;

View file

@ -3,17 +3,39 @@
import ./make-test.nix ({ pkgs, ...} : {
name = "grsecurity";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ copumpkin ];
maintainers = [ copumpkin joachifm ];
};
machine = { config, pkgs, ... }:
{ boot.kernelPackages = pkgs.linuxPackages_grsec_testing_server; };
{ security.grsecurity.enable = true;
boot.kernel.sysctl."kernel.grsecurity.deter_bruteforce" = 0;
security.apparmor.enable = true;
};
testScript =
''
$machine->succeed("uname -a") =~ /grsec/;
# FIXME: this seems to hang the whole test. Unclear why, but let's fix it
# $machine->succeed("${pkgs.paxtest}/bin/paxtest blackhat");
'';
testScript = ''
subtest "grsec-lock", sub {
$machine->succeed("systemctl is-active grsec-lock");
$machine->succeed("grep -Fq 1 /proc/sys/kernel/grsecurity/grsec_lock");
$machine->fail("echo -n 0 >/proc/sys/kernel/grsecurity/grsec_lock");
};
subtest "paxtest", sub {
# TODO: running paxtest blackhat hangs the vm
$machine->succeed("${pkgs.paxtest}/lib/paxtest/anonmap") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execbss") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execdata") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execheap") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/execstack") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotanon") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotbss") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotdata") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotheap") =~ /Killed/ or die;
$machine->succeed("${pkgs.paxtest}/lib/paxtest/mprotstack") =~ /Killed/ or die;
};
subtest "tcc", sub {
$machine->execute("echo -e '#include <stdio.h>\nint main(void) { puts(\"hello\"); return 0; }' >main.c");
$machine->succeed("${pkgs.tinycc.bin}/bin/tcc -run main.c");
};
'';
})

View file

@ -103,7 +103,7 @@ stdenv.mkDerivation rec {
'';
meta = with stdenv.lib; {
homepage = http://code.google.com/p/cantata/;
homepage = https://github.com/cdrummond/cantata;
description = "A graphical client for MPD";
license = licenses.gpl3;

View file

@ -68,14 +68,19 @@ in
stdenv.mkDerivation {
name = "sddm-${version}";
phases = "installPhase";
nativeBuildInputs = [ lndir makeQtWrapper ];
buildInputs = [ unwrapped ] ++ themes;
themes = map (pkg: pkg.out or pkg) themes;
inherit unwrapped;
unpackPhase = "true";
configurePhase = "runHook preConfigure; runHook postConfigure";
buildPhase = "runHook preBuild; runHook postBuild";
installPhase = ''
runHook preInstall
makeQtWrapper "$unwrapped/bin/sddm" "$out/bin/sddm"
mkdir -p "$out/share/sddm"
@ -85,6 +90,8 @@ stdenv.mkDerivation {
lndir -silent "$sddmDir" "$out/share/sddm"
fi
done
runHook postInstall
'';
inherit (unwrapped) meta;

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "atom-${version}";
version = "1.7.3";
version = "1.8.0";
src = fetchurl {
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
sha256 = "1fd6j05czir2z3bvkf0mixkfncp73jw8kgqgaqxjjg546381yb7a";
sha256 = "0x73n64y3jfwbwg6s9pmsajryrjrrx1a0dzf3ff6dbi5gvv950xi";
name = "${name}.deb";
};

View file

@ -23,13 +23,13 @@ let
in
stdenv.mkDerivation rec {
name = "emacs-25.0.94";
name = "emacs-25.0.95";
builder = ./builder.sh;
src = fetchurl {
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
sha256 = "19kd9iwj4rz7llihs7a4gmag98n3asrxn3jh6mdmyn24w2kmxi69";
sha256 = "0bmvg7cbrwfa9rbryjrqv2qcllgwja92sx9ikirl80r5d09caf0l";
};
patches = lib.optionals stdenv.isDarwin [

File diff suppressed because it is too large Load diff

View file

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

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, cmake, gettext, glib, libmsgpack, libtermkey
, libtool, libuv, lua, luajit, luaPackages, man, ncurses, perl, pkgconfig
, libtool, libuv, luajit, luaPackages, man, ncurses, perl, pkgconfig
, unibilium, makeWrapper, vimUtils, xsel
, withPython ? true, pythonPackages, extraPythonPackages ? []
@ -75,20 +75,14 @@ let
glib
libtermkey
libuv
# For some reason, `luajit` has to be listed after `lua`. See
# https://github.com/NixOS/nixpkgs/issues/14442
lua
luajit
libmsgpack
ncurses
neovimLibvterm
unibilium
luaPackages.lpeg
luaPackages.mpack
luaPackages.luabitop
] ++ optional withJemalloc jemalloc;
luajit
luaPackages.lua
] ++ optional withJemalloc jemalloc
++ lualibs;
nativeBuildInputs = [
cmake
@ -97,11 +91,13 @@ let
pkgconfig
];
LUA_CPATH = "${luaPackages.lpeg}/lib/lua/${lua.luaversion}/?.so;${luaPackages.mpack}/lib/lua/${lua.luaversion}/?.so;${luaPackages.luabitop}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = stdenv.lib.concatStringsSep ";" (map luaPackages.getLuaPath lualibs);
LUA_CPATH = stdenv.lib.concatStringsSep ";" (map luaPackages.getLuaCPath lualibs);
configureFlags = [
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
"-DENABLE_JEMALLOC=ON"
lualibs = [ luaPackages.mpack luaPackages.lpeg luaPackages.luabitop ];
cmakeFlags = [
"-DLUA_PRG=${luaPackages.lua}/bin/lua"
];
preConfigure = ''

View file

@ -1,6 +1,6 @@
# TODO tidy up eg The patchelf code is patching gvim even if you don't build it..
# but I have gvim with python support now :) - Marc
args@{pkgs, source ? "default", fetchurl, fetchhg, stdenv, ncurses, pkgconfig, gettext
args@{pkgs, source ? "default", fetchurl, fetchFromGitHub, stdenv, ncurses, pkgconfig, gettext
, composableDerivation, lib, config, glib, gtk, python, perl, tcl, ruby
, libX11, libXext, libSM, libXpm, libXt, libXaw, libXau, libXmu
, libICE
@ -50,10 +50,11 @@ composableDerivation {
builtins.getAttr source {
"default" =
# latest release
args.fetchhg {
url = "http://vim.googlecode.com/hg/";
rev = "v${version}";
sha256 = "01m67lvnkz0ad28ifj964zcg63y5hixplbnzas5xarj8vl3pc5a0";
args.fetchFromGitHub {
owner = "vim";
repo = "vim";
rev = "v${version}";
sha256 = "04hp2gqbbj9h872bgj1g9xcaj5qlg9q45v6by2ch9n105dng9aj3";
};
"vim-nox" =

View file

@ -0,0 +1,45 @@
{ stdenv, lib, fetchgit, cmake, extra-cmake-modules, makeQtWrapper
, karchive, kconfig, kwidgetsaddons, kcompletion, kcoreaddons
, kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem
, kio, kcrash
, boost, libraw, fftw, eigen, exiv2, lcms2, gsl, openexr
, openjpeg, opencolorio, vc, poppler_qt5, curl, ilmbase
}:
stdenv.mkDerivation rec {
name = "krita-${version}";
version = "3.0";
src = fetchgit {
url = "http://phabricator.kde.org/diffusion/KRITA/krita.git";
rev = "refs/tags/v${version}";
sha256 = "0aas86667ncp8jz00c8qk7bm26g76l65cysh06wxr8kxbvqynrdn";
};
nativeBuildInputs = [ cmake extra-cmake-modules makeQtWrapper ];
buildInputs = [
karchive kconfig kwidgetsaddons kcompletion kcoreaddons kguiaddons
ki18n kitemmodels kitemviews kwindowsystem kio kcrash
boost libraw fftw eigen exiv2 lcms2 gsl openexr
openjpeg opencolorio vc poppler_qt5 curl ilmbase
];
NIX_CFLAGS_COMPILE = [ "-I${ilmbase}/include/OpenEXR" ];
enableParallelBuilding = true;
postInstall = ''
for i in $out/bin/*; do
wrapQtProgram "$i"
done
'';
meta = with stdenv.lib; {
description = "A free an open source painting application";
homepage = "https://krita.org/";
maintainers = with maintainers; [ abbradar ];
platforms = platforms.linux;
licenses = licenses.gpl2;
};
}

View file

@ -1,10 +1,10 @@
{ callPackage, fetchgit, ... } @ args:
callPackage ./generic.nix (args // {
version = "2016-05-09";
version = "2016-06-11";
src = fetchgit {
sha256 = "17y2l59vz2l0y5ya89390x6lim75p1mp8s5c2wzp9l4d5fy8j8dd";
rev = "1e013654cc3af09f4731ab9ec8d8324d03a7de4a";
sha256 = "0jpavig7bg7l72drlwipmsg03j6qdy5aq2r3kj6a2h6ahpnm2549";
rev = "5ba37467e88ca8052973b37128ce8fd36ad5d61d";
url = "git://alioth.debian.org/git/sane/sane-backends.git";
};
})

View file

@ -31,6 +31,8 @@ stdenv.mkDerivation rec {
configurePhase = "";
buildPhase = "";
patches = [ ./numpy-cast.patch ];
installPhase = ''
# Install Python code.

View file

@ -0,0 +1,12 @@
diff -urN Cura-15.04.old/Cura/util/sliceEngine.py Cura-15.04/Cura/util/sliceEngine.py
--- Cura-15.04.old/Cura/util/sliceEngine.py 2016-05-07 20:34:17.305020334 +0200
+++ Cura-15.04/Cura/util/sliceEngine.py 2016-05-07 20:40:02.993286467 +0200
@@ -343,7 +343,7 @@
objMax[1] = max(oMax[1], objMax[1])
if objMin is None:
return
- pos += (objMin + objMax) / 2.0 * 1000
+ pos = numpy.add( pos, (objMin + objMax) / 2.0 * 1000, out=pos, casting='unsafe')
commandList += ['-s', 'posx=%d' % int(pos[0]), '-s', 'posy=%d' % int(pos[1])]
vertexTotal = [0] * 4

View file

@ -1,39 +1,43 @@
{ stdenv, fetchFromGitHub, makeWrapper, automake, autoconf, libtool,
pkgconfig, file, intltool, libxml2, json_glib , sqlite, itstool,
vala, gnome3
vala, gnome3, wrapGAppsHook
}:
stdenv.mkDerivation rec {
name = "font-manager-${version}";
version = "git-2016-03-02";
version = "2016-06-04";
src = fetchFromGitHub {
owner = "FontManager";
repo = "master";
rev = "743fb83558c86bfbbec898106072f84422c175d6";
sha256 = "1sakss6irfr3d8k39x1rf72fmnpq47akhyrv3g45a3l6v6xfqp3k";
rev = "07b47c153494f19ced291c84437349253c5bde4d";
sha256 = "13pjmvx31fr8fqhl5qwawhawfl7as9c50qshzzig8n5g7vb5v1i0";
};
enableParallelBuilding = true;
buildInputs = [
nativeBuildInputs = [
makeWrapper
pkgconfig
automake autoconf libtool
file
intltool
vala
gnome3.yelp_tools
wrapGAppsHook
];
buildInputs = [
libxml2
json_glib
sqlite
itstool
vala
gnome3.gtk
gnome3.gucharmap
gnome3.libgee
gnome3.file-roller
gnome3.yelp_tools
];
enableParallelBuilding = true;
preConfigure = ''
NOCONFIGURE=true ./autogen.sh
chmod +x configure;
@ -42,13 +46,6 @@ stdenv.mkDerivation rec {
configureFlags = "--disable-pycompile";
preFixup = ''
for prog in "$out/bin/"* "$out/libexec/font-manager/"*; do
wrapProgram "$prog" \
--prefix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH"
done
'';
meta = {
homepage = https://fontmanager.github.io/;
description = "Simple font management for GTK+ desktop environments";
@ -62,8 +59,8 @@ stdenv.mkDerivation rec {
Font Manager is NOT a professional-grade font management solution.
'';
license = stdenv.lib.licenses.gpl3;
maintainers = [ stdenv.lib.maintainers.romildo ];
repositories.git = https://github.com/FontManager/master;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.romildo ];
};
}

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pkgconfig, makeWrapper, gtk, gnome3, libgksu,
intltool, libstartup_notification, gtk_doc
{ stdenv, fetchurl, pkgconfig, gtk, gnome3, libgksu,
intltool, libstartup_notification, gtk_doc, wrapGAppsHook
}:
stdenv.mkDerivation rec {
@ -12,6 +12,18 @@ stdenv.mkDerivation rec {
sha256 = "0npfanlh28daapkg25q4fncxd89rjhvid5fwzjaw324x0g53vpm1";
};
nativeBuildInputs = [
pkgconfig intltool gtk_doc wrapGAppsHook
];
buildInputs = [
gtk gnome3.gconf libstartup_notification gnome3.libgnome_keyring
];
propagatedBuildInputs = [
libgksu
];
patches = [
# https://savannah.nongnu.org/bugs/index.php?36127
./gksu-2.0.2-glib-2.31.patch
@ -23,15 +35,6 @@ stdenv.mkDerivation rec {
configureFlags = "--disable-nautilus-extension";
buildInputs = [
pkgconfig makeWrapper gtk gnome3.gconf intltool
libstartup_notification gnome3.libgnome_keyring gtk_doc
];
propagatedBuildInputs = [
libgksu
];
meta = {
description = "A graphical frontend for libgksu";
longDescription = ''

View file

@ -0,0 +1,37 @@
{ stdenv, fetchFromGitHub, poppler, pkgconfig, gdk_pixbuf, SDL, gtk }:
stdenv.mkDerivation rec {
name = "green-pdfviewer-${version}";
version = "nightly-2014-04-22";
src = fetchFromGitHub {
owner = "schandinat";
repo = "green";
rev = "0b516aec17915d9742d8e505d2ed383a3bdcea61";
sha256 = "0d0lv33flhgsxhc77kfp2avdz5gvml04r8l1j95yjz2rr096lzlj";
};
buildInputs = [ poppler pkgconfig gdk_pixbuf SDL gtk ];
patches = [
./gdk-libs.patch
];
buildPhase = ''
make PREFIX=$out
'';
installPhase = ''
mkdir -p $out/bin $out/share/man1
make install PREFIX=$out MANDIR=$out/share
'';
meta = with stdenv.lib; {
homepage = https://github.com/schandinat/green/;
description = "Viewer for PDF files, uses SDL and libpoppler";
platforms = platforms.unix;
license = licenses.gpl3;
maintainers = [ maintainers.vrthra ];
};
}

View file

@ -0,0 +1,55 @@
Common subdirectories: green.old/debian and green.new/debian
diff -u green.old/green.h green.new/green.h
--- green.old/green.h 2016-06-12 18:11:56.779434416 -0700
+++ green.new/green.h 2016-06-12 18:14:38.830557379 -0700
@@ -19,7 +19,14 @@
#include <stdbool.h>
-#include "glib/poppler.h"
+#include "poppler.h"
+#include "gdk-pixbuf/gdk-pixbuf.h"
+#include "gdk-pixbuf/gdk-pixbuf-core.h"
+#include "gdk-pixbuf/gdk-pixbuf-features.h"
+#include "gdk-pixbuf/gdk-pixbuf-enum-types.h"
+
+ #define GREEN_FULLSCREEN 0x0001
+
#define GREEN_FULLSCREEN 0x0001
diff -u green.old/Makefile green.new/Makefile
--- green.old/Makefile 2016-06-12 18:11:56.779434416 -0700
+++ green.new/Makefile 2016-06-12 18:13:09.591974048 -0700
@@ -17,6 +17,12 @@
SDL_CFLAGS := $$(sdl-config --cflags)
SDL_LIBS := $$(sdl-config --libs)
+GDKPIXBUF_CFLAGS := $$(pkg-config gdk-pixbuf-2.0 --cflags)
+GDKPIXBUF_LIBS := $$(pkg-config gdk-pixbuf-2.0 --libs)
+
+GTK_CFLAGS := $$(pkg-config gtk+-2.0 --cflags)
+GTK_LIBS := $$(pkg-config gtk+-2.0 --libs)
+
all: green
@@ -28,13 +34,14 @@
$(INSTALL) green.1 $(MANDIR)/man1/
green: main.o green.o sdl.o
- $(CC) $^ $(POPPLER_LIBS) $(SDL_LIBS) -o $@
+ $(CC) $^ $(POPPLER_LIBS) $(SDL_LIBS) $(GDKPIXBUF_LIBS) $(GTK_LIBS) -o $@
main.o: main.c green.h
- $(CC) $(CONFIG) $(CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
+ $(CC) $(CONFIG) $(CFLAGS) $(GDKPIXBUF_CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
green.o: green.c green.h
- $(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) -o $@
+ $(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) $(GDKPIXBUF_CFLAGS) -o $@
sdl.o: sdl.c green.h
- $(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) $(SDL_CFLAGS) -o $@
+ $(CC) $(CFLAGS) -c $< $(POPPLER_CFLAGS) $(SDL_CFLAGS) $(GDKPIXBUF_CFLAGS) $(GTK_CFLAGS) -o $@
+

View file

@ -3,6 +3,7 @@
with python3Packages;
buildPythonApplication rec {
# Reenable tests for 0.9.0, they are broken at the moment: #15981
version = "0.8.2";
name = "khal-${version}";
@ -32,7 +33,7 @@ buildPythonApplication rec {
buildInputs = [ setuptools_scm pytest pkgs.glibcLocales ];
checkPhase = ''
py.test
# py.test
'';
meta = with stdenv.lib; {

View file

@ -1,33 +1,36 @@
{ stdenv, makeWrapper, fetchgit, pkgconfig, ninja, ocaml, findlib, mupdf, lablgl
, gtk3, openjpeg, jbig2dec, mujs, xsel, openssl }:
, gtk3, openjpeg, jbig2dec, mujs, xsel, openssl, freetype, ncurses }:
let ocamlVersion = (builtins.parseDrvName (ocaml.name)).version;
in stdenv.mkDerivation rec {
name = "llpp-${version}";
version = "21-git-2015-07-30";
version = "21-git-2016-05-07";
src = fetchgit {
url = "git://repo.or.cz/llpp.git";
rev = "e9fe06d684b145a104cc319673076e069e853cac";
sha256 = "0w6kdjmh6jp5j88m213r0dg66ma42nxl6j4hjy4xnhkf52mg0iwx";
rev = "1beb003ca0f4ed90fda2823cb07c2eb674fc3ca4";
sha256 = "1r59yfm81zmiij401d3wc3zb1zc873ss02gkplbwi4lad2l0chba";
fetchSubmodules = false;
};
buildInputs = [ pkgconfig ninja makeWrapper ocaml findlib mupdf lablgl
gtk3 jbig2dec openjpeg mujs openssl ];
gtk3 jbig2dec openjpeg mujs openssl freetype ncurses ];
dontStrip = true;
configurePhase = ''
sh configure.sh -O -F ${mupdf}
sed -i 's;-lopenjpeg;-lopenjp2;g' .config
sed -i 's;$builddir/link\.so;link.so;g' build.ninja
sed -i -e 's+-I \$srcdir/mupdf/include -I \$srcdir/mupdf/thirdparty/freetype/include+-I ${freetype}/include+' build.sh
sed -i -e 's+-lmupdf +-lfreetype -lz -lharfbuzz -ljbig2dec -lopenjp2 -ljpeg -lmupdf +' build.sh
sed -i -e 's+-L\$srcdir/mupdf/build/native ++' build.sh
'';
buildPhase = "${ninja}/bin/ninja";
buildPhase = ''
sh ./build.sh build
'';
installPhase = ''
install -d $out/bin $out/lib
install build/llpp $out/bin
install link.so $out/lib
wrapProgram $out/bin/llpp \
--prefix CAML_LD_LIBRARY_PATH ":" "${lablgl}/lib/ocaml/${ocamlVersion}/site-lib/lablgl" \
--prefix CAML_LD_LIBRARY_PATH ":" "$out/lib" \

View file

@ -2,19 +2,25 @@
stdenv.mkDerivation rec {
name = "makeself-2.2.0";
src = fetchgit {
url = "https://github.com/megastep/makeself.git";
rev = "b836b9281ae99abe1865608b065551da56c80719";
sha256 = "f7c97f0f8ad8128f2f1b54383319f2cc44cbb05b60ced222784debdf326f23ad";
};
patchPhase = ''
sed -e "s|^HEADER=.*|HEADER=$out/share/${name}/makeself-header.sh|" -i makeself.sh
'';
installPhase = ''
mkdir -p $out/{bin,share/{${name},man/man1}}
mv makeself.lsm README.md $out/share/${name}
mv makeself.sh $out/bin/makeself
mv makeself.1 $out/share/man/man1/
mv makeself-header.sh $out/share/${name}
sed -e 's|HEADER=`dirname "$0"`/makeself-header.sh|HEADER=`dirname $0`/../share/${name}/makeself-header.sh|' -i $out/bin/makeself
cp makeself.lsm README.md $out/share/${name}
cp makeself.sh $out/bin/makeself
cp makeself.1 $out/share/man/man1/
cp makeself-header.sh $out/share/${name}
'';
meta = with stdenv.lib; {
homepage = http://megastep.org/makeself;
description = "Utility to create self-extracting packages";

View file

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

View file

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

View file

@ -0,0 +1,38 @@
{ stdenv, fetchurl, pkgconfig, libX11, gdk_pixbuf, cairo, libXft, gtk2, fribidi }:
stdenv.mkDerivation rec {
name = "mlterm-${version}";
version = "3.3.8";
src = fetchurl {
url = "https://downloads.sourceforge.net/project/mlterm/01release/${name}/${name}.tar.gz";
sha256 = "088pgxynzxxii7wdmjp2fdkxydirx4k05588zkhlzalkb5l8ji1i";
};
buildInputs = [ pkgconfig libX11 gdk_pixbuf cairo libXft gtk2 fribidi ];
preConfigure = ''
sed -ie 's#-L/usr/local/lib -R/usr/local/lib##g' \
xwindow/libtype/Makefile.in \
main/Makefile.in \
java/Makefile.in \
tool/mlimgloader/Makefile.in \
tool/registobmp/Makefile.in \
tool/mlconfig/Makefile.in
sed -ie 's;cd ..srcdir. && rm -f ...lang..gmo.*;;g' tool/mlconfig/po/Makefile.in.in
'';
configureFlags = [
"--with-imagelib=gdk-pixbuf"
"--with-type-engines=cairo,xft,xcore"
"--with-x"
"--enable-ind"
];
meta = with stdenv.lib; {
homepage = https://sourceforge.net/projects/mlterm/;
license = licenses.bsd2;
maintainers = [ maintainers.vrthra ];
platforms = with platforms; linux;
};
}

View file

@ -1,42 +1,25 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, zlib, freetype, libjpeg, jbig2dec, openjpeg
, libX11, libXext }:
{ stdenv, fetchurl, fetchpatch, pkgconfig
, zlib, freetype, libjpeg, jbig2dec, openjpeg
, libX11, libXcursor, libXrandr, libXinerama, libXext, harfbuzz, mesa }:
stdenv.mkDerivation rec {
version = "1.8";
version = "1.9";
name = "mupdf-${version}";
src = fetchurl {
url = "http://mupdf.com/downloads/archive/${name}-source.tar.gz";
sha256 = "01n26cy41lc2fjri63s4js23ixxb4nd37aafry3hz4i4id6wd8x2";
sha256 = "15p2k1n3afc7bnqrc0zfqz31fjfq3rrrrj4fwwy5az26d11ynxhp";
};
NIX_CFLAGS_COMPILE= [ "-fPIC" ];
nativeBuildInputs = [ pkgconfig ];
propagatedBuildInputs = [ openjpeg libjpeg jbig2dec ];
buildInputs = [ zlib freetype libX11 libXext ];
buildInputs = [ zlib freetype libX11 libXcursor libXext harfbuzz mesa libXrandr libXinerama];
enableParallelBuilding = true;
installPhase = ''
make install prefix=$out
gcc -shared -o $out/lib/libmupdf.so.${version} -Wl,--whole-archive $out/lib/libmupdf.a -Wl,--no-whole-archive
my_soname = "libmupdf.so.1.3";
my_soname_js_none = "libmupdf-js-none.so.1.3";
preBuild = ''
export makeFlags="prefix=$out build=release XCFLAGS=-fpic"
export NIX_CFLAGS_COMPILE=" $NIX_CFLAGS_COMPILE -I$(echo ${openjpeg}/include/openjpeg-*) "
# Copied from Gentoo ebuild
rm -rf thirdparty
sed -e "\$a\$(MUPDF_LIB): \$(MUPDF_JS_NONE_LIB)" \
-e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname} -Wl,--no-undefined -o \$@ \$^ \$(MUPDF_JS_NONE_LIB) \$(LIBS)" \
-e "/^MUPDF_LIB :=/s:=.*:= \$(OUT)/${my_soname}:" \
-e "\$a\$(MUPDF_JS_NONE_LIB):" \
-e "\$a\\\t\$(QUIET_LINK) \$(CC) \$(LDFLAGS) --shared -Wl,-soname -Wl,${my_soname_js_none} -Wl,--no-undefined -o \$@ \$^ \$(LIBS)" \
-e "/^MUPDF_JS_NONE_LIB :=/s:=.*:= \$(OUT)/${my_soname_js_none}:" \
-i Makefile
sed -e "s/libopenjpeg1/libopenjp2/" -i Makerules
'';
postInstall = ''
ln -s ${my_soname} $out/lib/libmupdf.so
ln -s $out/lib/libmupdf.so.${version} $out/lib/libmupdf.so
mkdir -p "$out/lib/pkgconfig"
cat >"$out/lib/pkgconfig/mupdf.pc" <<EOF
@ -63,14 +46,14 @@ stdenv.mkDerivation rec {
Terminal=false
EOF
'';
enableParallelBuilding = true;
meta = {
homepage = http://mupdf.com/;
meta = with stdenv.lib; {
homepage = http://mupdf.com;
repositories.git = git://git.ghostscript.com/mupdf.git;
description = "Lightweight PDF viewer and toolkit written in portable C";
license = stdenv.lib.licenses.gpl3Plus;
maintainers = with stdenv.lib.maintainers; [ viric ];
platforms = with stdenv.lib.platforms; linux;
inherit version;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ viric vrthra ];
platforms = platforms.linux;
};
}

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "qtpass-${version}";
version = "1.1.1";
version = "1.1.3";
src = fetchzip {
url = "https://github.com/IJHack/qtpass/archive/v${version}.tar.gz";
sha256 = "1x1ic9as0a60gz664sf8d1qiq64ji7q60g19x0rlm3bvcp2612c8";
sha256 = "114rqvd2jl98c75zmhdwfmp44kxa4v459naiivb4w020d60ziq7l";
};
buildInputs = [ git gnupg pass qtbase qtsvg qttools ];

View file

@ -0,0 +1,17 @@
{ stdenv, lib, buildGoPackage, fetchgit, fetchhg, fetchbzr, fetchsvn }:
buildGoPackage rec {
name = "wego-${version}";
version = "20160407-${stdenv.lib.strings.substring 0 7 rev}";
rev = "81d72ffd761f032fbd73dba4f94bd94c8c2d53d5";
goPackagePath = "github.com/schachmat/wego";
src = fetchgit {
inherit rev;
url = "https://github.com/schachmat/wego";
sha256 = "14p3hvv82bsxqnbnzz8hjv75i39kzg154a132n6cdxx3vgw76gck";
};
goDeps = ./deps.json;
}

View file

@ -0,0 +1,10 @@
[
{
"include": "../../libs.json",
"packages": [
"github.com/mattn/go-colorable",
"github.com/mattn/go-runewidth",
"github.com/schachmat/ingo"
]
}
]

View file

@ -1,11 +1,11 @@
{ stdenv, fetchurl, xorg, ncurses, freetype, fontconfig, pkgconfig }:
stdenv.mkDerivation rec {
name = "xterm-320";
name = "xterm-325";
src = fetchurl {
url = "ftp://invisible-island.net/xterm/${name}.tgz";
sha256 = "19r4rs5pjq944m7aiqligazf6wgmv4f023x3bx183h1l8dbvn3d6";
sha256 = "06sz66z4hvjjkvm3r5a5z442iis8lz8yjfzc629pwhj01ixb0c9v";
};
buildInputs =
@ -13,9 +13,15 @@ stdenv.mkDerivation rec {
ncurses freetype fontconfig pkgconfig xorg.libXft xorg.luit
];
patches = [
./sixel-256.support.patch
];
configureFlags = [
"--enable-wide-chars"
"--enable-256-color"
"--enable-sixel-graphics"
"--enable-regis-graphics"
"--enable-load-vt-fonts"
"--enable-i18n"
"--enable-doublechars"
@ -39,7 +45,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = http://invisible-island.net/xterm;
license = "BSD";
maintainers = with stdenv.lib.maintainers; [viric];
maintainers = with stdenv.lib.maintainers; [viric vrthra];
platforms = with stdenv.lib.platforms; linux ++ darwin;
};
}

View file

@ -0,0 +1,11 @@
--- xterm-325/graphics.c 2016-05-17 03:04:40.000000000 -0700
+++ xterm-325/graphics.c 2016-06-11 16:37:29.552584281 -0700
@@ -667,7 +667,7 @@
case 330:
return 4U;
case 340:
- return 16U;
+ return 256U;
case 382:
return 2U;
default:

View file

@ -1,4 +1,8 @@
{ stdenv, fetchurl, pkgconfig, gtk, girara, ncurses, gettext, docutils, file, makeWrapper, zathura_icon, sqlite, glib }:
{ stdenv, lib, fetchurl, pkgconfig, gtk, girara, ncurses, gettext, docutils, file, makeWrapper, zathura_icon, sqlite, glib
, synctexSupport ? true, texlive ? null
}:
assert synctexSupport -> texlive != null;
stdenv.mkDerivation rec {
version = "0.3.6";
@ -9,7 +13,8 @@ stdenv.mkDerivation rec {
sha256 = "0fyb5hak0knqvg90rmdavwcmilhnrwgg1s5ykx9wd3skbpi8nsh8";
};
buildInputs = [ pkgconfig file gtk girara gettext makeWrapper sqlite glib ];
buildInputs = [ pkgconfig file gtk girara gettext makeWrapper sqlite glib
] ++ lib.optional synctexSupport texlive.bin.core;
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
@ -18,7 +23,7 @@ stdenv.mkDerivation rec {
"RSTTOMAN=${docutils}/bin/rst2man.py"
"VERBOSE=1"
"TPUT=${ncurses.out}/bin/tput"
];
] ++ lib.optional synctexSupport "WITH_SYNCTEX=1";
postInstall = ''
wrapProgram "$out/bin/zathura" \

View file

@ -1,4 +1,4 @@
{ callPackage, lib, pkgs, fetchurl, stdenv, useMupdf }:
{ callPackage, lib, pkgs, fetchurl, stdenv, useMupdf, synctexSupport ? true }:
rec {
inherit stdenv;
@ -8,6 +8,7 @@ rec {
zathura_core = callPackage ./core {
gtk = pkgs.gtk3;
zathura_icon = icon;
inherit synctexSupport;
};
zathura_pdf_poppler = callPackage ./pdf-poppler { };

View file

@ -1,17 +0,0 @@
--- zathura-pdf-mupdf-0.2.7/config.mk
+++ zathura-pdf-mupdf-0.2.7/config.mk
@@ -32,10 +32,11 @@
OPENSSL_INC ?= $(shell pkg-config --cflags libcrypto)
OPENSSL_LIB ?= $(shell pkg-config --libs libcrypto)
-MUPDF_LIB ?= -lmupdf -lmujs
+MUPDF_INC ?= $(shell pkg-config --cflags mupdf)
+MUPDF_LIB ?= $(shell pkg-config --libs mupdf)
-INCS = ${GTK_INC} ${GIRARA_INC} ${OPENSSL_INC} ${ZATHURA_INC}
-LIBS = ${GTK_LIB} ${GIRARA_LIB} ${MUPDF_LIB} ${OPENSSL_LIB} -ljbig2dec -lopenjp2 -ljpeg
+INCS = ${GTK_INC} ${GIRARA_INC} ${OPENSSL_INC} ${ZATHURA_INC} ${MUPDF_INC}
+LIBS = ${GTK_LIB} ${GIRARA_LIB} ${OPENSSL_LIB} ${MUPDF_LIB} -ljbig2dec -ljpeg
# flags
CFLAGS += -std=c99 -fPIC -pedantic -Wall -Wno-format-zero-length $(INCS)

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchurl, pkgconfig, zathura_core, gtk, girara, mupdf, openssl }:
{ stdenv, lib, fetchurl, pkgconfig, zathura_core, gtk, girara, mupdf, openssl, libjpeg, jbig2dec, openjpeg, fetchpatch}:
stdenv.mkDerivation rec {
version = "0.3.0";
@ -9,13 +9,15 @@ stdenv.mkDerivation rec {
sha256 = "1j3j3wbp49walb19f0966qsnlqbd26wnsjpcxfbf021dav8vk327";
};
buildInputs = [ pkgconfig zathura_core gtk girara openssl mupdf ];
buildInputs = [ pkgconfig zathura_core gtk girara openssl mupdf libjpeg jbig2dec openjpeg ];
makeFlags = [ "PREFIX=$(out)" "PLUGINDIR=$(out)/lib" ];
patches = [
./config.patch
];
patches = [(fetchpatch {
name = "mupdf-1.9.patch";
url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/mupdf-1.9.patch?h=packages/zathura-pdf-mupdf";
sha256 = "185wgg0z4b0z5aybcnnyvbs50h43imn5xz3nqmya4rk4v5bwy49y";
})];
meta = with lib; {
homepage = http://pwmt.org/projects/zathura/;

View file

@ -4,189 +4,189 @@
# ruby generate_sources.rb 46.0.1 > sources.nix
{
version = "47.0b9";
version = "48.0b1";
sources = [
{ locale = "ach"; arch = "linux-i686"; sha512 = "9b015901ec00815e486c36cb0f81301301eda6646dd8279aa1672d550ca6cc6ed9d9044b1ed9339bb7e46dd8b578cb4774857125d127827020e0ddfe2c1ab5c6"; }
{ locale = "ach"; arch = "linux-x86_64"; sha512 = "49f0699dc92c00f9ff5c20bbbe595416db807254437d3c643bfcc4868977205391f2c3e0ac396c6724c1e5c8b641197f4b36e0a8a0ebb6e0f460394ec2973350"; }
{ locale = "af"; arch = "linux-i686"; sha512 = "7ecc57e0e882bfda24d5ba8258a482699a4ce66d0eb17317f3ae62a6567cb34627e8a29f2682fade775c22eace65d9c56c78e8d0a0936ed35ef9b5015886a57e"; }
{ locale = "af"; arch = "linux-x86_64"; sha512 = "978d4f1606d96fc9c37dc5b3cb7b62fd94d88edeab1c12a78d6e8a3a9da38fe7eacf4530e5abfb5d43a72f668914d463d2b1c631c527ccbd3f7a7eb869edcb94"; }
{ locale = "an"; arch = "linux-i686"; sha512 = "edf84af121ea41ec949858b5815466358405c039146666c098901ee96616532d09d204b8472aab645e4c2eef63a803b7011deafa6e3f5f9709e560c2cc07979b"; }
{ locale = "an"; arch = "linux-x86_64"; sha512 = "4fe7d9c230c57baca2e104958f644e2356c7849b9d7b1f06470783978b501317ffc2d4dc74e151f59dbc0c29e12e4cbdbb32a701044163fdbfe7b940ea5537c6"; }
{ locale = "ar"; arch = "linux-i686"; sha512 = "c3714acb9ad1564ed1b85fd7f0ccfe3905bb29b69d6cb766e1b8831b629d161e7b27d1682e7f4ba56c000fc17c75f3da9e75c907a77185776c02df61e9521199"; }
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "14fd3b575cbd1580e62b149e379faee3ad34601dfc3f759afa81af5210a4236182df6ab22dfeba2fae2626199c6d22c112fcb34c379d374122d259bec6dc7444"; }
{ locale = "as"; arch = "linux-i686"; sha512 = "1afe17a6b4f0d1cf35f6468937c0a103edcf74d9d299b374e0413887d2cf9878532cfbcbceccf180d00735b3c45f474aa13e68911b6def8a31142c0e5f64242c"; }
{ locale = "as"; arch = "linux-x86_64"; sha512 = "45741f5435b32a494565f0953b8da4f5c83182dc96daa958506783a04ab2bbec78c30a72f4dfb2f0b42c1b988118bdd00599285d3da99cc22bf4ae9984c6261c"; }
{ locale = "ast"; arch = "linux-i686"; sha512 = "913ad74888c00a8b96daef346d20d5704e92c5bc82db82edc685cbdb1465fd8e472195ec80cd6847ff75229c7ce8a0e0496e747fca50ee70b22a23fcb3a856d3"; }
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "22e8177a8d2d88ae82c830768b3812ea4f6d54e173fc6ab42a6c2edef1ee1c696e678de2945caaadcccaef0023a317657f1f4111a60aa617dc6ac84176d99568"; }
{ locale = "az"; arch = "linux-i686"; sha512 = "fa6cad0fc70e060a58e648b7a4b52da9e134739534d4d9b640e3026fe9a18b93bde0b4c57803bfbf0cb8b2fb52ef82879f1ebd76f06d6b9d88eca3d82436c34b"; }
{ locale = "az"; arch = "linux-x86_64"; sha512 = "36531eccbb275c3b62c7c32d8169d8190217bf5bd80ff145fc73a35569b7e25685e2b7d2e64fb17994c0a463eaa323e8c0b0577c77b3a725a696ffa839c883d2"; }
{ locale = "be"; arch = "linux-i686"; sha512 = "484f31cd01f745c167657d1353b1d0db54dafde2a00222de63436d1d2eea12563b923c9b4d6ea9fa9b42012b1b6eb9da3413e806ccf8c692ae19a901133910d6"; }
{ locale = "be"; arch = "linux-x86_64"; sha512 = "a521285ed012191b7da91051cd77de1d48a8eea5804f968a208c6fe171b10ed9d4085680458e59dbf23a42ba689dddabfd4ed838a9771f57d542c05a685f83be"; }
{ locale = "bg"; arch = "linux-i686"; sha512 = "efa2d080e04ffe895be3a74e05250e18408c68ac96adeb52172ffeadeb5e18c6d1a667baa7eb6b336ba22449b4ea0ec435b98b984be4550c985e85128d87d135"; }
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "e32fa17ce32ec8e206d162825f548582be9774d97eaaedb4e6d7f95b917bbb7e1d88f498d3a1fcbd7f091238079bf6903212879e4a73cb9e9feab18d234fe0b7"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "8b537e121d9829d7af68eb3da08ff98a144e7257c38640ebc8665cbbc946a96f9d359d5eb061dfe29fdb45dfc412a7fe26849e048469ff30d33c1c60056e862c"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "97416decc38d2d94d85d45b1f075bf8ab7581f3014bf58c1eb30b1ad2ba791d98e3c3f1985d2c934ae767fea755a19f6c16f21717ed92d659d35aa486f16485e"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha512 = "7778763307699171aba4cd191b07fa0510ce31b33636b40a4e6c5958903f05b94ff06a00c6e73db604b7097dc8afee80018bd40224e68eceec39845c9c734a72"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "3433c797c912183ddece699c28698449bbff1623ac6c8dcf22a7568ad8711daeac45c1bcf45ccdf7f726b93bb1daa8e090eee66707fddb2a335c27a7537fb723"; }
{ locale = "br"; arch = "linux-i686"; sha512 = "4ec33ca955cbb729ef87fa85afdd15565bbde15ff6dfdc8a0e1e5734e651568d9daad4fbd5298303b7eade3962838eeaaa9e5420644744b910cfad98d81fb216"; }
{ locale = "br"; arch = "linux-x86_64"; sha512 = "7b6bca964f78321fc66ea79d4d28c817fc6b39ad6f6e46aabe8a2479cfa72e3c8e4603f7a753470a2c41e5a79aa3fc9e71b9cd28fd49189ad6679e839577024a"; }
{ locale = "bs"; arch = "linux-i686"; sha512 = "a5afdde737bac2e2923d831d3c75243c02d7f660c710b74112bc23d40e360a0ca1e6bd2185da1d2fc57324def9c67ea4959c0b16d59c04a19e846db0e2597e5a"; }
{ locale = "bs"; arch = "linux-x86_64"; sha512 = "74621639534d949dd385745b61c008835156d8c0a3d200aa494bd8038e8c5b9c297f8be4dfe6c1e49c112ea7c2d626398dbc71f85e53bb7fb26f83492643cec9"; }
{ locale = "ca"; arch = "linux-i686"; sha512 = "304e3558a0f96825ead7832f0400f13cd5ca6e45aea93f1c47682bffdc0fab9b32ca20a5c640dbe0c57be422e49ba00497d2a95f00f4edda79a946841bd201ec"; }
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "0029b9273f0d45c161ad57072cac048a265501a7179e11189b015201e96c2d826c30a44cf86277a9237e9b0fde7c0a9bf03a48a2bcf82b6141ae01f5500c380b"; }
{ locale = "cak"; arch = "linux-i686"; sha512 = "6eebf5ad6efbc840e15de942f125fcdd2299feaf2bf0bbeab309372b1b8dc205c9b62c0ae57fde0922b04ead1197c0d877b84ea58798a3f2361e937893bde51e"; }
{ locale = "cak"; arch = "linux-x86_64"; sha512 = "5154dabd368ab42ce489b1b7c0b0b11493a17b8821449c19a16241e6b05eaa092e8c7d744c4df9c5152d8d96c56710f56ca87643e92d0a2ac5de02567b59c8ef"; }
{ locale = "cs"; arch = "linux-i686"; sha512 = "b3f93887371fd444163bd435300a3c34fa18bf045ebf7f1be1465efe84b78073c6c52f5817724175403fb0e1881c498d9c79e5c53bddcbd6eb0fd6bbd2f10fdc"; }
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "a11acdd2efa852120c9fe0f6384dbe81f90333104c3d7a5ef0ad6780e92331e723b51c571d0374308726de454fedbbd58d18c2c5782d96ae6f7036da653b3e28"; }
{ locale = "cy"; arch = "linux-i686"; sha512 = "490368cdd45c4a5f62c805bdd71217bc2aada185a7c7afb120da8cb2c050198ccf8faf853cf8af4a1fff68f3685318f18e63f7722bb42ceb3bf061ca667df1e5"; }
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "d314a9bf43e2b7580c27937ecd21a7bbdf071bff3c8e3ffb6cab7c7a2df1b06ba21eb4cd7d71bf4ffe00e743484de9917ac9b568169e9813889e3641659cb947"; }
{ locale = "da"; arch = "linux-i686"; sha512 = "128c5fdebe1ca256a2012a6cbe9ea1478b86784c265463431da55c6d0a624e4f8ab3f915efc6f5c1d01b65c615bc2f882aae541049f8be6ed3c94513fec41803"; }
{ locale = "da"; arch = "linux-x86_64"; sha512 = "f1cb5332b566399d89a46e75bac80ae3579607e7cd55e6f5f5099b99d09203fa9aa8a72b2b3d279eb9e8de0957ed757b96d06f8faa49f3b56e3184ec6cc7bf4b"; }
{ locale = "de"; arch = "linux-i686"; sha512 = "39ded240ca93fffd02ec72c03abcf9296d51890650a61a09baa43815bc602f6b54d1503da8d1a82da79b83559c6cd2299fa69a233e90a96cfd6e93d05bec6b18"; }
{ locale = "de"; arch = "linux-x86_64"; sha512 = "4c99b6e6fdcea845e38a708f7257b5e0f50ae9aff8d4d666d70a15531f346ed5a0c6dfbc8bd821eedb9438ef3de29c475b936722500dc6f81aef7e43dc6af68c"; }
{ locale = "dsb"; arch = "linux-i686"; sha512 = "4647cfd5e16c8ed9e008f96389de9009a3607aba607671b57b90d64d7be545e07d4bb4d33aaf8f38935bf9c6edb600e5145e5186ff7bbf7998c87a59714d8392"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "a3e2dbccf984b1b0c43ebe782770bd124d55fc957620666638e9b4d8b61ef2bf355a5193bf2456a68d68e344f198683a8bb2549bd37444f2d05eece674d171ae"; }
{ locale = "el"; arch = "linux-i686"; sha512 = "d1de11f2f41ddca5eb9beb4278ddf8237f74b46a36eef782de6f204210f0f5cfb0c3a099ae8224795ed414884183f5afbf7606831a4016f16a64fe5b2019c003"; }
{ locale = "el"; arch = "linux-x86_64"; sha512 = "c1cc9504b4b287feeadd67cc1f6888a3bb0519792b63d827291c0c3d30f86b672d8ed77865a60feb3c85e792b874aef80fb0f0c7aa287ee9fe41f16699918900"; }
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "5fa39b5c3e05d046675e14b4ff7e6e87fc16680706137a7b9f3d5683322b783dd5201ec7f6a08019753683cad6fd69c1169d1d9453c54ff3e934c1b461d18001"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "fd7f8b51c54350ccfd9f78780c15c0e8e99ca8b437f1fc41d0f828deb742b33a610751c6d0cb9689bd5ec293a86dea6301e0e25c2de70df3ebc2101259ad7e4d"; }
{ locale = "en-US"; arch = "linux-i686"; sha512 = "5ed8597fc5604dccbd34c82c6d63a1033ed338b8267966901d7fd949d2a5ea3a1c8366279b4f1fedd44d6bcbac00b894c688f4e6a4816da401fa1ea68490ae4e"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "345125c0c2e66f83c8d360047bd212b949a5de4a880e956e8ba74e6503c78081eb3fbc693522d0a32af4dd6f1bf077d8f9565aef0ebbd0d6aa39eca5444b6e2a"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha512 = "60dd889ef7e710849881dda8ac25714402b72eb2085c2f3358450d58a0e6441f82894c74917cdf5c8e06bbf5e7bd466f89bc0ca8317acf6e80da0b5efdd031b8"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "83ebd66b35e1e600cb7e9dde13a3202d6a22fd6afe311d9ef2465b83c876ce3b0145d12eb1ff5cc60b2552fb03998c147d3288347acf6e7162c6ca02a6651624"; }
{ locale = "eo"; arch = "linux-i686"; sha512 = "628ec95c60966e3f93499c7d2d528651c9b8f915190560c57d919dd0866f160692f5feff455610791a5c7526ed99b101a7e0ca1d97c1b7fe039ccfc847905d55"; }
{ locale = "eo"; arch = "linux-x86_64"; sha512 = "e7ae4b4228702c34798fa0f1eb509a039827a0b0eef788ee42b0fe7f8f90e99fee62ebb3f80c02f918594a814157242218602bd1592265f90d1137a1f572f9de"; }
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "641368566ab0cf40c010d8cb916bda9ff36bcd3a3e8db25f6095e119acbcb71d51fc6c659b882db9956cf131ce767cef0acefc5eeeabcd6db4b299be74979e2d"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "2ae2583ea9eaba2f53f0a00b5e83fefd7736766521124c42d7f7c15e6e3c0ebaba322ce49c3f08df2522bd4b01b5bbb489a226c7c59e172e4383043e97078725"; }
{ locale = "es-CL"; arch = "linux-i686"; sha512 = "0ac60e69b9fa53c901bcc63f0a458be52f1f0067e353f9cd43b89b6d735c6c39048d554c095cad5132fb0a6a0af7e980314ca705bd49c34f21e3c5ec92d99725"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dbb0fb1ca4343a218fb0d6ad65de347a6bf97e9721ea2642019890131fdc18b0d916a5bea0922a443816dd465ac8fdc205feb36b7d339f3494dfc763477965de"; }
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "9e6803906d9541f40523d1a887e6964002be6e8376e2cfaeda5dfb82bbd048808c9666b57edce980a4f687136c0fc467d8161b02562ba577e1d0f9d00a8ef67a"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "0a43efbc7442a3da4f0787601a761024a321d3ad53b1d8f787be95168b424beb29344ec7fa85e26bccca8ccc79500401459000c190b1702400905e0d2b7bb5d5"; }
{ locale = "es-MX"; arch = "linux-i686"; sha512 = "79f8e85a7aef41f88d1b3378d7d93f56c9dca202593b5818234acb9fa0629cbc96bdf206f030f4c68f1bcafb9807b8f7babb26befeac46fe5f4afd2e3d6ddeca"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha512 = "7cffe16943188a5cb55417aaeb72330797f451b0824c84d5542b39ac9d80f85def28c6a1aa79b78ac2ee5e4d636b361c86b015f962bdd6160d023e994a47e6a5"; }
{ locale = "et"; arch = "linux-i686"; sha512 = "4f9db463e7793bab3f1364d6b1fbbb4a3f48a9e48ac66ab5f940dd646929fecb8fb3d78bb64646d58391a9a9902fc36657d8b6555ea5c28ce046e1229eb04958"; }
{ locale = "et"; arch = "linux-x86_64"; sha512 = "0f4a5ead0ad8ff0a02c0f306e66cbff5a8603c44924b5f510b6a808ee0c8664103846b9742b154dd270db0a31a2b60c23512a4fa587897b738042e8ceac29a08"; }
{ locale = "eu"; arch = "linux-i686"; sha512 = "4d7250e0e65eab16a01422754b472d0b24236feefc1f8022f4a5f3c0e724f8c101fba4fcd5ba88f9a98e670548b4e21b13f86ead9e5b347c268ae52e5f070ac1"; }
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "6646bf30ef01a9bb3d2b48d3f1e0051cb5e00563da32b4a040d42d4937464724284a1da9d93790dfdf68d3c6307f5e82b165a54c35df5f0f8aa3c1ce63877b15"; }
{ locale = "fa"; arch = "linux-i686"; sha512 = "7d91d5f8cbe72b7bd6ae45623c6439ba1b0e9200c3faaaf22a2f6247fdd1444e3f26a45567068c85167e62f72c7552b784720e9e602ea46dd2c5b766c7d44f5d"; }
{ locale = "fa"; arch = "linux-x86_64"; sha512 = "e99dd536ca5d85049da3d3ba79af598d4893ba03cc4ae97dc4ee1e8a15a251ced7270ec2c09c19215c16cedbc9688a9373285c23ca874d44522cccaa50bd5b87"; }
{ locale = "ff"; arch = "linux-i686"; sha512 = "313aaf43f17d1c19646c50aab7f675d2e6c3023da69b244e7c6c2f7b32f943d9b12006255b03dc71ba7e636703398f66364d00639295112bbf1adba2da851bc6"; }
{ locale = "ff"; arch = "linux-x86_64"; sha512 = "61a5ff71dbca9f50bde8cbca397a837862fce479a3ddd1da1becf5d9ab0969ac02654a380b80a2a4d297f4b0c7867246766607b73ba07d712284b44e28e34f7a"; }
{ locale = "fi"; arch = "linux-i686"; sha512 = "dcf933aac369cb320ae42192aea3389d9124f424e04ae4551ffd25a3b7e3133d744c0febd708ef67a3f5d178211d9ca7b888a892706477aad69aa921d688995a"; }
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "2868e6ba0ba1c0bcdbebd72cff4b6e49967658f3492950b34de00a3615ed3386ca160ca3988aa244ae793a64954812a7f180a24da4528b0408777659b95bc755"; }
{ locale = "fr"; arch = "linux-i686"; sha512 = "dae726290dcde0caf9004f48eff28279a6450eb82188ecb79fd352f2449a8eccd4cbd1366978d7017d884dd4f356f7e19b7a41ee20d26b88b48e76655e9f727a"; }
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "47ad53ea1cebb08a88df5ea7d45343f94a4f7f53a2006dadb6bb6f49f4f70e072bbb0f32465a87d86e580a4edf5ca301c52e03b427c53ed45616823bba878593"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "304f0be7676ce05ab41ca4138eee5c93b5736929cde3882bae931be2191c47b81339a2f9e30126a3d9870776118040207861273c55063bbafc5d57dce166f14e"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "34a1b02931292460c9e4356f33f32013cbab191bac19f8fbc38b986b0f44cb6cd390d00b83df95d6304d8b4a8c7c79509729f07ee7424568c499e0c2cbffed2d"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "23b327215f12fab399f7bbc5b957edebd568eb9c29ace5bd0f555972d03210e69fc9abbeb62b40caa23159897d80bdb6bbf3e6de92962db972fb7c21c4fda417"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "fcdf39848e8b02c4b9a2260e0f005e3c1c6d63abcf68bbd2903a0bfcd6c91136183cd51b0b0c4b6beb3e26dfc410f251a27aad72eeb778a145df187a3188c688"; }
{ locale = "gd"; arch = "linux-i686"; sha512 = "bfb9254748df4c093dad98e086b6cce0f5c534be55c58aace5c0e9e226464dadf4e7c71091bb89924e36b72685fa6b0f1fe3d9f8dec0bec58c9c915c47157124"; }
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "ef6551fb9d4da9546cd9c15ced0fbcf333df1d987254492d6910bad68d1a9501f494e4c458d587383671df929e3a3e06f353621c446ed643da703f92c85447dd"; }
{ locale = "gl"; arch = "linux-i686"; sha512 = "9412e0b5ba7bd0b72e9de57c7cb80bd4a0a0edeb43ae5543c600dbd94bd653c8ec0fb3405104817a4c69ea21aaef8a62d2e3ccbc0845456b85b06cfc0adbbc97"; }
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "5a9a2f406ec581374c0d6f1465043ce8e3642244df272e45159c96ffb114be58dd5cbafe366346a69a23107fbd9cf73302252aef77c92177444f991ec0467437"; }
{ locale = "gn"; arch = "linux-i686"; sha512 = "d241cf5314cda302a0e7cb5356f38e51da502498e555901cb83b76fd4044bf008db32fe40ab5279bd5ef22f2cd384ee8aa14d8c828c6734d1c7b0a932864bc4a"; }
{ locale = "gn"; arch = "linux-x86_64"; sha512 = "2b295165ee8fa287e0798c5e6066b0e6bef70cba3a798df3899dbcbac78d8628059ada9a7a94455a4b71f3da5ad34a78ff2f806e6f96694da406f0ca4a8be872"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha512 = "f734b1d9da1e5ff4b3909a7f2725ce28113aa8eecdb7fa1cfcdd55af3ab594f1d45bab27061a4a91215b74fd80a9ce4ef489ed41c97ded7deb4f1fbfbb13aadd"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "5a851709f7870fd045dee372b472d22d36e98d2f05e2c52f960c5d84013178469dd59adc44f003b0577eda67b4cb24ed61bb7ab92108321b5936399c38c240c6"; }
{ locale = "he"; arch = "linux-i686"; sha512 = "7aefe5685ee03d7204c38b4f4fe9c9dc2b0e043b14f4966ad81f2138694aba0d6f36f239a36352acac3b5c171624e2938c9da2106b2929c48d17639cf585a920"; }
{ locale = "he"; arch = "linux-x86_64"; sha512 = "48f5bab9ab75ec63dcc3b05e47f81361e8c0e8c069109b699d86f032503366c88259e7084992283a2076be5b5db890fb4e33369f616182220edb05c60ecf030b"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha512 = "c97acb0bfc51734971730bb643f2ac42673fc746419e99eb01140e41711f0ccebe693825916a3a8825c45ad58231d2215ca6c808d069cfd5aff7987a59f35e0f"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "d0b94289c39fc25fc0a783cb774f38b434d0bff3a0c7f399c3d916cb827288d3c6de32435a01e9d735d4c7eada9a3ead25e2d51f3f8be4f030e433f1f9fa020b"; }
{ locale = "hr"; arch = "linux-i686"; sha512 = "fb3688ff337b9296dd3ba9fe796d7a8569b9b5feefcaa433860cc279fab8bff03c24259074c6317d822c99ba9f990f44808e0fddf287f1044cdc2185123ec0b3"; }
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "685dc67d26c33a994579cf81f4e02334bcf7b1253d78ece7c4816c645398bec36967c990e8612b63ab403271527fae4636f493629d717ccd5047592e50c1df34"; }
{ locale = "hsb"; arch = "linux-i686"; sha512 = "3610bb81053bae24b7ca95173db398792dffea3744d08ac6a4a98b696555df7a44342d3a923c5a82d37dcd7b173984d47db02bc4be7cee9a84871448bf05028e"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "e2d612b9b0e03889b7009d288157b3946b1a7865e331179953584ab1936d359504350d82e47ce60659b05951a99dbcf271df72e4c2cfcae42327a48f0c60cf7c"; }
{ locale = "hu"; arch = "linux-i686"; sha512 = "40e56487a5d244e25796ab70dc05c0cc264a83ff862a4caeb762558b76e003f415bbf529996e54ef2248581201d17c879d0be781df1cd1f84a5a54e155ee9a90"; }
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "31fc259a329e46abc1d6031bafd538e694382fa0adc432558fa4b7cc6e310f7baffdbfc1339f3ab57ceecb1f14c8dd5080a9fdc666c0ace8e872f8117826b64c"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "f5fe7b8b696609b663e51419f51e4f05535c379ec9fd73a7b743ba58c83b6b97d3fc9e5a38a3af5f05eeac5f66d39d8c0e416fc96a72853b80009ba3c2526e3f"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "97947e5fde20851bfc8bf7b426a6cab76a84fa3b385daee22773d9e871d27820a54ec4e846aa43b2fa8fdf3eaf2d7022209e3b694db31953a240ea484390c37b"; }
{ locale = "id"; arch = "linux-i686"; sha512 = "7a4dc15099dbab8a1ce47f127bdcdc732d820d15c84ac5ffb3aca3b1ab1b97adb164ed2d72f690c435d80392625fa573e98ffc4fcf0a80e5a219e8ae84be1673"; }
{ locale = "id"; arch = "linux-x86_64"; sha512 = "25692014c15c07d7d94fcdd776446f0cc22dfa8d2a9d7adf871122ba63a851eec56ae4df239691260a1f9d21b42b3eaf606b3049d0547f314974837e14dae74c"; }
{ locale = "is"; arch = "linux-i686"; sha512 = "036b35bbc1bac2be13855f05a84bb877e90abda9a57ca5cb9be546ee42d449b973dd136c0286fb738ed460863b6910e24df1e7dbd695d1abd67a643adde1cda2"; }
{ locale = "is"; arch = "linux-x86_64"; sha512 = "00cf2a413525a8453f4cc3813882d88fcefda0b979569ec419366ae6a26c1b28ca64d47fc0d72eb5260fd07dd8d0a427321d61e895aa997335531957ddbc6903"; }
{ locale = "it"; arch = "linux-i686"; sha512 = "3b337a3a6d233056c48adbd9d1b8342db109238ff16c6b6ef785c5698ed163110eb697910a7b5a4915aa40dcf675d67e3fc9c299a73494e9ae5b65790c984c6f"; }
{ locale = "it"; arch = "linux-x86_64"; sha512 = "9a960265ef27e6a6ca1f2a952fe4df88d6b96e9dbb57d01a991295802c7b1cd34dc31e8961a0e5d8628df9eecead3fe669a23e15fe9c19e5ca468b2586836f5c"; }
{ locale = "ja"; arch = "linux-i686"; sha512 = "acd2e3f8e0cebe313a4afac39b09e202c2b0975fc97f421848fbacc78c7a04022a6bdeb32f919984423b1746319055ad8965d82b0f234d513c96e26a6aa5ada0"; }
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "3ab71fdab458221f1055b0fbb0a483d2697a331f2107e21506501ccd0bff82c854f470e8d62c16e1d6d001af9b391e8b04b6ead61450b682e3b2235bd181da3f"; }
{ locale = "kk"; arch = "linux-i686"; sha512 = "426698fc5c117501d5fea47481dbf3f94e172824d30280305cbde4c12dd6a23fc2cc15ff67f5f0831d716e32381544d7b5b2466bf5dbd934ccc0053a0e87796b"; }
{ locale = "kk"; arch = "linux-x86_64"; sha512 = "64c6f754123f050b2791045dfa4db84594465b71714b57b036747771439810c31acc11fd8a87b0b80668e98e763b308f0334dc244ffc8c0d46d6907cf0459c19"; }
{ locale = "km"; arch = "linux-i686"; sha512 = "aa070339b61ca41fbdc3997209e799f1c170961e8f65f7b27022d8ee7d1392b6e71c365814b72ed7a3af49afec94a639119f538c76b10e07bc372d073c779520"; }
{ locale = "km"; arch = "linux-x86_64"; sha512 = "2cb8c583ecc406f0db20fd80b750012cbb55b53ea18b4f3725bc573ceb40676ccac60636ce242de4721ba1ba73ddb8a7ed54c150218894144b376096184f060f"; }
{ locale = "kn"; arch = "linux-i686"; sha512 = "f8a9ac953f5a1f2d991e8093d0468b54386f0d5a91a95e89dc7ed0352b4b1dda30ce304381c572146037740e47982d38c40ab320048b3798985d664945b6fb8f"; }
{ locale = "kn"; arch = "linux-x86_64"; sha512 = "b2ad831bfa6dcfb7edc5dee54fbbf06b040e9a7fd490cd2e4c1e2390b640804ad03f6b343f5df63b2e759109e15b6553391ff50a91c73adf40cdd4154bf4f2c2"; }
{ locale = "ko"; arch = "linux-i686"; sha512 = "877c2af15287b9aa592d859cd956c54fd2c5aa4bfe90dc250750dceeedddffa242fd0a6ad8e9a064d4e32640fc1b7de5ff3500d14a5733b9bea239ffc263967d"; }
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "ada09f37a92ea088fb15ec48be4661e05dcdc4ea5a438998772e3ce4f49abdea4493a9b66a998da3dff08af71786839744ec5c655b10514c5fef343c19823867"; }
{ locale = "lij"; arch = "linux-i686"; sha512 = "c80e4753bea1e02ada5a3ffb72256137f175b02f1d5846d5f74911f62a5cde1a9a40e9916dae56f3a9ec09f86be3b0fe6cb8bf129370654998538b45185a9047"; }
{ locale = "lij"; arch = "linux-x86_64"; sha512 = "6bddcb215cdeef4a7126b8b4b9aac8001c1fc2f30cc29bc85be6aa665f7ac075e4408e4ae9eb2eee19de0df672b4a4a02af1eee8c55dbcbce38eaf2cac998c0b"; }
{ locale = "lt"; arch = "linux-i686"; sha512 = "c99faa1cdfb09b10cf89c06d2327698859a5a697c6f992ebd47d8413c1d897a1c080e1fa67aa37835c37ba4d9869fd975c2750b50849ba7a38096ffaaf36a61c"; }
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "de45e3f04ccbe43742bdffb3e8b52ce6d7688a3a3709a4b0a96908f05c0ae80e49c4ef58046a62e88a23a39eee011484ed24759e449fa60cc8b2be790c897c25"; }
{ locale = "lv"; arch = "linux-i686"; sha512 = "5cb67b52ecf53a22075cc1a1e1daea20d7b91207f0424acc953fb8aa023c21ace6ea6b68e76dab530135ef88558b91b185cad52851c0c5e0ccec76353677ff1b"; }
{ locale = "lv"; arch = "linux-x86_64"; sha512 = "19fa569fc3773ca85a44378f128cb39a8cfe2d83ce35598f0a0ebe2fc6187cb3218ec9fecfe4f6fe5c202c77b33c1d6fa310f48bba77518eea98947fac5239b8"; }
{ locale = "mai"; arch = "linux-i686"; sha512 = "f45829fce2f523620142049829ccaf550c3dbb49f60a18ef8d534a71b008b0589e8da4370966f5633c5a84c811f990fbb80e45a44dc653b36ac472582e8cdd43"; }
{ locale = "mai"; arch = "linux-x86_64"; sha512 = "5d94527e5028b3e45d17f67cf0d217ee2b84a59c3227c3fd139dab07ace2640936222f6dd782edf8b10bd7053c6cc8e1a4d5eb8abbe925113478bc19231793b8"; }
{ locale = "mk"; arch = "linux-i686"; sha512 = "aafd5ef79b3f1685f31cc116da25e8ddc38356b88607627f141c4ccbcea51f40e5d9dbd6c8f6b7b94bc3c2e5b4dfadd40bc32737a30ccf2294e81feb756a3017"; }
{ locale = "mk"; arch = "linux-x86_64"; sha512 = "3e1d353ee168bce3c7e2ace92c023cb76bd21971b6806837be1c6827cca6236938d26f3f75e705f6c16a64b62c7af497e66d90bb07eae8500968d1c594b52fe8"; }
{ locale = "ml"; arch = "linux-i686"; sha512 = "bf56974aa6165dc302037822fe8eb5e30519612c6c60e97e9c44850c9c792dba74380303a7e412ad9ae1a292dfc3d003851f08b0dae88c87dd251604dc70b36c"; }
{ locale = "ml"; arch = "linux-x86_64"; sha512 = "8b831469b2326dd1a6e654c9bf1a7658fb2d8d2626d1f1c69c9d3f826bd2cd0ffab80c38c724adf222cef8cfb8c887f07ea8d1a32251216e2b995ca9de8c810d"; }
{ locale = "mr"; arch = "linux-i686"; sha512 = "abfb68e4f0a34fb49a196e903f6bbcc15c6aa4d0169a61647df69f25730237c7324beea389bd44629f4bf4796d142b4de06f527e721f1a8672a7469604711091"; }
{ locale = "mr"; arch = "linux-x86_64"; sha512 = "840099cfaee9a8cde24ab9bf6acb99f5375f2f2c8420c901cee556f293947dca53481d84940522ea90f7febc6533576589a490475ae96eb94735e20725faad10"; }
{ locale = "ms"; arch = "linux-i686"; sha512 = "42999849d6003bccc4fa2796949ef64c9f44fac46f2fea0c6ff85d1be46932ac65254b077ea7b1ede75b0dd76e6a212302797ed79ab3b42f829c2d3164413442"; }
{ locale = "ms"; arch = "linux-x86_64"; sha512 = "6d4cbd331ebf05501a010bebee204d747d4a4577bac353bb43b611eacc6ebc917f779b6dba23ce151c5897a30f74145b76fa01ed77f278f6dcf54b504fce7333"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "390eac558e95c89ac3cfebd3b2c77624380bca97419a7539ff0af37a8942c739b0e2c586602b9a7eafd39695bad2b69047d2678838c810bff5bc4da92bbbf641"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "663325450128c0bdec21d43c3e318062ce2b4c045c7b74a6119cf80dd47c76ec7aeeb477ee0702b30cfac3aa47cd2fd0a751f513627c695bdc9a210ccd92c890"; }
{ locale = "nl"; arch = "linux-i686"; sha512 = "b05f8558e76eb65318470aa63f90d3191f79626a7b29d934e146f00d85c29e1fa28814d1c1078af2240129a4c820654a1c7b74f3f572fd6fc39393dde54b3680"; }
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "864a14cf1475690c12aae22794168c2026707214db5bcac5060c7986c856ab466c62116cc54239e98235f548daefa1ee2b02f175d4948d679d882c4903a0a5da"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "9e7ab893c29d3f13fc3fa1aafdb26359085cee2b83be480ad35eafecaabe7eeef88826ede4fb71951815106841201112201f89a01cab02108b32f5f8588dfc7a"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "ab72d341438cfd6f3db041d217841af48ddd4022f0b4e5b77add391592e9f65b5baf4f5ad22ed39835522ed3075994b0a2883acf69af8f3a79f481b2b1dc3204"; }
{ locale = "or"; arch = "linux-i686"; sha512 = "98c97edff27894a1f04093955095ca27b66c0f5b4f2dc8c006f1db03b3a8abc5fa5815654e12f29f9ceefce70d771be3b9e37aa4206673d6be4ce0b65fa808cc"; }
{ locale = "or"; arch = "linux-x86_64"; sha512 = "a4672e7d4653564337cc0cba2358d073072be7fa3153b99908f257ddf032b9b759b04b0e49aa675da84ba9378f3711c330d2e6f0841bb2a67e6719a8d5d8805a"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "0b2703c37ec0b6201fda260331812f093d1f28ec4b9453b75d6ed3fb4ddf91b02e8d5146b3eea96368855bd8ddafb2e649830de5306b34e559f780426719b742"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "e6c52aa8d105d185b2442abba714b9fe4bce5d8303b25082506178f420b06c0b683c0d182fb6091c42931b8a598986d85c55f15ec534d84abc674fc1b9b04568"; }
{ locale = "pl"; arch = "linux-i686"; sha512 = "795d542560d89a0cbb05531340027d0894f4da5aa9b47c2e79342ffc0c96616bbf7569fb5354b48065728ea31c0fe476609d1627d7c80f9a4071c3a41853c93b"; }
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "a024adc013c20e20008565ba325366920f352db25583bcdc327b0d1343baa8262be22a5613fec13067b3ab87782bbf663d32e1e533b4e5b85e60900a31415d05"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "d1969bffe5ca9134676c16a42bada531553450082ee7df38d091e78ecd91c4f11a9258d3c1313fab87509c114f7d2182028bdbe9044caf08dd816dd792cdfeb3"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "d57f60f57d7f45ce59c4b41bfd9deab996c814070caa0e59117b3fb95b2251e60b05bf2ecc0ad9e346f293d3b6f9cdbb8abfae855e92d6b938fcaaa5ea5e1e02"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "ddeddfb237fe3b47873696d8ab863eb4811ccce5a7c524aeaa48ef1e68567f999c7d00493c8b6113b5b7c0ab69909e64c94d787af262fcbe3e622495d31905c6"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "146010ad2d1a41577d1ae8bad3bd6042519cb780f8968559047c621149913773eac494b179252a41ee800f0b8d545d8328f6c2858b9b49931b5afb21aac24876"; }
{ locale = "rm"; arch = "linux-i686"; sha512 = "35166f7cf4e8e9c9b6b2d6a787a25304ab406f093aa44eec0a0696e4d046db57cd92473378d8c1c12b885a77c7f0e8af25bca2ee35b15eda2078223f70d5e976"; }
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "9224c7ffac7088847b0a74c8699b55fce6d057cb4c05f900ad760f0ba65c9f4c922301b77a7979972f72e1dfa95fcb8c9fcdeb62c1e23ed294e32d0ad44f1858"; }
{ locale = "ro"; arch = "linux-i686"; sha512 = "6af2ac5449cbe42120d5e1db60c24570ba2b34abdf8ee65df28829c5ee7981928a5ab314215ee04290d407bdc7b8a41b44210f598bd196af9b72721ed9fe295a"; }
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "2cb4e65445f7990329b1ac45fbc847a61fdd35dd1c96be7f36c231fb32fb416b79f9ab9f4bda091086cba4f8394c2549041f099f0d72a7adc594f5563794fe06"; }
{ locale = "ru"; arch = "linux-i686"; sha512 = "11df81efd6ce56f8e302b3e44bc700da5a60248b025495fdd3bc54086e35607ce4c4bba7d6ba8e924754df72eba5c8794061da1b47ebfa158f9eef5f00d662a8"; }
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "5fdac11500749a9dc2ca5c19aa6525c083ff4af6bbf8432fce0a74df5f00cb566ed572d836a1ff4a0f308ac19b9fe24d3e460fa63107d96e02ed4b4a78049309"; }
{ locale = "si"; arch = "linux-i686"; sha512 = "77f37615c2aa4a487b70051f62ec9924fa70f0f724bbb07f5686c06ef14c1d04d2649767714446509c8c85942e3cc5b9fd01100c7bc1b36100b23993d1eaa315"; }
{ locale = "si"; arch = "linux-x86_64"; sha512 = "28eacad8735844e6b02bc45acb53ffd8dbfdc56730cd7fc8b6f900e0cab726fc71be33e5a04d68d7c3ffa270215bc3d7f8e1f5a6f898300e7555b1feff8910f3"; }
{ locale = "sk"; arch = "linux-i686"; sha512 = "123e8266d3a3421792269145d65c92b65704d4315fdd2c9e0161c2051ddd3f84eef7c57be6a073647b901894bfeffc997deb08926f4c4c737cffae7d77b84e9b"; }
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "d702f248ee1fcd58343f5ef71af24b31c74f6638fecbd4619cc71a302352b01756edaf6ff4f7db4cfd27d166c8ea335aee23434b1842ab3f65839c74ef3da3c0"; }
{ locale = "sl"; arch = "linux-i686"; sha512 = "5ecfd8d3c7401fe6e3e4251a129bff07f005cb94be7bc667505625db8555bc08836c9026752549bbb07db28517b191aa1eec56d81f3e96c6801beac5aac9064b"; }
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "65a1b995acdaae97c69b8010447fb5672d42724aebb37c74497be7cc9b8db31328157b28b7728f4c8d177d8844b0caf044ecfb67d9a1ac5c15dd69c5bcd603ff"; }
{ locale = "son"; arch = "linux-i686"; sha512 = "720bb533f4e86c109bfe09552f138015722a45cd07584a66e25506309cf94289652c284ead6674cec360e5b8e19d26e197bdb10c5a5b562b234c54749a81db1b"; }
{ locale = "son"; arch = "linux-x86_64"; sha512 = "307bb60ee04018fb531c0f8d6aa14f9ed2910c970ef33c95572bb7fb249518ea016c5694303aa5e09771980d922537dba8e370dcdc1cb2c5120dc5e863b7cdb1"; }
{ locale = "sq"; arch = "linux-i686"; sha512 = "e1f61cad31a300db89eb3cad1fbd1082ddfbb06f0befc1509e5da2c401bdef2bcbbef65a705f36202a933182af13ec41966a8243fc6fa55cdf251537891be4ea"; }
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "86a0fc4493b5b4f3aabc1b93dca25aefee16e08adffba77ba2369944c035185f36b6474298b5e58c939529aae393fcbe6a4d00c1d8cc2e9d6a8bcde5d457bedb"; }
{ locale = "sr"; arch = "linux-i686"; sha512 = "933a3adf04d37ba5f4c4c417306d7df67706c7757c0a0b68714fa4321c740a26b8717b7a6078fa631709dd03f5a159468e8c5d24457e1a521881274c1f43cf31"; }
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "eaaa12dfb8c8078437651cd78480f8ef6de9b8a1b7d48fcc57c97e427efa432c85804e9ab45c84eb7552c5d99005395f7c241a14ac75b2b6ccc78b91813d6f5c"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "a6cb6ae105229efd891c372d85127b2321aa8febe5d6cdbfc636873e3a4b0b85596474795a220deae0fe35b672e2af0c27b3717f53a6fdda9e97c0097193fe2a"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "5438137ad6a81fc352ad72a41cc774c8e20e3bdfa054ee88d83a23fbea60b33a46022f5069203d2f0addc3b7799ed788686e5f6a8997a5a7e9b5825b907417a2"; }
{ locale = "ta"; arch = "linux-i686"; sha512 = "f546e1c7ac06082102ae312acca417feedcf55b663efcfdef58b7cc23736bfc7eba3bcc1f503d9197408296a293c4e67f64438937b5bfecf01f1d77d0e83ca6a"; }
{ locale = "ta"; arch = "linux-x86_64"; sha512 = "ce6c95c29aa021b549c0dae4e90718a8e3cf3ea63a418fad6d2ec95df916bf39a60523c492083256704f6beb9ce558d7557a8e48b970af3482a16a4785947601"; }
{ locale = "te"; arch = "linux-i686"; sha512 = "b4ac6a6ecdff9566f262e66647ed50c1b792aed88992416fea7b4d4dbc22ae915b2c87d468610effc190204de107b8a17bb06d8ab71f529f55765579b653e979"; }
{ locale = "te"; arch = "linux-x86_64"; sha512 = "7dec427cb4d54528b9877e4b95fe04b7045ae3f5dd8645acf17145e38fccf9121cf4e02faae0e36acdec80fb94c18f64095d72351f102ac3abbf9657e8b078b3"; }
{ locale = "th"; arch = "linux-i686"; sha512 = "3a770ed0b63a2f9c373a100d2fcc2138ab78b3c9809103a68a5bdf324dab59d272c805f1b602e50917fcf245802b61cc7f8b47c583ae9703c980d40ad75c309c"; }
{ locale = "th"; arch = "linux-x86_64"; sha512 = "571b088e7ce2cc38168b9e8630485a1638c9c5d136dd48f1e48b2be8cf89ac81ed1833c71f89d94de4fa46693ae7d86a77825d0b33d85bea67673485b328e1fa"; }
{ locale = "tr"; arch = "linux-i686"; sha512 = "34f32af940eb3d8aaec3fd18d593df1cf33a77b58bcfb2f23af64991bcd007b49fd1a00e7a8948ed53590174e6f12037af423c6c4b23dfb632db1c763fd7f49f"; }
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "9a10ac59c52d511dc08fbac735e54ca7002d3c9fd54e27c8b5a3b452a1fc88ddc9321fe62e783e168925187ffeed7892b04cc527af9d2f483b1b9b87c1a7a5f5"; }
{ locale = "uk"; arch = "linux-i686"; sha512 = "47a5b468fa10b34baa6589a1ad152dd06778d607c5417af262f0899d752fb1d83bf3eb93e2d99244008b8d245bff3bb95505f999a517e5b4ebdaff3f3aa22557"; }
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "053a3cb4369f959e98fec5b137458012115fdcc786dc90d9aaead2f8addd689f1d0d0f12b90335529f811f00b29dd252f388ba72ab85f0b0414208511399c61f"; }
{ locale = "uz"; arch = "linux-i686"; sha512 = "64e96a0d1ca8fb88043a6d99da0124fcca14c1a052232b3e581a32ebff57ea92459d4046abc779a4b97380b9f3d958db0acc1dbf05763c6fdc71a0ad55e772d9"; }
{ locale = "uz"; arch = "linux-x86_64"; sha512 = "74713c830addd81237df3155912996624c52f647633b69be4ae82154efde38c43fba2746c46868b6bd3502502e4afdeb1c67c317ff44db7224853372b83bc3e7"; }
{ locale = "vi"; arch = "linux-i686"; sha512 = "a4703f2af5428d81b76c1e9c460d8f023ddf7335bfe2420c1f03ee0de812b419d40a964cba5ad563d7733ef14342cf6dc6c4127cba1bd18f230c31adc451e218"; }
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "bb5688172339d764e24d22efa39c17ccef6d8dcfdd8ac9b2213a8575b0570cfc194b26c911c85313a647e509054a031fae3c6c5285e59a8e362f44df7dd6c088"; }
{ locale = "xh"; arch = "linux-i686"; sha512 = "2654a664817d4af92f0b735380b17adef283556b42932997e8ded01151a1c9ac18e7eccae5a45600f299ec002ba5a615d5b2beb84fcc5659740a79f57dcdfa64"; }
{ locale = "xh"; arch = "linux-x86_64"; sha512 = "3f4e89afd9628cdf812a3b34fecd06a4315bae66adbe4629baf1999a74b5f77c5c8004a07af50178e1a0be10442a864dfefeab162d8e69aed30fb5e3917b1766"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "04c2e924f4f24866a980a86f1fc6e9a1ab40752d7d09080d8f7c466d8682375131088119f3bb8d9da2274ac735099272c94c495ea0d1f4c3244279f0d36d85fc"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "4fe23139affa8f3761b06a38056a82a8fd1f6d5749cd22ff661a7779826c3f01f365b51b7b9a5900e17cb9a01d1a41a34a66e0897e4f3d59220fcb75b7bbff45"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "f06db5072056a5dfc50ad87b1b1c8733af2141a6283f0db63f57e9e01fbb472635b62f117aa13c96386bfd2ac842b1773bb2f0490744a18910decaa28bde2f76"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "c6c369085560334f9c78467fe0c43be0cf807bc0990dd9b02a6fa6d68f32e4dd6ee1399be3c3f6d7b270653665dcfacc4e1af2a2d2ed28b07a2f98b413649ef0"; }
{ locale = "ach"; arch = "linux-i686"; sha512 = "464c3b19ab7bda118d962da2699dd40482e1742887bcd9d72b8b7d211c7ab085aaf4c31fdea3c4e195af9030276118431ed7c2e6a917b354c5bf9f55cc8111a9"; }
{ locale = "ach"; arch = "linux-x86_64"; sha512 = "d9f9844fb06637ca7449bc00c54c02abf8660c42207c0671fffd53e2415df7b0fc3df782c4a2ccde807b4c2e477b0cf3a74c36acb7cce3f75e4ce267a3575e5c"; }
{ locale = "af"; arch = "linux-i686"; sha512 = "77bca1f05627ed9ace120eee7a7cd24fc354e9bf23a7709e38879241ad87c5d39a8cfcf2aed12881b6f9d6d611c334a864c20c9dee877952990c47c631c6a61b"; }
{ locale = "af"; arch = "linux-x86_64"; sha512 = "bf4d5353a46778d93627c232c404c768e643420b17d490c932848d126846e4ca3a185df671dcf72b1c1d3fe75606c212e6b0dadd2169b52c4fe73f5088e87b94"; }
{ locale = "an"; arch = "linux-i686"; sha512 = "2882258205866c93a4b808b7397ff62efd629b74b5233154190ce72ddd0be5d1eb8153d686d921ddb72049dfae0f11c3eb46128413e578c0f9f6323636a0e378"; }
{ locale = "an"; arch = "linux-x86_64"; sha512 = "543b1d66dc37e1843f370ff071adb050af16e5777bc0042c2d25579a7d99b5b1d176ea099a0b3afc19f270ad5f191fec65e544634e2bbc2223ccc6afcb1869e0"; }
{ locale = "ar"; arch = "linux-i686"; sha512 = "855fc1c71b50ba5b8354ee7ce2ea59664b40b77d007d99ea6b658873de729e22ca9018e475a669992b2e2bea9388fe0966e06f1e2b0d334df4ffbff2be147949"; }
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "8ff272dd30cc66460a617dd80678b68917067b87d63d6b307f6d60e61deda092f46bca9e890d08b69a0738f4c204cd2c5896201b362df68aa9abbe7dd0fcc96d"; }
{ locale = "as"; arch = "linux-i686"; sha512 = "607039866932e6ec0692c534aa2e4ddcb3725d81f2908e7e905edafdbafb3221161f5ae4a5b6eb2ba065e9bd66e1f63c008015b17040033ed90ffa0576b1d08b"; }
{ locale = "as"; arch = "linux-x86_64"; sha512 = "59f3c28bcbc50a9ffe780025e03edafbbf82a213f28ba8e0f62a04a0e052038c24e1a5928ad4a730455bd358fc3cd0f1188e785dd13f79b377d86e5c55360735"; }
{ locale = "ast"; arch = "linux-i686"; sha512 = "c9767d9b73ec2dd411e16b1fab503e97b7960c315533ca529c4898dd10a6e0f809104588ac33f440e1026d026d114ec080cfc312b1902601958656607cdd4ad1"; }
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "f4c7ab66af5e7fca460999b3d68793f8099b177809e70f682fcd7b0a50a3d5ad2a1c15bc5df5a63c37437fce9d70e08e963119755626c357bce6eb17bfb229ee"; }
{ locale = "az"; arch = "linux-i686"; sha512 = "58bb0eb057caf6af113debeb8d9d7eeb3b2fbd2c52c9dac04c527a67da45b3a4ebac4debfea1704639cdf20ec116876e140f4b55ea5f2b90f3afb9db6b2641b6"; }
{ locale = "az"; arch = "linux-x86_64"; sha512 = "a82fdc532e4d9fee9ffab9ab8aa58074c4ed174c131d56b4ed48b1ebce1f8950371fa7c7e174c4f35150b752cdeccc2a553b416e94fb3eec22c0c4467c0b1f20"; }
{ locale = "be"; arch = "linux-i686"; sha512 = "55a96ff3fe9e54ec09a828f740899118504848c82b9c842ed27b9c1e1179f8efcbb2fae5e25f01dd1440f9d2ad896e37056fe8240979cf2c60f536870590cac3"; }
{ locale = "be"; arch = "linux-x86_64"; sha512 = "6fe1b00f8a03160a5131a52aba5b31401bf18913eb5b6018d1dccb0456ee09154c76220bb94b1ee20bf5b8e63535a888abf895af570e9a668395b497bbdf90b1"; }
{ locale = "bg"; arch = "linux-i686"; sha512 = "e21d3a2234b533b9d5904be3c1ee4f489bfdea747ff2b45828c40712f70d631ca824375c7a232989741bfceb8a7eb1ca341a4709285056cea2cf3689326a9c35"; }
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "160600a553d452c30d533e4d9a4ccc4c4d0cbbadf7875856f9be0fc81dbb7a686aa79f47ae8ea1c1e3746d150db31c7ce0dc18f1d271a47abb6d9bc35f478bf0"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "6a4267ce4e0d474779f16a7bb31fb873c0d2ba4af993428330bef8c93a24c1f9121b68d50956beb3df549fccf233fa2ce851c69950bf93cf6cdf34debae0cfce"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "31100d78f0b2fcca2643c822f930ffcf01da9ad3c026d8e05e88b659afddb9d55a000dfe043a87d6e4008d40fced109c134a3bb2c8183a1044d462fdc050989d"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha512 = "cb0efc8151949b33c23cb9d4fe41168830e215d4361963ec9399e43c97aa4504b4539a202f2c43283e63ea0a4afbdffb9bbfa1340a256483c3b848ef24660734"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "37e8311e0126da80740b9f97b4b69eb2285716b309e1986daaec5becf88ee5624343ca3b208fa84eb63477f47234c8d5958e394bf750da32e02d777ee94437f1"; }
{ locale = "br"; arch = "linux-i686"; sha512 = "be6cb0e7b1ceb0be27a7203620b19341c16061ce0d4632f9ce135b2559db2ca31adac2e40ef95f98db903fd151a1b5d411232361631272f2d6200dbcc45464be"; }
{ locale = "br"; arch = "linux-x86_64"; sha512 = "aa71bd069902a921b2a61ebbcbb604972104ba5f4274788da261e1e527dc7ce10c6a9aa0652773f0d0499d53c2916dd1e2d862b900fb87d678a9bcb401948cba"; }
{ locale = "bs"; arch = "linux-i686"; sha512 = "5282780a9f35577498b95ded38f86423d043429a0fb4b9ded956716381a3343ebe653508e8929bd8ac7475a2fa0d6c4c67e84482cae0d40a681338eba09f4c96"; }
{ locale = "bs"; arch = "linux-x86_64"; sha512 = "1056be9971338d821025a5d272321ea4b1704f3103c02014cde711516e9da5303dbc5753f0c2c1cf236096a53b3b067261b628f17d6d45e6c713f5b5cdee69b1"; }
{ locale = "ca"; arch = "linux-i686"; sha512 = "15c98207cb051466bc89dc15fb2dc1da95490306030fb318f3e3bb184d23590df7213e183af2e5178969099a4edf9752e5872a9d4a091958d7a9ab6087ff6bdf"; }
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "f7fc94c6c358dff1336938ff2d28c4fb9b0d391c22acefa7e286004978570e18cc1fd1a41a101a8bee27cbec1d750e04ba43cb409886f2b72e8e16a9aed6c835"; }
{ locale = "cak"; arch = "linux-i686"; sha512 = "96da63ceb6d4382abd8d1e343fdc4b72ead5e5ed2e3d451e768c6b092186287dcbaf239c389d29bc23e5641495a3f2a05512377300f45402428647ab77550b17"; }
{ locale = "cak"; arch = "linux-x86_64"; sha512 = "8584d4d82c79a56657a01a9cff211fa99e0fbcf0a42103a6cd9688713e7c11b77f35535fe31ed7e48855e055897b2c5fd84c2b1796c313401d8f01ed889ac7cf"; }
{ locale = "cs"; arch = "linux-i686"; sha512 = "2dff956f8df85bd007b68eeb8b809ddf7d99a6185f6946d2f4fd371f17e4dbf46bf2aad1799b6a1c84bd983935fa2ade5acd3b062f3eee48f7a160f37f3e8e6e"; }
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "725a2e1272722cdce125b5dea7e61525a43ddda6a45cb003f397ec8d1c9334f11adcd7fb6dd2c901de1cd9a0d07eae54304e5f95ecc6c529c80070b9d6af1b47"; }
{ locale = "cy"; arch = "linux-i686"; sha512 = "5eeacbc1cd803687235927a91923895930e135a39de62574c79499fe56accb5278da3efc4d151f0f93ec482ad44099481960dd6e3102afa94cce3c30db67b133"; }
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "49fc8136b3900b96fcea850a9549812b1cf1e9b1058cf99ee7e2e135cf49827e46ef4361badcc4efbd5dd09600d5269e68392f8df03c2e039d6b3d04b244aa71"; }
{ locale = "da"; arch = "linux-i686"; sha512 = "f806a36960cbec3624be8ebf6e7f8116635c7fff63ca890a886bd16fe73ec8a311d1e8b3c34ca680425d4634c91f8b96b0617cd175eef69e701d7c72e8917872"; }
{ locale = "da"; arch = "linux-x86_64"; sha512 = "22a274b9a5a1e670369009f2e48a4b7d2f63f18baf435d001506dd590b59115d43619fa824e2156b468b17739aea420621148ca47cd46bc3ace31bc5be4533f8"; }
{ locale = "de"; arch = "linux-i686"; sha512 = "6d64a77f420d1f87b7dac151eec75d4d42ec1f904b882b970d88b0e20a38ed5ebf8cbb2180abbdb8fb00dd60621e538fecaf77e09c4aee51f71a38a14f81b9b8"; }
{ locale = "de"; arch = "linux-x86_64"; sha512 = "897918d57691fb1a3f93273da48c128cf8a91e9bc5dd12d0ce2b4a085ff4df01db3ee28a378f36b7e7944c23f71df8a6dbf3481ec207cf85b73f3bac95bde054"; }
{ locale = "dsb"; arch = "linux-i686"; sha512 = "d5fa1438b71fcd3507175619090840cf983de9efb003f537eb28b9dba66f1cb3518e1410c4918187eb25766634464aaa796ebe0020f8fc110361008751e1c359"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "30cb3759bd1f6ba91dfa847703326a57901782ebf397adaa1a403afe894f9b8cdeba80fc910f50037bae003e61956845f605b0e62c364c1c415b12a5abb87080"; }
{ locale = "el"; arch = "linux-i686"; sha512 = "991dfd0870e38ee4a8887a61ce87a4c5af1c21206442a0602197caafae0be2c3c5aa4c7b25fd92fd9968bdf25c780ac342dd0203c3df8d729034ba20a459d120"; }
{ locale = "el"; arch = "linux-x86_64"; sha512 = "d62b4f1eb5feeb30e4d2d7b8cb7391f374a209d14b70cdd77acb56106b6df36f54c67a3c5fa1ab4286fd7c46b5d0a42efc52d140b8e5cbe08b17c6d7bd14b498"; }
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "2cddfb3d4472bfda882a3e3a054d5826a596bfd6b9b4399d7f45c6ad9f157599206f5e149f6c4fb35845ae291320520bf7a76c891713f1951c6e9a9450e92d23"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "d6bda8496f96448b9b046822547167c9c631dbf35c8bba07226634fc9aa1058009200d10e4e586fe059ab1e7b558d6cfa2c0040a33220d46dba5ca742bfe6f5c"; }
{ locale = "en-US"; arch = "linux-i686"; sha512 = "a9025b8d66c9294ede71ed37b7df256476cc640f7b7ce74cc4998c0b4b5741b5f869c486f1eaf4793fb4b2f347ba069f859e1c5318fa8df18c52377c83f8a09d"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "a551550037fe762d6d06a4f046ff4e2f37cd2607aace13df5ba2e28d643ddcef01210367555fb2fc66c6fe45d83f0306f61f4139001d1059ea5e913fbd43cd69"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha512 = "3e4721593a69bc289c7299b64e91af0ff121d59ded0167bfdd6692dc6d7a0ce0b0a7e8e89a591cee9fb90dc8b9eac26c5d978e4443b1d3462a0f4030ec8c5a50"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "76e069c8938cc133576c934e4049fd4d8920d8a823122f1961d4ab69802e9e52e920873fc1406dbab01edebd0cc576ccb12df0ebbf5487ddd49c339111bf7101"; }
{ locale = "eo"; arch = "linux-i686"; sha512 = "ff071fd2545a8dfe0fbb1b1dae57d3fc4b0743698e54746da1f774b568b2b9ad9b0e14e2cd27f56031e1d159a05ae7d54060509532a7503b3dcc7fffa442a514"; }
{ locale = "eo"; arch = "linux-x86_64"; sha512 = "7705efee2c65de30a0efc6ea0c372061f47c4266ab7faeb6feb01bfde4324ac92ed99a9eab81d8c4e2e6972245953a200c4331b26845eb7a2f9e048fb3023840"; }
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "3c08ab10d76650fd11ecd9616af1d4646fabdc55b63c7625940630f8aa25427482a3ff04052b91e6aceac708ca187552f7c87343d08c01cc1b4940e341e1672b"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "b6d700123f612b93b952f05bfa92dceed8878ad20a84214f8daab63e4eb669f1f69a9a5d6d28896b16b19d3dbd710b98a4851d7f611bea0fd79e41930c3d838e"; }
{ locale = "es-CL"; arch = "linux-i686"; sha512 = "7c64c7f7058b1cb3bd5f55b1afa0bc2e779d46d05e5dd354fac7573ad6245ba31aa126301d827ffd17f197b460be24c98ad7c2a9a3d4c66cb6189618a4e38ebe"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dcc4b4085fd4e480e79ca85b862c421f6e85d200d46b40178ce27177c1ac00f0d19d0c71ae3d7c12e15bf570cd0234743d080d06dae1e9e3c0c2f0eccf4bdf86"; }
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "d049bada399fbc723ceb14aa116b9218d14729cca6a2297d852782e4d3a0cc7e278aecc62ec4b7f1e1c5af10f65d0cd0bd39e6fbf95d989ce4d2ea5b0e2f7901"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "a77978f8af7f932151468c9e002731c8b6b3e9d3d8d8dfdcf28cc545b63f1d859b99c6dd25c547201b050f58bde9a55fc67b8134ecb0c893ce50f7788774fe99"; }
{ locale = "es-MX"; arch = "linux-i686"; sha512 = "46a7bc0f112f99ffc218e0161116b373c5b496e8d73744f9ed341fcd0fece5bc4618bcaebd68cb0aa80bf86078163d92205d322464dd8a918463507e4a9bde9d"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha512 = "412f52d4eaf3f85cd452d18164d2ce13d3057b45bd4f81ef2255a3580bb5b7e68f23dfc8622dbe3c4d69291b1fbb4a3312a429713b940b081415157fe5dc849c"; }
{ locale = "et"; arch = "linux-i686"; sha512 = "34d56c20cd06f224d1a3916a12bfd3f076a1659d9bf21aacacd5bea59e789ff496600b712a12f0b67410da97e0500d2f28f1f916872bd223f9f3b913ac648552"; }
{ locale = "et"; arch = "linux-x86_64"; sha512 = "383a4e2b28217651e76a06dd84eed5f058bf53c25847a6ef0ad1ea9e6a3c98f6a94ef05999a92f03f669e7cea0df11654b201c4e21fc595fcf99bc91b90c05df"; }
{ locale = "eu"; arch = "linux-i686"; sha512 = "cae20dc1b9880dcd9ecf4331bf1b6c6208a63ee3490ac8b827c9e338916a9d07e447f93be4108db78ce3cc96b8d3828f1882c28aaf28f198fa4f875035ca5835"; }
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "38ff3155783328b685c72f1ada0e01ab8a8fb75b191455dd43de590207f9b3a258da7cca6ecd3538a7d8319c8d1372e174fea0a22baecb497ca33aaff80a33d2"; }
{ locale = "fa"; arch = "linux-i686"; sha512 = "6d4d15e4897568d32128f193fa7bb413e63cb2bca23b81a16cb5b9ae7a558b768193461a182552da1153dfb708f834434a1fb63478cb5fe7984b91d00415ea34"; }
{ locale = "fa"; arch = "linux-x86_64"; sha512 = "6439f27cec2a8af66a4e68406c88b536c5f8e2b0202ce82aa46e75f840cb3977ddb041d8ee315d95505ebaa0e37b36afbf26ea0f39310cda09f6e765eb7bb120"; }
{ locale = "ff"; arch = "linux-i686"; sha512 = "ee9114fe358d9a6dcb7e404f13fc594de9339fc7ad126063b52548d42aaedac7abbce9e647766462de2716c3ad248b6992dc04e96ea3816068e884c30a3bcf84"; }
{ locale = "ff"; arch = "linux-x86_64"; sha512 = "beae2223a6b3aa555c071b51a46d3b0758efa53b6002f2486554f5bec154cfc1a1598f0175af654fc47a60a170eda916152e959a5ce2f799b779e5040ae15c5e"; }
{ locale = "fi"; arch = "linux-i686"; sha512 = "d8414f63f04a5a9c916487f93c67d2368bb4d8c8fb757c1d58233e6c6e6bde139f323b1c77dda57730173c6005b2647c688f7072ac09c1962b04a2493cdfa18b"; }
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "7e0fce63b69653fa5d0d0ffa9598d10976a1f49aeeb48bcd8eee26b51ca1f6d1d898c84944a442d530abcab700dcfdf89c48ca23db9d835c877388a8f694b7ea"; }
{ locale = "fr"; arch = "linux-i686"; sha512 = "c3bfda75397d644bc4392ef87f1d24faa033f4c5672adc4d5d0007d5fbd63efd7f46a2febd0bfdf95d8f06152d274daf39ef6355e049e7fd5e53e2d750d03ae0"; }
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "81c8091c9d8cc1ede738bb1d9b4fe72580d13de7e3f89410d1c684ca017ee197837788e63243c9722b30e23b2c910cb54fc7985f4936bc6068643a504d9a4ebd"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "59797af1d76fb2afceb06de28c6fd13bdbc14d42c61f87f1f71d8273e03aa691e2ade3ba0361d19721862878c911ec46ffbfd0431d19d6ec0a92ebac05cfb4c4"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "19d0cfb01374bf2842a17ef4e9f5ab85280c1090723c1657459a230262d22aeb14c2faee1b86ac0b342c5926cbbf0479f2e1ec315117c06ad3272a3362d02f8c"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "c1a4fe00a36e95fcd33d21544ee6b4fa5a6eae0628a37c27057cc801a641fbe5519818ccc157b87b64f24f4886dd6dd629809c89b9c89dc4878de794e48b107d"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "8d9654ecf7b6cb43b4794f345105c779809b9bd39a9dd46a0fbb1920139e9234e7433fd9a8d7dd57192c738d187f97ab82c8dd3f3a2460e3a34cdc9e9a5c5089"; }
{ locale = "gd"; arch = "linux-i686"; sha512 = "0d48b2886c431a9237293f24fa5f8cc7104a3373b24c98e23bbf93f66aeeb5b8b9e737712bdd1c777db19bbd6b01f9a33f0c388b6af023d852cce6543d486973"; }
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "0339b6952f993d38686d92ac9a664cfa558f2827b92ae3464188f12e28e2676c8c4718cff62a840dba14de687434cf13902a621094f63e1bca1ebce321800d15"; }
{ locale = "gl"; arch = "linux-i686"; sha512 = "5cecaede8ebdfb58951b3f839388b81dccaaaa5d3b4fb5cbf26978b23cd962905191fa91d961037fa15000af47ab48042d272fd18a73e5ed4dcc2bb0ff4416ca"; }
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "d1a0447ce592e7d2a8564d9c27fbce5f9378a4e21db3fa501782e57b6e13ede6f42b612fffea32e8891d47010509ac8e3ed1f63c5a81878008f9bead68b6b750"; }
{ locale = "gn"; arch = "linux-i686"; sha512 = "aff2f407e4c947d3e34447b43e844135562d79bf937a05dad5ce4dd1853dd479f35b4f6af1b2d8b52deeb9786a4fc67980cbf58ad82a747a7e55ea753a50ad43"; }
{ locale = "gn"; arch = "linux-x86_64"; sha512 = "78645796fffe364fcd28b80cde591d88db91a756318f645610f6823b616222c0c53faf8d55aaf1703d4bbcec1e8381cee566bb5739ccfa181e1d1224408463de"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha512 = "331bc227d138a49d74cca37f8d7ba4e6eb891064357aa5b0606761f9af8cc4a029816a3a96cc3ac4dfb71b1d010c569940ebd70375fdd06af7b6b487bd90dafe"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "d1f6c5af9e75e76683d39281eb559ac688436eae65d6bc486763028744af030a6c311d1f0358ead5e88ead60357261032dd739251352cde097986251dfdff325"; }
{ locale = "he"; arch = "linux-i686"; sha512 = "7a49d8cabab6aa8480026de6b77e1b6d60333c580d2b9591cf3fdc8c491d269f6a7a7f93118594de8c87576dda868f12de5a88f494736f721ee3ddc16a9afea9"; }
{ locale = "he"; arch = "linux-x86_64"; sha512 = "0eed4301d7949415d21426d9e52825710a0f48a1a0a3546f62d757059091bf12b3b53091f2c3102de0682162e3982a9fb58c111c9a6b8245d84825892e1d6844"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha512 = "70ecabcdfee807b1a7e0b6a167bab07d3df798672a61bb7b80d1d6c3ace9385c472e08dd31f2c4c684cd5e723e7024016728df7b22943d3adec3d770ba7abd1b"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "11e8be059afa8298a23857bd68b2f895bb60f73378c513d2aae0395b5faed68123631d9ee44b5608263334269e33b76b4563c063b2feec486e7a2dac1be42275"; }
{ locale = "hr"; arch = "linux-i686"; sha512 = "2c99b81cb0c8413aa98dcbac2cbd45d59a440c173a9cd744b78ee0d60b82ec4fe4894fe5e313d51b81caf6b86f40effdb36f5fd90c73cab82acf97c20fb5b152"; }
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "fc209d82cbc24eea777a4318f5555d2cea4828bb7f305f868b8fca18014ea7c930f778c716eb0b9c1a7e29d9a4353b4c537900f9d659c432d6a75b1eebf30963"; }
{ locale = "hsb"; arch = "linux-i686"; sha512 = "3232380f15a33f31f8e3755707231ba0725b9afdae1d2a0d4fb2eb883ab4dcb5c8aee75549e41e7e2cdf445b6f39331b2be4d7e417604987c7ced46d2dd5dc51"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "11bb460c404316c322e2498986ac6e7cb976a196de7208ee54dcd4ec61b8f05fa8f7782d6cf462cd5531f3137b1688b7797da2d78437e3c4d4f95867c781953c"; }
{ locale = "hu"; arch = "linux-i686"; sha512 = "40c3837c7ca4e0dc9e97e4c4422e54cc3ef157933ce9969abf71fd422fbcad517a6f6da3bcada83d3567323e83248a060fccc8a23a7f6fb55568a5b7ee0ff464"; }
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "d05bdf14ed9c72031a29e7e9b39afe79bd2ccdc69bafaf8c6196081d462b0aa57a220a8a2105812b215067494c53de8adc994fbbb3549ccfcadfc15f99c710ac"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "a9da495cc3e7a1e89ca8dd7a3db6c83529e0b7ba6562e7f0542f8b9c93bee8e4c219973b0b6fda1abd046d933fca718fab1f6bd4350ee960ddd89144dd321ed6"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "53db4843e0c9e99188e28bbe46b09239d998a3bae35ab79954bc6eedc5e73c0f3010c500dbb93f8a6ee2d5b22fb3ee9fef9ef6eef2dbbadf4b83f948282a8bc3"; }
{ locale = "id"; arch = "linux-i686"; sha512 = "05e7450a164c940e43ce34f6b7c9ad610d1652f11b0f030dfea7c9d8539961b2f3e69ab0d3b8d714725cf3e8bb256f18f4ac3613bc86bbf6223d9914e4eb77f3"; }
{ locale = "id"; arch = "linux-x86_64"; sha512 = "7ce0b880406dfbef90ca6ae6f121eaf72bd289e7b57f7686ea83fc182cb9b54a3e0bd8b23bffbcfb3c9e82a6b13c7afa16ce56d426f33f66072db4b5f466db04"; }
{ locale = "is"; arch = "linux-i686"; sha512 = "71446911d5142ab19308aca456dcc1d4d087db07898e331604230faa58c2146b980212880c7f88b6e3770b303a8450cff9e447638b5a063daf50ec25d29de738"; }
{ locale = "is"; arch = "linux-x86_64"; sha512 = "2542f214cb2474eab97d18a1daffb1181fff569058b91c1c9d7d6400b8401020b69ea9492fca55153c904289be45215b37ed0846d563f8f06ba401c482d59762"; }
{ locale = "it"; arch = "linux-i686"; sha512 = "bdf0da50be211492e2acdd9de223ef741fa916c54e94bf9c8eb20685006b68b5f430949161199a915c368d11143caf828c25b2e82c33fd5a61bfcd05de53966e"; }
{ locale = "it"; arch = "linux-x86_64"; sha512 = "a4562fdcac6d9ba96fc840498bbb381de6190158fea65c4809ea1ff3518181ed47b7c33bb772077975fd07c23a1e8700403cb6cc67c5fcb1c24e72563214f4bc"; }
{ locale = "ja"; arch = "linux-i686"; sha512 = "cc81a02282474928e7d2efc694761168db022ffcbf5ff32d92c21b90edfb194187dfb78f2eca4c42e60cfbba8ab6614c1c7b0359aaecafa47b1c9d3918327cee"; }
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "07cd92b7f9647f774b080cfcef828899144cb03472d70394be197c43732b164978e1d9ebc9212a47b58fdcc61f5009328e766f4c6f799f35d73a4dcd2b31fdd4"; }
{ locale = "kk"; arch = "linux-i686"; sha512 = "1bef31c35180ad7fd49ab695a6985d8be301a6802225d319e979b8c716e78a5687753b6f63516f4b4221c402a2d2c8c0a0e22aec9023cdee98d71a4335728e7a"; }
{ locale = "kk"; arch = "linux-x86_64"; sha512 = "dff599278a27fe2b4efbcc99b7ad3b211ef5debbf1b95d765a36fdbdbaebff69936c250018f237843481244e2b02cb8de4e3090d9422adcbb3d8af4239759269"; }
{ locale = "km"; arch = "linux-i686"; sha512 = "0080783187b80019cb4c56e2b30a1a403c632defc375adab7d613489fbf7f217a22a779f0119e2810ee9f0bd024418ffc654df146873a06f59bc7f1de5fbf244"; }
{ locale = "km"; arch = "linux-x86_64"; sha512 = "84d1ca7fd0a4d6a39aff375e922dcdcbe51fb2b497c6eebc312abe6cb5b29bd049e648197f0181bb2ee1b47b43275c14eb13233958c0bd4f7cf7b28e5725de97"; }
{ locale = "kn"; arch = "linux-i686"; sha512 = "2dac35157e3264547726ad33f786bd86e52a4db8aa8d1449cdfa9993e5bc16556c6005e06cee915e427e74b3eb4eed665a4a6deed7bf3800a95319346fda3690"; }
{ locale = "kn"; arch = "linux-x86_64"; sha512 = "175b3edf58286a229ab4045ca2d75f8a00e8ddcac532fbfc8aee5a048e0ae0cd5044155a8619d6dc53756150bce2d46b910e1abe216bf537d259435199cb42cd"; }
{ locale = "ko"; arch = "linux-i686"; sha512 = "1db17eaf47e7916366d05021d683c2b4d8f26316abc057a450d24a5d19fa1ed9aaad2f7a45cee63c0f021d93214b62a032d17312cdb123289b31dd2e5bd43808"; }
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "4bc673e54fb0c30b7c8389c2a66b322bd4b19e8635cb3d633754214c0726fb95d3194d09435bb4afca17e6cb3f03f028408d13f9ed44d8c2b9c323eabe5101e9"; }
{ locale = "lij"; arch = "linux-i686"; sha512 = "8349ba8cf921d73f0c3bd54c9a30df9c0232d7686724a0d635435d65a6bc8baa1915e25702b930cbefe954b5aedd1d3faeaf54ffa9b5dc494e465a635a57369e"; }
{ locale = "lij"; arch = "linux-x86_64"; sha512 = "e12597062c060dabaff08c251f82ad63f534c341d1afa94e567c763b7ac290cbb03a27726e03b449ff89fe8b86b25211e807ef7ba34e876d902705f9361d5cdc"; }
{ locale = "lt"; arch = "linux-i686"; sha512 = "f67ff28a20ae0580aa537797928bf84cdc088cc0df586071a460eda6ea7b96337a5004b2689688a487ed246b5d83a14bf77a5002f39fe7ccc46e92f65b565cf1"; }
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "f4ffb37c69b9c69e9ea54d691bfa3c069b28d5b1b0b48b917f4c6f10c1434bb451b7c17e777b5daf3c869eeefb2a064264bba7591f681d319fcab00335b37384"; }
{ locale = "lv"; arch = "linux-i686"; sha512 = "7efe759ef2f0e585a8887e829e2bdf917209efd5b3d5235f5765c0995206c25941abed9b11f9241da565a919f94890682a944d2bb7dd1d1360f67f173dcf2852"; }
{ locale = "lv"; arch = "linux-x86_64"; sha512 = "63cdba3ea94fb1847913a42ba70193ebfbbf1235a28881c7d671b20dc8272c5989dcb8290087a0862cea7a4c8ff448ee61b42a13d6c03c8787be1dbd957769f1"; }
{ locale = "mai"; arch = "linux-i686"; sha512 = "0619cde7ad13590d2da001fdf87e2fe9772d65d1ce468ea2b1f3085d8c6c157f48d23b343e6886969dde5827d12a368e208242dd16df4e498893d53f030665d7"; }
{ locale = "mai"; arch = "linux-x86_64"; sha512 = "f65ab5c51b7dd0f127a4b9f65a0280002af3387b12e8730f8efd79f4700f6c5f5842e3f634dd738571995dfa52ef58ec0d68255ceb52c6a7df0332797dfab253"; }
{ locale = "mk"; arch = "linux-i686"; sha512 = "e6d2bf183fc1fa88d0bbccbf058344e8dada0271694ba3bfc149e965ff16ec05ba6f7a04cc39f3657524555e84f25d072d7922fb2c075b0bbb8cd933336f1d94"; }
{ locale = "mk"; arch = "linux-x86_64"; sha512 = "68a96a11e38944d654d1aa720b5a099fd0789520b8681f15cf33d972956e7dd2c44d940ea0b2840c48db79615aed8c83d3f19769908752f960f84a7bdcf3a2ab"; }
{ locale = "ml"; arch = "linux-i686"; sha512 = "32c8e00f71a7fa609c3b99799f64362962d245d75865ce54fcd72e8cefc45f5cec7a99ed343a7bd92614569e62a02ac0e712b4ca3fce3d5d0f2f7ad52767c209"; }
{ locale = "ml"; arch = "linux-x86_64"; sha512 = "c641244006a11de3b6ae947f2d5bf8b40fd4bcde8e7b71d2fa2a8258087bf3d6382f21b10b05b2554f031ee95a579d31d0e0d8f1b72a5e1101acb31075aee02c"; }
{ locale = "mr"; arch = "linux-i686"; sha512 = "3949d3e4d9fa507c50f5ca92ee9cb041dc9d034f78d44343139a1576f128a06d8ef3aa2b1fcfe11d77a7489b0f7dd18e14f0ec0fff595dbefc219f6b1eadd969"; }
{ locale = "mr"; arch = "linux-x86_64"; sha512 = "c323cf8842f695e47f3c91d356ff63bb0ce7a5cf47cbe874dc6956d90fd84f6330e6e1f5f0bbf61e2cfda66a2dd0e81a756f3b464108e7ad84450722562e5906"; }
{ locale = "ms"; arch = "linux-i686"; sha512 = "f5ded01c47ac91d506a10774b198b3c2fdcff35a10ced17cd0cd94a1e367d489f2afe7ae22d59beb420f771684cefe3724c88313249a4c6072ce68f36bb16cbf"; }
{ locale = "ms"; arch = "linux-x86_64"; sha512 = "39d4a052c21fe9ee876f8b8a7fabeae9a6a30d959e1a7b27b0a1fd08658cac5959aa4879e3056675e2b7de83f588cf82f5d138f2ee5d9b0bbd135b51de109f7b"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "6cc34cda3cccb3ce92f44244e291dc94238292ef6e91172d73659ca5b4b46fd004483680a7a45ad3643d59c57c7fe7bf4286f4cf7c903301eb39712db9bd3583"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "da645c69d2675bdd1d2808f0d7446ded4414311bffe5f1a37a685f6f4338a56e831349a1a7904c0332266e909e4e82085585afb14b3fda7925698d66e9912a65"; }
{ locale = "nl"; arch = "linux-i686"; sha512 = "a2d906caf6b4c36305cbcd2840915000c53db2ac03122aca162e672014b217237363bc309cdee5ec19d21106073044fe8668fd044805161bf4916cdd938565ed"; }
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "6288c2f0306aacd87a82a3a6262b514f32a177674e6b96eeb5a8f937ee36b6573d8a3e6925be87609e4d7dabd1e6367eb0e730d87148cd50c1572756bb098a5a"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "04454f9f5dd2611cc76575a41d56f6819c5b97e213f82ebf0aa5e8393d9cd4a99a9df5291d3e3c3985396a99559f39fe5dc6a85141ac1d2f4919b731d7539a89"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "fb55685275d0b6c9e47b0356bd4249feeb3005b338d2a2caea4bb7b86edc6991752af9276db91f448032ba7d9e01209d92706f7612531232f87c05cbcb13f337"; }
{ locale = "or"; arch = "linux-i686"; sha512 = "16639bc10229e171577abfeab841bd7b5dc411f4e314335787727803a486b8f04e8730a7be9321172fdd60791fce7363d5ce5aa28628cc4d2b7769357737cd0a"; }
{ locale = "or"; arch = "linux-x86_64"; sha512 = "041f3a63a4cd9c0f287132252df7aa6d7eedc72650244729e01eb52a93a9ca8206a11cd7783e7778d4cad9a525ce2aef1c423840ea5c54fa202600a0b5805e31"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "7c9cda0d9dd9d1196ca33a58b6f5f3c3f09896bf65e8fbeed67fd9811cb1bdc12b7ca8966b7612cad524a3bcc9dd1e2678627f6cfe172b1bfc2d9b64eaac17cc"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "56507e7e1e93ae880de5410b4ad8c1302f58b43ade2ee4dc70c1290334edf2ea05f7ddf2ca00317ee33662de29c635caad8f73332935fd5bd4ff6a37758bd195"; }
{ locale = "pl"; arch = "linux-i686"; sha512 = "52cb7e700e541a82328c935a0a99313dad6b7699c09a1386697c77544284d53653705ec6d57f3cc1bec632962217c090ee39687a81b19f3a3af2178eba9a1eae"; }
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "77a99740ad99808a31df3e71038944901fc0d5339f919cce40389de67baeecf2b9c34608194ea1f0e4a25bbaed0ba06159d10ac8816735b34a2e28ab041ae97b"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "e39d9b22f8b7226ff2908b34847fb77cbe0c834f51985712024de83ece7549c8a89c3ab3d81abb6bfe6a7b21f18dee2d87926abf3d2edf9f8a8976242a4dcb26"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "a03a0e37ecc2d903715b70eec0a4b2808a913a8e27398dd96206295e1e765283e97b76ba278b394f9629e352c10cdb2011f3184b903d0e6de784a13abfcf9668"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "2d511400948ce05358b9400752bba41cbd947d1a4a5a5a92f982830db92507e257c28ae319f411717253dd53a1a7e73607f9f62fb7b7c8666aa339fdc73ce728"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71e2a000333ae8565de6fc9d01e871c2e894f96a9a2544a21aac08ccea0399da37d74c3230c4b3cb7ba0231fcdddaa417f78e48848fda8f063179766cb675038"; }
{ locale = "rm"; arch = "linux-i686"; sha512 = "4337964e6daa7bc799f01aa52a33f04c060288bbb881c2321ef938658b57f05b632f734ea0564cddd0078f4b38d1c8cb2c2e6221849ca4aa80579f308fdc2056"; }
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "a55e250de5e11ef808243ef974fac8938c70269a36bcf9db898a11997722b8d96d60d76ca28e41e023b4c7e6614e323479d3d4d2831b83655ad3ae3eb5ed774c"; }
{ locale = "ro"; arch = "linux-i686"; sha512 = "17171889ac7647e525783c96afa5a5de796d603c8fa6a7ad8d12205ad510f869b35f0df79aaa04e4b980c86ceb923f89936499df7e55539393e40ac92c23bb1d"; }
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "721912e5ad4b0ad0727f0185f660351b3c59291b3a22aa394f01c26ee87366b43b5aa08cdfc164c16117e1650837bc2007e42c34756dc26466edbb113f11fc09"; }
{ locale = "ru"; arch = "linux-i686"; sha512 = "28dafdbe6ae4fdabc061c68ca82dc6ab8fc463da11c712500378d90dfb662d6e0991f35a918315ce138603283befcee182092ac4f8d348815bef27431252874b"; }
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "27bbd48859f5ed6053a2062778537f4952a0847ff74d2dd407766ef4b4f144903167b4fe80b98a5b2b80e42d6b730bdfed36fe9a958d247a335bf31f091b8c70"; }
{ locale = "si"; arch = "linux-i686"; sha512 = "0f50616131a3b80499885ed5fb8573fd3ebe522cc893496d03e48ac6eafbc2a5224240971b66c393323d2583512dacb73f3201eef1a495298badad605cc76bb3"; }
{ locale = "si"; arch = "linux-x86_64"; sha512 = "37996cbc994a7527c2ffc5143dfe970ae2fe0e098f0bcbf9fd4643e8297bddbe7fc0f4af2f2ee15b0807c339c25d780040e2f9f03975ba9f49359052a2be271e"; }
{ locale = "sk"; arch = "linux-i686"; sha512 = "db95ce3b68fdfdfc9916cfbfa6a797370ddf58f5aa234d59bde6e76cf7fc0e821e9954cd0ce090404f5f718b9ede9c1ae6b9c7e37db9e64eb9d9dcfd975c6a79"; }
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "f9e28572c83e70c7658fd67abce93d021600fcf6b8daa7861cb6eff315a28c0e531f1082f6c25f5779371b2884c975fbc22cb953aaf589ba6b050bc736d25d9f"; }
{ locale = "sl"; arch = "linux-i686"; sha512 = "e40c201c5e892a83a23ac9f1af22e9274bf6d964b39bae2e191bdac100170685376fa81210ddca38c76e5277978772c693563e55871318777cca7ac7e47fd1f3"; }
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "ea4a198b300e2fbb23fdf863659b683b772624cf4f6c2c3e5e07af9a3f991a8fdf7113f852646f36f697c705c3a6f24485dcb8e2d615a3a358bfdfca406254a0"; }
{ locale = "son"; arch = "linux-i686"; sha512 = "b510efeafff8c32ef3b7f88e81d4c1a1c1b2bb435c2ed4ad69adbef8f5d374677e2231f94700cdbff9e5f747c712d8f58245a4c8f0d38ac3eebb5adcdc42c7ae"; }
{ locale = "son"; arch = "linux-x86_64"; sha512 = "8c8d583e7e5ef1363096c905535c8e6dd63900ee50684d9cd36b4e55100930b8fc8ee9a3ae770128cfc71a30a73f331cc508555ecdfd3fbbf359ad08d5cc9519"; }
{ locale = "sq"; arch = "linux-i686"; sha512 = "809ec8706df6f3538e3c53765a1f1834cee3d2d9cffbfb1f3e991faeedaca28a2dc3d4e037ed9e00d58ac6cdb27f5575bdafdc454828d9fa988d7764bca88c0c"; }
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "6f2c5778d40e9bc5bb558ac626becfcbe33c42e2a2e588ee59065f60643708ff83be55a082b383f7747241ad8d59c0e3e13bc8556967f5fce034ee23d7f054f8"; }
{ locale = "sr"; arch = "linux-i686"; sha512 = "cc0e0c039af32611d489bf082dba5ba971b54b22937d4b8fa80150a560a3c452851e67d02f7cb27e1a63229c9a42da449f932cdb88af342e0146022586de109c"; }
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "21928411981e8d3fac5e44f02173a08ad4c3135ec874998d6ddf5ef2821226ffee260023e5bb45848a40db19537b1d6cc0b127d9524c0d0616d80618ab1d9228"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "cddd222328f1099c25591b03abe23692fdccc82405df127ff920818fb7952fe384fc1373b1330b971d196e98acd62b3754711b38876050ec3cce7de20f183b79"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "06c819436de292d531a9d3df34b76bad36bb627e0e45ca042f2dafb06db14cc23e956dc2e00904d5147bf7d0b39c16f712f2b8acb1d9bc4daa210d56d8058e22"; }
{ locale = "ta"; arch = "linux-i686"; sha512 = "5e8560e423aa88c1fc5b61cf91c558a861a58d09d7e560790ba835f0bbae85cc82c61e1eb9e1a92e632d2fe24419d3eecec4a15bb083bf0c1568a441a5586a50"; }
{ locale = "ta"; arch = "linux-x86_64"; sha512 = "6ba48474d930036d77d23b717fd2e592b19d0ab2b4399f7a6f7bd36da48cc0a2dea9c25442928c507cdfe8a8f37a8d0e4ddb94da42a7a3d6c2ecba26d4f7dd2f"; }
{ locale = "te"; arch = "linux-i686"; sha512 = "2df2a46677c979b8702700c69f687e8bfa49e879ccd9204a1ca876b7a5f8925abfe6f81f42e6d6576aff6cea264cced854ae536a3cc01ed04b7a536396e9ff33"; }
{ locale = "te"; arch = "linux-x86_64"; sha512 = "d6c7bdb7a823be0cbe8286b977cc265e80ae290ae8fc4002a7dc71eddb3b80a3796e66ad1e00fe2e797ae83272422f460defa86322dea8e33ad0d7dfb50491de"; }
{ locale = "th"; arch = "linux-i686"; sha512 = "eb017475d187ef4f1329d303bde84a17995ed84458923330c2ef61940c86674c03f06de2e3655885df49cdc384d1b8e952dfe8ce960cec738f99b8853af1e018"; }
{ locale = "th"; arch = "linux-x86_64"; sha512 = "cca6fe63bf24ca1db9d736305dff312f334cbe0a836cb181fdde85c4b2e383e1a19135f441a1f07c69cce716a4c2d3fe42a07fe3c91146aa6598d651890ff049"; }
{ locale = "tr"; arch = "linux-i686"; sha512 = "98aa598f348be7705c11834f6d174fa19a8408b87193a93f641c4fe92898f3175f79a1bef9c66dc93c3cc19a372930725025d7ff1bf178e951c9d5dfd675ff36"; }
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "a4c2d82f7e56e413526cbe40eb24df79ea264b37dc09b470ccf3416c922730d714ad166507f06b6a68fc85ff73df73309da936ff56499cdf81b78fc973675c86"; }
{ locale = "uk"; arch = "linux-i686"; sha512 = "cc04ead20aa1f6d3a8ac470ed3fc69ac0d348ab0523308ae56b49734785fd63bae4ac6fcc32bcac3f2e9350ebfefe76fa39efc2a7a7f5d7c2309b6999f490e90"; }
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "1f29246b8bd1a4e07af7b30c2ffcb5239ee5f870e529227e96c0ef091cf9d9d8783891b2e60b0a5dee10e80893ddc6a5cb972d27e70ae4cd0f820ba9f60a2165"; }
{ locale = "uz"; arch = "linux-i686"; sha512 = "d144626529e57e93ea12ddca25184903b78b878563302c7f14a396435187791d2a14482a7d10bb569890d9483253474634574f105b9c79763ad6a85fb10de73d"; }
{ locale = "uz"; arch = "linux-x86_64"; sha512 = "4e6b7706c6f529739a18748f35d7e31071c6818c0f83261e1d31e66306fb40ac94573f7ebe3b811f4c70f88a2bbca29528b868821962e88ba30dbf84039c5ea1"; }
{ locale = "vi"; arch = "linux-i686"; sha512 = "fc7144a73551e09196b7c79e4fcf1ecf5ad92b3e54e8a203e213627133df0260dc53f0cc9bb9e03ccae0953de5f2752e303a35e0fdb720a40637e5b31edd3544"; }
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "7a38b4814418516c8971825616874782512bf91d51a798fbdb1b8d8a817d30e72d9fde45238602a6de9cb9c53cd0512acb07f6e16a819ce24fba6467ab1cc8b2"; }
{ locale = "xh"; arch = "linux-i686"; sha512 = "0fe791a3270343598417b093476fc7eb50628a7557c56294b3222e657c62a2b5ce7988243d75ae08f7a11c2b9e437d01d47258b1ac93c2579638ac67e12c4d78"; }
{ locale = "xh"; arch = "linux-x86_64"; sha512 = "f797c52d88b62aaff15419baf5d7c5b2a44909674602ca82c295120b4b0fcb7182a36952f7adeaf7e9878b3d21031e990d22e5f8dcbc5421a3d587ba37f63906"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "970c14e1f105d6092fd542d73db57260836bf249aee99ab53f43882cb6327520905b7a452e96a6c142676794bf22e13c80e86291bb5b6dcaa09d0d9bb376d4be"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "b811f9d359fb61674781443d71e961ba687fecbe4904622b6ac410e435e31b6118f30726896021d28ae51628ab95092b28181ca0ae471374c0cbc5a740fea496"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "43f8d6e9cdf5815365e0eb1516ccb5f6c7ac7e19c10d1ee45ee367d721bf1944321879d9966f7000f50d324f14c36f9f8fcd9bb43ef20c780ba39d3c138f2192"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "02f4910b3c5b6f75e2f19c03452ce0534980be7ff18abed8be2a2f9af19c6eee5928c493e618b00d167bb3b2d7e60724741a2f4de1df9b1e48a05923a7649cef"; }
];
}

View file

@ -44,9 +44,9 @@ let
generated = if channel == "stable" then (import ./sources.nix)
else if channel == "beta" then (import ./beta_sources.nix)
else if channel == "developer" then { version = "48.0a2"; sources = [
{ locale = "en-US"; arch = "linux-i686"; sha512 = "3xa9lmq4phx7vfd74ha1bq108la96m4jyq11h2m070rbcjv5pg6ck2pxphr2im55lym7h6saw2l4lpzcr5xvnfmj1a7fdhszswjl3s4"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "1vndwja68xbn3rfq15ffksagr7fm2ns84cib4bhx654425hp5ghfpiszl7qwyxg8s28srqdfsl9w8hp7qxsz5gmmiznf05zxfv487w7"; }
else if channel == "developer" then { version = "49.0a2"; sources = [
{ locale = "en-US"; arch = "linux-i686"; sha512 = "45dad182bf7a4e753c1be6b8f966393a06531e7b5530238d20cb67b26324e8f5d0eeec983a0855418f31187d3ae508c28810ab86269848b4e48ab2ca3b5d21e7"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "cfcbfc633b51612a62267c8a1afc25af212eb832d1fa876a1ffd82421e9378f96b3ac1488446f804518290abd99c21c9f10e4d0e0f699432aeb74b63305d7edc"; }
]; }
else builtins.abort "Wrong channel! Channel must be one of `stable`, `beta` or `developer`";

View file

@ -17,11 +17,11 @@ in
stdenv.mkDerivation rec {
name = "bluejeans-${version}";
version = "2.155.17.5";
version = "2.160.49.8";
src = fetchurl {
url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
sha256 = "1vszk0nrnpji4lm2pndq11kfcrcq1xccjbif9nkm15s3hcb1b66m";
sha256 = "1hf4jx0d1wiv622rwck0mm8cckm121yszviw47jsw0mjnp91hqch";
};
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];

View file

@ -70,11 +70,11 @@ let
in
stdenv.mkDerivation rec {
name = "flashplayer-${version}";
version = "11.2.202.621";
version = "11.2.202.626";
src = fetchurl {
url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
sha256 = "0xv7pzna4pfmi9bjwfbr0kf92xvdgpirm97kks4kphwngf3bzrm0";
sha256 = "1c7ffr1kjmdq5rcx3xzgkd4wg1c8b3zkb1ysmnjiicfm423xr9h7";
};
nativeBuildInputs = [ unzip ];

View file

@ -2,7 +2,7 @@
, jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking }:
let version = "0.6.1"; in
let version = "0.6.2"; in
buildPythonApplication rec {
name = "qutebrowser-${version}";
@ -10,7 +10,7 @@ buildPythonApplication rec {
src = fetchurl {
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
sha256 = "1xb95yjc390h7f75l1jk252qiwcamgz2bls2978mmjkhf5hm3jm0";
sha256 = "16g7vlpvzkj94xk6fzl0jav2izfpvqn3zx9gydsk064cdxb02hrs";
};
# Needs tox

View file

@ -10,16 +10,16 @@
}:
let
version = "1.1";
build = "453.47-1";
version = "1.2";
build = "490.39-1";
fullVersion = "stable_${version}.${build}";
info = if stdenv.is64bit then {
arch = "amd64";
sha256 = "09kadsi4ydjciq092i6linapqzjdzx915zqmz7vfq6w1yp9mqbwq";
sha256 = "188fb91f1eb41e1dcaeda982567260adb6c004f4df00de55eed962e6ca7c621e";
} else {
arch = "i386";
sha256 = "0b5410phnkpg6sz0j345vdn0r6n89rm865bchqw8p4kx7pmy78z3";
sha256 = "0c699a0d7ced5e77c41a85e81077a1b4561d64071ec89e0e875a1c55e78634eb";
};
in stdenv.mkDerivation rec {
product = "vivaldi";

View file

@ -0,0 +1,25 @@
{ stdenv, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "nomad-${version}";
version = "0.3.2";
rev = "v${version}";
goPackagePath = "github.com/hashicorp/nomad";
subPackages = [ "." ];
src = fetchFromGitHub {
owner = "hashicorp";
repo = "nomad";
inherit rev;
sha256 = "1m2pdragpzrq0xbmnba039iiyhb16wirj3n1s52z5r8r0mr7drai";
};
meta = with stdenv.lib; {
homepage = https://www.nomadproject.io/;
license = licenses.mpl20;
description = "A Distributed, Highly Available, Datacenter-Aware Scheduler";
platforms = platforms.linux;
maintainers = with maintainers; [ rushmorem ];
};
}

View file

@ -0,0 +1,25 @@
{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "terraform-${version}";
version = "0.6.15";
rev = "v${version}";
goPackagePath = "github.com/hashicorp/terraform";
src = fetchFromGitHub {
inherit rev;
owner = "hashicorp";
repo = "terraform";
sha256 = "1mf98hagb0yp40g2mbar7aw7hmpq01clnil6y9khvykrb33vy0nb";
};
postInstall = ''
# prefix all the plugins with "terraform-"
for i in $bin/bin/*; do
if [[ ! $(basename $i) =~ terraform* ]]; then
mv -v $i $bin/bin/terraform-$(basename $i);
fi
done
'';
}

View file

@ -0,0 +1,18 @@
{ stdenv, lib, buildGoPackage, fetchgit, fetchhg, fetchbzr, fetchsvn }:
buildGoPackage rec {
name = "drive-${version}";
version = "20151025-${stdenv.lib.strings.substring 0 7 rev}";
rev = "6dc2f1e83032ea3911fa6147b846ee93f18dc544";
goPackagePath = "github.com/odeke-em/drive";
subPackages = [ "cmd/drive" ];
src = fetchgit {
inherit rev;
url = "https://github.com/odeke-em/drive";
sha256 = "07s4nhfcr6vznf1amvl3a4wq2hn9zq871rcppfi4i6zs7iw2ay1v";
};
goDeps = ./deps.json;
}

View file

@ -0,0 +1,26 @@
[
{
"include": "../../libs.json",
"packages": [
"github.com/boltdb/bolt",
"github.com/cheggaaa/pb",
"github.com/odeke-em/cli-spinner",
"github.com/odeke-em/statos",
"golang.org/x/oauth2",
"github.com/odeke-em/exponential-backoff",
"github.com/odeke-em/extractor",
"github.com/odeke-em/meddler",
"github.com/odeke-em/xon",
"github.com/odeke-em/cache",
"github.com/odeke-em/drive",
"github.com/odeke-em/command",
"github.com/odeke-em/log",
"github.com/odeke-em/pretty-words",
"github.com/skratchdot/open-golang",
"google.golang.org/cloud",
"google.golang.org/api",
"github.com/mattn/go-isatty",
"golang.org/x/net"
]
}
]

View file

@ -21,11 +21,11 @@
let
# NOTE: When updating, please also update in current stable, as older versions stop working
version = "3.20.1";
version = "4.4.29";
sha256 =
{
"x86_64-linux" = "170xnrxlsadl5iw96276f8l3w687l6n5j5m8z4djsfqqr3lqjxvg";
"i686-linux" = "0a7k56ib2qp5560wmbk7b30pqf7h9h7rjnq850993gn9lfwz81q2";
"x86_64-linux" = "1ff01vqi9jiwhkqm81rh321bsz4brl11xal2xzm9gll7s2m8lz06";
"i686-linux" = "0lwvvyxy5xyxh0b2g8a9bdy0y2hgpbak4n6q6b30167fvpj1ad1i";
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
arch =

View file

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, python34Packages, readline, ncurses, canto-daemon }:
python34Packages.buildPythonApplication rec {
version = "0.9.6";
version = "0.9.7";
name = "canto-curses-${version}";
src = fetchFromGitHub {
owner = "themoken";
repo = "canto-curses";
rev = "v${version}";
sha256 = "0hxzpx314cflxq68gswjf2vrqf1z1ci9mxhxgwrk7sa6di86ygy0";
sha256 = "0ap1b4m5gbzi0l7vj6pwvvg77i2aarbynbdc147z2b1lzvr985zq";
};
buildInputs = [ readline ncurses canto-daemon ];

View file

@ -1,7 +1,7 @@
{ stdenv, fetchFromGitHub, python34Packages, }:
python34Packages.buildPythonApplication rec {
version = "0.9.5";
version = "0.9.6";
name = "canto-daemon-${version}";
namePrefix = "";
@ -9,7 +9,7 @@ python34Packages.buildPythonApplication rec {
owner = "themoken";
repo = "canto-next";
rev = "v${version}";
sha256 = "1ycwrg5n2il833mdxgzz07r0vb4rxz89rk5c6l9g5x33ifinykdq";
sha256 = "0ibakwmsbpk10bvxsr5vvka0pks89arric428y5cmfgcpr72sqzw";
};
propagatedBuildInputs = with python34Packages; [ feedparser ];

View file

@ -0,0 +1,33 @@
{ stdenv, lib, buildGoPackage, trousers, dclxvi, wrapGAppsHook, pkgconfig, gtk3, gtkspell3,
fetchgit, fetchhg, fetchbzr, fetchsvn }:
let
isx86_64 = stdenv.lib.any (n: n == stdenv.system) stdenv.lib.platforms.x86_64;
gui = true; # Might be implemented with nixpkgs config.
in
buildGoPackage rec {
name = "pond-${version}";
version = "20150830-${stdenv.lib.strings.substring 0 7 rev}";
rev = "bce6e0dc61803c23699c749e29a83f81da3c41b2";
goPackagePath = "github.com/agl/pond";
src = fetchgit {
inherit rev;
url = "https://github.com/agl/pond";
sha256 = "1dmgbg4ak3jkbgmxh0lr4hga1nl623mh7pvsgby1rxl4ivbzwkh4";
};
goDeps = ./deps.json;
buildInputs = [ trousers pkgconfig gtk3 gtkspell3 ]
++ stdenv.lib.optional isx86_64 dclxvi
++ stdenv.lib.optionals gui [ wrapGAppsHook ];
buildFlags = stdenv.lib.optionalString (!gui) "-tags nogui";
excludedPackages = "\\(appengine\\|bn256cgo\\)";
postPatch = stdenv.lib.optionalString isx86_64 ''
grep -r 'bn256' | awk -F: '{print $1}' | xargs sed -i \
-e "s,golang.org/x/crypto/bn256,github.com/agl/pond/bn256cgo,g" \
-e "s,bn256\.,bn256cgo.,g"
'';
}

View file

@ -0,0 +1,12 @@
[
{
"include": "../../libs.json",
"packages": [
"golang.org/x/net",
"github.com/golang/protobuf",
"github.com/agl/ed25519",
"golang.org/x/crypto",
"github.com/agl/go-gtk"
]
}
]

View file

@ -10,10 +10,11 @@
let
system-x86_64 = lib.elem stdenv.system lib.platforms.x86_64;
packagedQt = "5.6.0";
in stdenv.mkDerivation rec {
name = "telegram-desktop-${version}";
version = "0.9.49";
qtVersion = lib.replaceStrings ["."] ["_"] qtbase.version;
qtVersion = lib.replaceStrings ["."] ["_"] packagedQt;
src = fetchFromGitHub {
owner = "telegramdesktop";
@ -63,7 +64,7 @@ in stdenv.mkDerivation rec {
"LIBS+=-lssl"
];
qtSrcs = qtbase.srcs ++ [ qtimageformats.src ];
qtSrcs = [ qtbase.src qtimageformats.src ];
qtPatches = qtbase.patches;
buildCommand = ''
@ -79,7 +80,8 @@ in stdenv.mkDerivation rec {
-e 's,LIBS += .*libz.a,LIBS += -lz,' \
-e 's,LIBS += .*libbreakpad_client.a,LIBS += ${breakpad}/lib/libbreakpad_client.a,' \
-e 's, -flto,,g' \
-e 's, -static-libstdc++,,g'
-e 's, -static-libstdc++,,g' \
-e 's,${packagedQt},${qtbase.version},g'
export QMAKE=$PWD/../qt/bin/qmake
( mkdir -p ../Libraries
@ -87,18 +89,15 @@ in stdenv.mkDerivation rec {
for i in $qtSrcs; do
tar -xaf $i
done
mv qt-everywhere-opensource-src-* QtStatic
mv qtbase-opensource-src-* ./QtStatic/qtbase
mv qtimageformats-opensource-src-* ./QtStatic/qtimageformats
cd QtStatic/qtbase
patch -p1 < ../../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff
cd ..
cd qtbase-*
patch -p1 < ../../$sourceRoot/Telegram/Patches/qtbase_${qtVersion}.diff
for i in $qtPatches; do
patch -p1 < $i
done
${qtbase.postPatch}
cd ..
export configureFlags="-prefix "$PWD/../../qt" -release -opensource -confirm-license -system-zlib \
export configureFlags="-prefix "$PWD/../qt" -release -opensource -confirm-license -system-zlib \
-system-libpng -system-libjpeg -system-freetype -system-harfbuzz -system-pcre -system-xcb \
-system-xkbcommon-x11 -no-opengl -static -nomake examples -nomake tests \
-openssl-linked -dbus-linked -system-sqlite -verbose \
@ -107,13 +106,13 @@ in stdenv.mkDerivation rec {
export dontAddPrefix=1
export MAKEFLAGS=-j$NIX_BUILD_CORES
( cd qtbase
( cd qtbase-*
configurePhase
buildPhase
make install
)
( cd qtimageformats
( cd qtimageformats-*
$QMAKE
buildPhase
make install

View file

@ -0,0 +1,24 @@
{ stdenv, lib, buildGoPackage, fetchgit, fetchhg, fetchbzr, fetchsvn }:
buildGoPackage rec {
name = "xmpp-client-${version}";
version = "20160110-${stdenv.lib.strings.substring 0 7 rev}";
rev = "525bd26cf5f56ec5aee99464714fd1d019c119ff";
goPackagePath = "github.com/agl/xmpp-client";
src = fetchgit {
inherit rev;
url = "https://github.com/agl/xmpp-client";
sha256 = "0a1r08zs723ikcskmn6ylkdi3frcd0i0lkx30i9q39ilf734v253";
};
goDeps = ./deps.json;
meta = with stdenv.lib; {
description = "An XMPP client with OTR support";
homepage = https://github.com/agl/xmpp-client;
license = licenses.bsd3;
maintainers = with maintainers; [ codsl ];
};
}

View file

@ -0,0 +1,9 @@
[
{
"include": "../../libs.json",
"packages": [
"golang.org/x/crypto",
"golang.org/x/net"
]
}
]

View file

@ -0,0 +1,21 @@
{ stdenv, buildGo15Package, fetchFromGitHub }:
buildGo15Package rec {
name = "ipfs-${version}";
version = "i20160112--${stdenv.lib.strings.substring 0 7 rev}";
rev = "7070b4d878baad57dcc8da80080dd293aa46cabd";
goPackagePath = "github.com/ipfs/go-ipfs";
src = fetchFromGitHub {
owner = "ipfs";
repo = "go-ipfs";
inherit rev;
sha256 = "1b7aimnbz287fy7p27v3qdxnz514r5142v3jihqxanbk9g384gcd";
};
meta = with stdenv.lib; {
description = "A global, versioned, peer-to-peer filesystem";
license = licenses.mit;
};
}

View file

@ -2,14 +2,14 @@
, cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl }:
stdenv.mkDerivation rec {
version = "20160502";
version = "20160530";
name = "neomutt-${version}";
src = fetchFromGitHub {
owner = "neomutt";
repo = "neomutt";
rev = "neomutt-${version}";
sha256 = "0r7nn7yjhf3d7nc89gwpgrq45gqiwsrcaw1pkgmvrd16p0jhga1m";
sha256 = "17v9qnd7dd7rgz5bq5qqf0b1v59ba6jlqkbmwngx4hal6zm9b9wi";
};
buildInputs =
@ -25,7 +25,9 @@ stdenv.mkDerivation rec {
"--enable-pgp"
"--enable-pop"
"--enable-sidebar"
"--enable-keywords"
"--enable-smtp"
"--enable-nntp"
"--with-homespool=mailbox"
"--with-gss"
"--with-mailpath="
@ -46,6 +48,6 @@ stdenv.mkDerivation rec {
homepage = http://www.neomutt.org;
license = stdenv.lib.licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ hiberno cstrahan ];
maintainers = with maintainers; [ hiberno cstrahan vrthra ];
};
}

View file

@ -3,11 +3,11 @@
stdenv.mkDerivation rec {
name = "owncloud-client" + "-" + version;
version = "2.1.1";
version = "2.2.1";
src = fetchurl {
url = "https://download.owncloud.com/desktop/stable/owncloudclient-${version}.tar.xz";
sha256 = "4e7cfeb72ec565392e7968f352c4a7f0ef2988cc577ebdfd668a3887d320b1cb";
sha256 = "1wis62jk4y4mbr25y39y6af57pi6vp2mbryazmvn6zgnygf69m3h";
};
buildInputs =

View file

@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
homepage = https://github.com/axkibe/lsyncd;
description = "A utility that synchronizes local directories with remote targets";
license = licenses.gpl2;
platforms = platforms.unix;
platforms = platforms.linux;
maintainers = with maintainers; [ bobvanderlinden ];
};
}

View file

@ -1,13 +1,13 @@
{ stdenv, fetchgit, go }:
stdenv.mkDerivation rec {
version = "0.13.4";
version = "0.13.7";
name = "syncthing-${version}";
src = fetchgit {
url = https://github.com/syncthing/syncthing;
rev = "refs/tags/v${version}";
sha256 = "0aa0nqi0gmka5r5dzph4g51jlsy7w5q4ri8f4gy3qnma4pgp7pg2";
sha256 = "0n1yqaaag4l30i6zqb74z6f800xjvj9zvprb12nl9xlm5swrwrkz";
};
buildInputs = [ go ];
@ -16,8 +16,6 @@ stdenv.mkDerivation rec {
mkdir -p src/github.com/syncthing
ln -s $(pwd) src/github.com/syncthing/syncthing
export GOPATH=$(pwd)
# Required for Go 1.5, can be removed for Go 1.6+
export GO15VENDOREXPERIMENT=1
# Syncthing's build.go script expects this working directory
cd src/github.com/syncthing/syncthing

View file

@ -0,0 +1,25 @@
{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "syncthing-${version}";
version = "0.12.15";
rev = "v${version}";
buildFlags = "--tags noupgrade,release";
goPackagePath = "github.com/syncthing/syncthing";
src = fetchFromGitHub {
inherit rev;
owner = "syncthing";
repo = "syncthing";
sha256 = "0g4sj509h45iq6g7b0pl88rbbn7c7s01774yjc6bl376x1xrl6a1";
};
goDeps = ./deps.json;
postPatch = ''
# Mostly a cosmetic change
sed -i 's,unknown-dev,${version},g' cmd/syncthing/main.go
'';
}

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