Merge branch 'master' into staging
Hydra nixpkgs: ?compare=1279790
This commit is contained in:
commit
e757404555
|
@ -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:
|
||||
|
|
|
@ -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><nixpkgs/pkgs/development/go-modules/libs.json></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>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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’.
|
||||
|
|
|
@ -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>";
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
49
maintainers/scripts/fetch-kde-qt.sh
Executable file
49
maintainers/scripts/fetch-kde-qt.sh
Executable 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
|
3
maintainers/scripts/generate-kde-applications.sh
Executable file
3
maintainers/scripts/generate-kde-applications.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
./fetch-kde-qt.sh http://download.kde.org/stable/applications/16.04.2/ -A '*.tar.xz'
|
3
maintainers/scripts/generate-kde-frameworks.sh
Executable file
3
maintainers/scripts/generate-kde-frameworks.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
./fetch-kde-qt.sh http://download.kde.org/stable/frameworks/5.22/ -A '*.tar.xz'
|
3
maintainers/scripts/generate-kde-plasma.sh
Executable file
3
maintainers/scripts/generate-kde-plasma.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
./fetch-kde-qt.sh http://download.kde.org/stable/plasma/5.6.5/ -A '*.tar.xz'
|
3
maintainers/scripts/generate-qt.sh
Executable file
3
maintainers/scripts/generate-qt.sh
Executable 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'
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" ])
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -75,7 +75,7 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/confd";
|
||||
ExecStart = "${cfg.package.bin}/bin/confd";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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))}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
217
nixos/modules/services/misc/dysnomia.nix
Normal file
217
nixos/modules/services/misc/dysnomia.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -115,7 +115,7 @@ in {
|
|||
|
||||
serviceConfig = {
|
||||
Type = "notify";
|
||||
ExecStart = "${pkgs.etcd}/bin/etcd";
|
||||
ExecStart = "${pkgs.etcd.bin}/bin/etcd";
|
||||
User = "etcd";
|
||||
PermissionsStartOnly = true;
|
||||
};
|
||||
|
|
|
@ -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}";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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}";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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"} \
|
||||
|
|
|
@ -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 = ...; }";
|
||||
};
|
||||
|
|
124
nixos/modules/services/networking/pptpd.nix
Normal file
124
nixos/modules/services/networking/pptpd.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -83,7 +83,7 @@ in {
|
|||
SKYDNS_NAMESERVERS = concatStringsSep "," cfg.nameservers;
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/skydns";
|
||||
ExecStart = "${cfg.package.bin}/bin/skydns";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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" ];
|
||||
|
||||
|
|
|
@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
523
nixos/modules/services/security/oauth2_proxy.nix
Normal file
523
nixos/modules/services/security/oauth2_proxy.nix
Normal 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}";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
}
|
|
@ -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 =
|
||||
|
|
|
@ -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=$!
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
];
|
||||
};
|
||||
|
|
|
@ -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))
|
||||
];
|
||||
}
|
||||
|
|
30
nixos/modules/services/x11/xbanish.nix
Normal file
30
nixos/modules/services/x11/xbanish.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
};
|
||||
'';
|
||||
})
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
||||
|
|
|
@ -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
File diff suppressed because it is too large
Load diff
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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" =
|
||||
|
|
45
pkgs/applications/graphics/krita/default.nix
Normal file
45
pkgs/applications/graphics/krita/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
})
|
||||
|
|
|
@ -31,6 +31,8 @@ stdenv.mkDerivation rec {
|
|||
|
||||
configurePhase = "";
|
||||
buildPhase = "";
|
||||
|
||||
patches = [ ./numpy-cast.patch ];
|
||||
|
||||
installPhase = ''
|
||||
# Install Python code.
|
||||
|
|
12
pkgs/applications/misc/cura/numpy-cast.patch
Normal file
12
pkgs/applications/misc/cura/numpy-cast.patch
Normal 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
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
37
pkgs/applications/misc/green-pdfviewer/default.nix
Normal file
37
pkgs/applications/misc/green-pdfviewer/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
55
pkgs/applications/misc/green-pdfviewer/gdk-libs.patch
Normal file
55
pkgs/applications/misc/green-pdfviewer/gdk-libs.patch
Normal 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 $@
|
||||
+
|
|
@ -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; {
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
38
pkgs/applications/misc/mlterm/default.nix
Normal file
38
pkgs/applications/misc/mlterm/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
|
|
17
pkgs/applications/misc/wego/default.nix
Normal file
17
pkgs/applications/misc/wego/default.nix
Normal 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;
|
||||
}
|
10
pkgs/applications/misc/wego/deps.json
Normal file
10
pkgs/applications/misc/wego/deps.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
{
|
||||
"include": "../../libs.json",
|
||||
"packages": [
|
||||
"github.com/mattn/go-colorable",
|
||||
"github.com/mattn/go-runewidth",
|
||||
"github.com/schachmat/ingo"
|
||||
]
|
||||
}
|
||||
]
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
11
pkgs/applications/misc/xterm/sixel-256.support.patch
Normal file
11
pkgs/applications/misc/xterm/sixel-256.support.patch
Normal 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:
|
|
@ -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" \
|
||||
|
|
|
@ -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 { };
|
||||
|
|
|
@ -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)
|
|
@ -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/;
|
||||
|
|
|
@ -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"; }
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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`";
|
||||
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
25
pkgs/applications/networking/cluster/nomad/default.nix
Normal file
25
pkgs/applications/networking/cluster/nomad/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
25
pkgs/applications/networking/cluster/terraform/default.nix
Normal file
25
pkgs/applications/networking/cluster/terraform/default.nix
Normal 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
|
||||
'';
|
||||
}
|
18
pkgs/applications/networking/drive/default.nix
Normal file
18
pkgs/applications/networking/drive/default.nix
Normal 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;
|
||||
}
|
26
pkgs/applications/networking/drive/deps.json
Normal file
26
pkgs/applications/networking/drive/deps.json
Normal 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"
|
||||
]
|
||||
}
|
||||
]
|
|
@ -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 =
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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"
|
||||
'';
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
]
|
|
@ -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
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
[
|
||||
{
|
||||
"include": "../../libs.json",
|
||||
"packages": [
|
||||
"golang.org/x/crypto",
|
||||
"golang.org/x/net"
|
||||
]
|
||||
}
|
||||
]
|
21
pkgs/applications/networking/ipfs/default.nix
Normal file
21
pkgs/applications/networking/ipfs/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
25
pkgs/applications/networking/syncthing012/default.nix
Normal file
25
pkgs/applications/networking/syncthing012/default.nix
Normal 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
Loading…
Reference in a new issue