Merge master into staging

This commit is contained in:
Vladimír Čunát 2015-12-23 18:57:35 +01:00
commit 11c702c582
396 changed files with 88910 additions and 5635 deletions

View file

@ -1,5 +1,8 @@
# How to contribute
Note: contributing implies licensing those contributions
under the terms of [COPYING](./COPYING), which is an MIT-like license.
## Opening issues
* Make sure you have a [GitHub account](https://github.com/signup/free)

View file

@ -1,4 +1,4 @@
Copyright (c) 2003-2006 Eelco Dolstra
Copyright (c) 2003-2015 Eelco Dolstra and the Nixpkgs/NixOS contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

View file

@ -1,10 +1,12 @@
with import ./.. { };
with lib;
let
sources = sourceFilesBySuffices ./. [".xml"];
sources-langs = ./languages-frameworks;
in
stdenv.mkDerivation {
name = "nixpkgs-manual";
sources = sourceFilesBySuffices ./. [".xml"];
buildInputs = [ pandoc libxml2 libxslt ];
@ -18,25 +20,39 @@ stdenv.mkDerivation {
--param callout.graphics.extension '.gif'
'';
buildCommand = ''
{
echo "<chapter xmlns=\"http://docbook.org/ns/docbook\""
echo " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
echo " xml:id=\"users-guide-to-the-haskell-infrastructure\">"
echo ""
echo "<title>User's Guide to the Haskell Infrastructure</title>"
echo ""
pandoc ${./haskell-users-guide.md} -w docbook | \
sed -e 's|<ulink url=|<link xlink:href=|' \
-e 's|</ulink>|</link>|' \
-e 's|<sect. id=|<section xml:id=|' \
-e 's|</sect[0-9]>|</section>|'
echo ""
echo "</chapter>"
} >haskell-users-guide.xml
ln -s "$sources/"*.xml .
buildCommand = let toDocbook = { useChapters ? false, inputFile, outputFile }:
let
extraHeader = ''xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" '';
in ''
{
pandoc '${inputFile}' -w docbook ${optionalString useChapters "--chapters"} \
| sed -e 's|<ulink url=|<link xlink:href=|' \
-e 's|</ulink>|</link>|' \
-e 's|<sect. id=|<section xml:id=|' \
-e 's|</sect[0-9]>|</section>|' \
-e '1s| id=| xml:id=|' \
-e '1s|\(<[^ ]* \)|\1${extraHeader}|'
} > '${outputFile}'
'';
in
''
ln -s '${sources}/'*.xml .
mkdir ./languages-frameworks
cp -s '${sources-langs}'/* ./languages-frameworks
''
+ toDocbook {
inputFile = ./haskell-users-guide.md;
outputFile = "haskell-users-guide.xml";
useChapters = true;
}
+ toDocbook {
inputFile = ./../pkgs/development/idris-modules/README.md;
outputFile = "languages-frameworks/idris.xml";
}
+ ''
cat languages-frameworks/idris.xml
echo ${nixpkgsVersion} > .version
xmllint --noout --nonet --xinclude --noxincludenode \

View file

@ -277,7 +277,7 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
multiPkgs = pkgs: (with pkgs;
[ udev
alsaLib
]) ++ (with [];
]);
runScript = "bash";
}).env
]]></programlisting>

View file

@ -3,8 +3,10 @@ title: User's Guide for Haskell in Nixpkgs
author: Peter Simons
date: 2015-06-01
---
# User's Guide to the Haskell Infrastructure
# How to install Haskell packages
## How to install Haskell packages
Nixpkgs distributes build instructions for all Haskell packages registered on
[Hackage](http://hackage.haskell.org/), but strangely enough normal Nix package
@ -111,9 +113,9 @@ version of GHC listed above, there exists a package set based on that compiler.
Also, the attributes `haskell.compiler.ghcXYC` and
`haskell.packages.ghcXYC.ghc` are synonymous for the sake of convenience.
# How to create a development environment
## How to create a development environment
## How to install a compiler
### How to install a compiler
A simple development environment consists of a Haskell compiler and the tool
`cabal-install`, and we saw in section [How to install Haskell packages] how
@ -162,7 +164,7 @@ anymore once `nix-shell` has terminated. If you find that your Haskell builds
no longer work after garbage collection, then you'll have to re-run `cabal
configure` inside of a new `nix-shell` environment.
## How to install a compiler with libraries
### How to install a compiler with libraries
GHC expects to find all installed libraries inside of its own `lib` directory.
This approach works fine on traditional Unix systems, but it doesn't work for
@ -257,7 +259,7 @@ environment in your profile:
export NIX_GHC_LIBDIR="$HOME/.nix-profile/lib/ghc-$($NIX_GHC --numeric-version)"
fi
## How to install a compiler with libraries, hoogle and documentation indexes
### How to install a compiler with libraries, hoogle and documentation indexes
If you plan to use your environment for interactive programming, not just
compiling random Haskell code, you might want to replace `ghcWithPackages` in
@ -319,7 +321,7 @@ page](http://kb.mozillazine.org/Links_to_local_pages_do_not_work) for
workarounds.
## How to create ad hoc environments for `nix-shell`
### How to create ad hoc environments for `nix-shell`
The easiest way to create an ad hoc development environment is to run
`nix-shell` with the appropriate GHC environment given on the command-line:
@ -369,14 +371,14 @@ development commands. Note that you need `cabal-install` installed in your
`$PATH` already to use it here --- the `nix-shell` environment does not provide
it.
# How to create Nix builds for your own private Haskell packages
## How to create Nix builds for your own private Haskell packages
If your own Haskell packages have build instructions for Cabal, then you can
convert those automatically into build instructions for Nix using the
`cabal2nix` utility, which you can install into your profile by running
`nix-env -i cabal2nix`.
## How to build a stand-alone project
### How to build a stand-alone project
For example, let's assume that you're working on a private project called
`foo`. To generate a Nix build expression for it, change into the project's
@ -433,7 +435,7 @@ You can even use that generated file to run `nix-build`, too:
$ nix-build shell.nix
## How to build projects that depend on each other
### How to build projects that depend on each other
If you have multiple private Haskell packages that depend on each other, then
you'll have to register those packages in the Nixpkgs set to make them visible
@ -468,9 +470,9 @@ or enter an interactive shell environment suitable for building them:
$ nix-shell "<nixpkgs>" -A haskellPackages.bar.env
# Miscellaneous Topics
## Miscellaneous Topics
## How to build with profiling enabled
### How to build with profiling enabled
Every Haskell package set takes a function called `overrides` that you can use
to manipulate the package as much as you please. One useful application of this
@ -494,7 +496,7 @@ following snippet in your `~/.nixpkgs/config.nix` file:
Then, replace instances of `haskellPackages` in the `cabal2nix`-generated
`default.nix` or `shell.nix` files with `profiledHaskellPackages`.
## How to override package versions in a compiler-specific package set
### How to override package versions in a compiler-specific package set
Nixpkgs provides the latest version of
[`ghc-events`](http://hackage.haskell.org/package/ghc-events), which is 0.4.4.0
@ -560,7 +562,7 @@ prefer one built with GHC 7.8.x in the first place. However, for users who
cannot use GHC 7.10.x at all for some reason, the approach of downgrading to an
older version might be useful.
## How to recover from GHC's infamous non-deterministic library ID bug
### How to recover from GHC's infamous non-deterministic library ID bug
GHC and distributed build farms don't get along well:
@ -586,7 +588,7 @@ command, i.e. by running:
rm /nix/var/nix/manifests/*
rm /nix/var/nix/channel-cache/*
## Builds on Darwin fail with `math.h` not found
### Builds on Darwin fail with `math.h` not found
Users of GHC on Darwin have occasionally reported that builds fail, because the
compiler complains about a missing include file:
@ -603,7 +605,7 @@ can configure the environment variables
in their `~/.bashrc` file to avoid the compiler error.
## Using Stack together with Nix
### Using Stack together with Nix
-- While building package zlib-0.5.4.2 using:
runhaskell -package=Cabal-1.22.4.0 -clear-package-db [... lots of flags ...]
@ -666,7 +668,7 @@ to find out the store path of the system's zlib library. Now, you can
The same thing applies to `cabal configure`, of course, if you're
building with `cabal-install` instead of Stack.
## Creating statically linked binaries
### Creating statically linked binaries
There are two levels of static linking. The first option is to configure the
build with the Cabal flag `--disable-executable-dynamic`. In Nix expressions,
@ -688,7 +690,7 @@ as shared libraries only, i.e. there is just no static library available that
Cabal could link!
# Other resources
## Other resources
- The Youtube video [Nix Loves Haskell](https://www.youtube.com/watch?v=BsBhi_r-OeE)
provides an introduction into Haskell NG aimed at beginners. The slides are

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,41 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-coq">
<title>Coq</title>
<para>
Coq libraries should be installed in
<literal>$(out)/lib/coq/${coq.coq-version}/user-contrib/</literal>.
Such directories are automatically added to the
<literal>$COQPATH</literal> environment variable by the hook defined
in the Coq derivation.
</para>
<para>
Some libraries require OCaml and sometimes also Camlp5. The exact
versions that were used to build Coq are saved in the
<literal>coq.ocaml</literal> and <literal>coq.camlp5</literal>
attributes.
</para>
<para>
Here is a simple package example. It is a pure Coq library, thus it
only depends on Coq. Its <literal>makefile</literal> has been
generated using <literal>coq_makefile</literal> so we only have to
set the <literal>$COQLIB</literal> variable at install time.
</para>
<programlisting>
{stdenv, fetchurl, coq}:
stdenv.mkDerivation {
src = fetchurl {
url = http://coq.inria.fr/pylons/contribs/files/Karatsuba/v8.4/Karatsuba.tar.gz;
sha256 = "0ymfpv4v49k4fm63nq6gcl1hbnnxrvjjp7yzc4973n49b853c5b1";
};
name = "coq-karatsuba";
buildInputs = [ coq ];
installFlags = "COQLIB=$(out)/lib/coq/${coq.coq-version}/";
}
</programlisting>
</section>

View file

@ -0,0 +1,124 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-go">
<title>Go</title>
<para>The function <varname>buildGoPackage</varname> builds
standard Go packages.
</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";
src = fetchFromGitHub {
inherit rev;
owner = "golang";
repo = "net";
sha256 = "1g7cjzw4g4301a3yqpbk8n1d4s97sfby2aysl275x04g0zh8jxqp";
};
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' />
};
</programlisting>
</example>
<para><xref linkend='ex-buildGoPackage'/> is an example expression using buildGoPackage,
the following arguments are of special significance to the function:
<calloutlist>
<callout arearefs='ex-buildGoPackage-1'>
<para>
<varname>goPackagePath</varname> specifies the package's canonical Go import path.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-2'>
<para>
<varname>subPackages</varname> limits the builder from building child packages that
have not been listed. If <varname>subPackages</varname> is not specified, all child
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.
</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.
</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'>
<para>
If <varname>disabled</varname> is <literal>true</literal>,
nix will refuse to build this package.
</para>
<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.
</para>
</callout>
</calloutlist>
</para>
<para>
Reusable Go libraries may be found in the <varname>goPackages</varname> set. You can test
build a Go package as follows:
<screen>
$ nix-build -A goPackages.net
</screen>
</para>
<para>
You may use Go packages installed into the active Nix profiles by adding
the following to your ~/.bashrc:
<screen>
for p in $NIX_PROFILES; do
GOPATH="$p/share/go:$GOPATH"
done
</screen>
</para>
<para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/cstrahan/go2nix">go2nix</link>.</para>
</section>

View file

@ -0,0 +1,43 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="chap-language-support">
<title>Support for specific programming languages and frameworks</title>
<para>The <link linkend="chap-stdenv">standard build
environment</link> makes it easy to build typical Autotools-based
packages with very little code. Any other kind of package can be
accomodated by overriding the appropriate phases of
<literal>stdenv</literal>. However, there are specialised functions
in Nixpkgs to easily build packages for other programming languages,
such as Perl or Haskell. These are described in this chapter.</para>
<xi:include href="perl.xml" />
<xi:include href="python.xml" />
<xi:include href="ruby.xml" />
<xi:include href="go.xml" />
<xi:include href="java.xml" />
<xi:include href="lua.xml" />
<xi:include href="coq.xml" />
<xi:include href="idris.xml" /> <!-- generated from ../../pkgs/development/idris-modules/README.md -->
<xi:include href="qt.xml" />
<!--
<section><title>Haskell</title>
<para>TODO</para>
</section>
<section><title>TeX / LaTeX</title>
<para>* Special support for building TeX documents</para>
</section>
-->
</chapter>

View file

@ -0,0 +1,84 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-java">
<title>Java</title>
<para>Ant-based Java packages are typically built from source as follows:
<programlisting>
stdenv.mkDerivation {
name = "...";
src = fetchurl { ... };
buildInputs = [ jdk ant ];
buildPhase = "ant";
}
</programlisting>
Note that <varname>jdk</varname> is an alias for the OpenJDK.</para>
<para>JAR files that are intended to be used by other packages should
be installed in <filename>$out/share/java</filename>. The OpenJDK has
a stdenv setup hook that adds any JARs in the
<filename>share/java</filename> directories of the build inputs to the
<envar>CLASSPATH</envar> environment variable. For instance, if the
package <literal>libfoo</literal> installs a JAR named
<filename>foo.jar</filename> in its <filename>share/java</filename>
directory, and another package declares the attribute
<programlisting>
buildInputs = [ jdk libfoo ];
</programlisting>
then <envar>CLASSPATH</envar> will be set to
<filename>/nix/store/...-libfoo/share/java/foo.jar</filename>.</para>
<para>Private JARs
should be installed in a location like
<filename>$out/share/<replaceable>package-name</replaceable></filename>.</para>
<para>If your Java package provides a program, you need to generate a
wrapper script to run it using the OpenJRE. You can use
<literal>makeWrapper</literal> for this:
<programlisting>
buildInputs = [ makeWrapper ];
installPhase =
''
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/foo \
--add-flags "-cp $out/share/java/foo.jar org.foo.Main"
'';
</programlisting>
Note the use of <literal>jre</literal>, which is the part of the
OpenJDK package that contains the Java Runtime Environment. By using
<literal>${jre}/bin/java</literal> instead of
<literal>${jdk}/bin/java</literal>, you prevent your package from
depending on the JDK at runtime.</para>
<para>It is possible to use a different Java compiler than
<command>javac</command> from the OpenJDK. For instance, to use the
Eclipse Java Compiler:
<programlisting>
buildInputs = [ jre ant ecj ];
</programlisting>
(Note that here you dont need the full JDK as an input, but just the
JRE.) The ECJ has a stdenv setup hook that sets some environment
variables to cause Ant to use ECJ, but this doesnt work with all Ant
files. Similarly, you can use the GNU Java Compiler:
<programlisting>
buildInputs = [ gcj ant ];
</programlisting>
Here, Ant will automatically use <command>gij</command> (the GNU Java
Runtime) instead of the OpenJRE.</para>
</section>

View file

@ -0,0 +1,51 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-lua">
<title>Lua</title>
<para>
Lua packages are built by the <varname>buildLuaPackage</varname> function. This function is
implemented
in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lua-modules/generic/default.nix">
<filename>pkgs/development/lua-modules/generic/default.nix</filename></link>
and works similarly to <varname>buildPerlPackage</varname>. (See
<xref linkend="sec-language-perl"/> for details.)
</para>
<para>
Lua packages are defined
in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/lua-packages.nix"><filename>pkgs/top-level/lua-packages.nix</filename></link>.
Most of them are simple. For example:
<programlisting>
fileSystem = buildLuaPackage {
name = "filesystem-1.6.2";
src = fetchurl {
url = "https://github.com/keplerproject/luafilesystem/archive/v1_6_2.tar.gz";
sha256 = "1n8qdwa20ypbrny99vhkmx8q04zd2jjycdb5196xdhgvqzk10abz";
};
meta = {
homepage = "https://github.com/keplerproject/luafilesystem";
hydraPlatforms = stdenv.lib.platforms.linux;
maintainers = with maintainers; [ flosse ];
};
};
</programlisting>
</para>
<para>
Though, more complicated package should be placed in a seperate file in
<link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/lua-modules"><filename>pkgs/development/lua-modules</filename></link>.
</para>
<para>
Lua packages accept additional parameter <varname>disabled</varname>, which defines
the condition of disabling package from luaPackages. For example, if package has
<varname>disabled</varname> assigned to <literal>lua.luaversion != "5.1"</literal>,
it will not be included in any luaPackages except lua51Packages, making it
only be built for lua 5.1.
</para>
</section>

View file

@ -0,0 +1,181 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-perl">
<title>Perl</title>
<para>Nixpkgs provides a function <varname>buildPerlPackage</varname>,
a generic package builder function for any Perl package that has a
standard <varname>Makefile.PL</varname>. Its implemented in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/perl-modules/generic"><filename>pkgs/development/perl-modules/generic</filename></link>.</para>
<para>Perl packages from CPAN are defined in <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>,
rather than <filename>pkgs/all-packages.nix</filename>. Most Perl
packages are so straight-forward to build that they are defined here
directly, rather than having a separate function for each package
called from <filename>perl-packages.nix</filename>. However, more
complicated packages should be put in a separate file, typically in
<filename>pkgs/development/perl-modules</filename>. Here is an
example of the former:
<programlisting>
ClassC3 = buildPerlPackage rec {
name = "Class-C3-0.21";
src = fetchurl {
url = "mirror://cpan/authors/id/F/FL/FLORA/${name}.tar.gz";
sha256 = "1bl8z095y4js66pwxnm7s853pi9czala4sqc743fdlnk27kq94gz";
};
};
</programlisting>
Note the use of <literal>mirror://cpan/</literal>, and the
<literal>${name}</literal> in the URL definition to ensure that the
name attribute is consistent with the source that were actually
downloading. Perl packages are made available in
<filename>all-packages.nix</filename> through the variable
<varname>perlPackages</varname>. For instance, if you have a package
that needs <varname>ClassC3</varname>, you would typically write
<programlisting>
foo = import ../path/to/foo.nix {
inherit stdenv fetchurl ...;
inherit (perlPackages) ClassC3;
};
</programlisting>
in <filename>all-packages.nix</filename>. You can test building a
Perl package as follows:
<screen>
$ nix-build -A perlPackages.ClassC3
</screen>
<varname>buildPerlPackage</varname> adds <literal>perl-</literal> to
the start of the name attribute, so the package above is actually
called <literal>perl-Class-C3-0.21</literal>. So to install it, you
can say:
<screen>
$ nix-env -i perl-Class-C3
</screen>
(Of course you can also install using the attribute name:
<literal>nix-env -i -A perlPackages.ClassC3</literal>.)</para>
<para>So what does <varname>buildPerlPackage</varname> do? It does
the following:
<orderedlist>
<listitem><para>In the configure phase, it calls <literal>perl
Makefile.PL</literal> to generate a Makefile. You can set the
variable <varname>makeMakerFlags</varname> to pass flags to
<filename>Makefile.PL</filename></para></listitem>
<listitem><para>It adds the contents of the <envar>PERL5LIB</envar>
environment variable to <literal>#! .../bin/perl</literal> line of
Perl scripts as <literal>-I<replaceable>dir</replaceable></literal>
flags. This ensures that a script can find its
dependencies.</para></listitem>
<listitem><para>In the fixup phase, it writes the propagated build
inputs (<varname>propagatedBuildInputs</varname>) to the file
<filename>$out/nix-support/propagated-user-env-packages</filename>.
<command>nix-env</command> recursively installs all packages listed
in this file when you install a package that has it. This ensures
that a Perl package can find its dependencies.</para></listitem>
</orderedlist>
</para>
<para><varname>buildPerlPackage</varname> is built on top of
<varname>stdenv</varname>, so everything can be customised in the
usual way. For instance, the <literal>BerkeleyDB</literal> module has
a <varname>preConfigure</varname> hook to generate a configuration
file used by <filename>Makefile.PL</filename>:
<programlisting>
{ buildPerlPackage, fetchurl, db }:
buildPerlPackage rec {
name = "BerkeleyDB-0.36";
src = fetchurl {
url = "mirror://cpan/authors/id/P/PM/PMQS/${name}.tar.gz";
sha256 = "07xf50riarb60l1h6m2dqmql8q5dij619712fsgw7ach04d8g3z1";
};
preConfigure = ''
echo "LIB = ${db}/lib" > config.in
echo "INCLUDE = ${db}/include" >> config.in
'';
}
</programlisting>
</para>
<para>Dependencies on other Perl packages can be specified in the
<varname>buildInputs</varname> and
<varname>propagatedBuildInputs</varname> attributes. If something is
exclusively a build-time dependency, use
<varname>buildInputs</varname>; if its (also) a runtime dependency,
use <varname>propagatedBuildInputs</varname>. For instance, this
builds a Perl module that has runtime dependencies on a bunch of other
modules:
<programlisting>
ClassC3Componentised = buildPerlPackage rec {
name = "Class-C3-Componentised-1.0004";
src = fetchurl {
url = "mirror://cpan/authors/id/A/AS/ASH/${name}.tar.gz";
sha256 = "0xql73jkcdbq4q9m0b0rnca6nrlvf5hyzy8is0crdk65bynvs8q1";
};
propagatedBuildInputs = [
ClassC3 ClassInspector TestException MROCompat
];
};
</programlisting>
</para>
<section xml:id="ssec-generation-from-CPAN"><title>Generation from CPAN</title>
<para>Nix expressions for Perl packages can be generated (almost)
automatically from CPAN. This is done by the program
<command>nix-generate-from-cpan</command>, which can be installed
as follows:</para>
<screen>
$ nix-env -i nix-generate-from-cpan
</screen>
<para>This program takes a Perl module name, looks it up on CPAN,
fetches and unpacks the corresponding package, and prints a Nix
expression on standard output. For example:
<screen>
$ nix-generate-from-cpan XML::Simple
XMLSimple = buildPerlPackage {
name = "XML-Simple-2.20";
src = fetchurl {
url = mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz;
sha256 = "5cff13d0802792da1eb45895ce1be461903d98ec97c9c953bc8406af7294434a";
};
propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
meta = {
description = "Easily read/write XML (esp config files)";
license = "perl";
};
};
</screen>
The output can be pasted into
<filename>pkgs/top-level/perl-packages.nix</filename> or wherever else
you need it.</para>
</section>
</section>

View file

@ -0,0 +1,447 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-python">
<title>Python</title>
<para>
Currently supported interpreters are <varname>python26</varname>, <varname>python27</varname>,
<varname>python33</varname>, <varname>python34</varname>, <varname>python35</varname>
and <varname>pypy</varname>.
</para>
<para>
<varname>python</varname> is an alias to <varname>python27</varname> and <varname>python3</varname> is an alias to <varname>python34</varname>.
</para>
<para>
<varname>python26</varname> and <varname>python27</varname> do not include modules that require
external dependencies (to reduce dependency bloat). Following modules need to be added as
<varname>buildInput</varname> explicitly:
</para>
<itemizedlist>
<listitem><para><varname>python.modules.bsddb</varname></para></listitem>
<listitem><para><varname>python.modules.curses</varname></para></listitem>
<listitem><para><varname>python.modules.curses_panel</varname></para></listitem>
<listitem><para><varname>python.modules.crypt</varname></para></listitem>
<listitem><para><varname>python.modules.gdbm</varname></para></listitem>
<listitem><para><varname>python.modules.sqlite3</varname></para></listitem>
<listitem><para><varname>python.modules.tkinter</varname></para></listitem>
<listitem><para><varname>python.modules.readline</varname></para></listitem>
</itemizedlist>
<para>For convenience <varname>python27Full</varname> and <varname>python26Full</varname>
are provided with all modules included.</para>
<para>
Python packages that
use <link xlink:href="http://pypi.python.org/pypi/setuptools/"><literal>setuptools</literal></link> or <literal>distutils</literal>,
can be built using the <varname>buildPythonPackage</varname> function as documented below.
</para>
<para>
All packages depending on any Python interpreter get appended <varname>$out/${python.sitePackages}</varname>
to <literal>$PYTHONPATH</literal> if such directory exists.
</para>
<variablelist>
<title>
Useful attributes on interpreters packages:
</title>
<varlistentry>
<term><varname>libPrefix</varname></term>
<listitem><para>
Name of the folder in <literal>${python}/lib/</literal> for corresponding interpreter.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>interpreter</varname></term>
<listitem><para>
Alias for <literal>${python}/bin/${executable}.</literal>
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>buildEnv</varname></term>
<listitem><para>
Function to build python interpreter environments with extra packages bundled together.
See <xref linkend="ssec-python-build-env" /> for usage and documentation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>sitePackages</varname></term>
<listitem><para>
Alias for <literal>lib/${libPrefix}/site-packages</literal>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>executable</varname></term>
<listitem><para>
Name of the interpreter executable, ie <literal>python3.4</literal>.
</para></listitem>
</varlistentry>
</variablelist>
<section xml:id="ssec-build-python-package"><title><varname>buildPythonPackage</varname> function</title>
<para>
The function is implemented in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/python-modules/generic/default.nix">
<filename>pkgs/development/python-modules/generic/default.nix</filename></link>.
Example usage:
<programlisting language="nix">
twisted = buildPythonPackage {
name = "twisted-8.1.0";
src = pkgs.fetchurl {
url = http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/Twisted-8.1.0.tar.bz2;
sha256 = "0q25zbr4xzknaghha72mq57kh53qw1bf8csgp63pm9sfi72qhirl";
};
propagatedBuildInputs = [ self.ZopeInterface ];
meta = {
homepage = http://twistedmatrix.com/;
description = "Twisted, an event-driven networking engine written in Python";
license = stdenv.lib.licenses.mit;
};
};
</programlisting>
Most of Python packages that use <varname>buildPythonPackage</varname> are defined
in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/python-packages.nix"><filename>pkgs/top-level/python-packages.nix</filename></link>
and generated for each python interpreter separately into attribute sets <varname>python26Packages</varname>,
<varname>python27Packages</varname>, <varname>python35Packages</varname>, <varname>python33Packages</varname>,
<varname>python34Packages</varname> and <varname>pypyPackages</varname>.
</para>
<para>
<function>buildPythonPackage</function> mainly does four things:
<orderedlist>
<listitem><para>
In the <varname>buildPhase</varname>, it calls
<literal>${python.interpreter} setup.py bdist_wheel</literal> to build a wheel binary zipfile.
</para></listitem>
<listitem><para>
In the <varname>installPhase</varname>, it installs the wheel file using
<literal>pip install *.whl</literal>.
</para></listitem>
<listitem><para>
In the <varname>postFixup</varname> phase, <literal>wrapPythonPrograms</literal>
bash function is called to wrap all programs in <filename>$out/bin/*</filename>
directory to include <literal>$PYTHONPATH</literal> and <literal>$PATH</literal>
environment variables.
</para></listitem>
<listitem><para>
In the <varname>installCheck</varname> phase, <literal>${python.interpreter} setup.py test</literal>
is ran.
</para></listitem>
</orderedlist>
</para>
<para>By default <varname>doCheck = true</varname> is set</para>
<para>
As in Perl, dependencies on other Python packages can be specified in the
<varname>buildInputs</varname> and
<varname>propagatedBuildInputs</varname> attributes. If something is
exclusively a build-time dependency, use
<varname>buildInputs</varname>; if its (also) a runtime dependency,
use <varname>propagatedBuildInputs</varname>.
</para>
<para>
By default <varname>meta.platforms</varname> is set to the same value
as the interpreter unless overriden otherwise.
</para>
<variablelist>
<title>
<varname>buildPythonPackage</varname> parameters
(all parameters from <varname>mkDerivation</varname> function are still supported)
</title>
<varlistentry>
<term><varname>namePrefix</varname></term>
<listitem><para>
Prepended text to <varname>${name}</varname> parameter.
Defaults to <literal>"python3.3-"</literal> for Python 3.3, etc. Set it to
<literal>""</literal>
if you're packaging an application or a command line tool.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>disabled</varname></term>
<listitem><para>
If <varname>true</varname>, package is not build for
particular python interpreter version. Grep around
<filename>pkgs/top-level/python-packages.nix</filename>
for examples.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>setupPyBuildFlags</varname></term>
<listitem><para>
List of flags passed to <command>setup.py build_ext</command> command.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>pythonPath</varname></term>
<listitem><para>
List of packages to be added into <literal>$PYTHONPATH</literal>.
Packages in <varname>pythonPath</varname> are not propagated
(contrary to <varname>propagatedBuildInputs</varname>).
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>preShellHook</varname></term>
<listitem><para>
Hook to execute commands before <varname>shellHook</varname>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>postShellHook</varname></term>
<listitem><para>
Hook to execute commands after <varname>shellHook</varname>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>makeWrapperArgs</varname></term>
<listitem><para>
A list of strings. Arguments to be passed to
<varname>makeWrapper</varname>, which wraps generated binaries. By
default, the arguments to <varname>makeWrapper</varname> set
<varname>PATH</varname> and <varname>PYTHONPATH</varname> 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,
<varname>makeWrapperArgs = ["--set FOO BAR" "--set BAZ QUX"]</varname>.
</para></listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="ssec-python-build-env"><title><function>python.buildEnv</function> function</title>
<para>
Create Python environments using low-level <function>pkgs.buildEnv</function> function. Example <filename>default.nix</filename>:
<programlisting language="nix">
<![CDATA[with import <nixpkgs> {};
python.buildEnv.override {
extraLibs = [ pkgs.pythonPackages.pyramid ];
ignoreCollisions = true;
}]]>
</programlisting>
Running <command>nix-build</command> will create
<filename>/nix/store/cf1xhjwzmdki7fasgr4kz6di72ykicl5-python-2.7.8-env</filename>
with wrapped binaries in <filename>bin/</filename>.
</para>
<para>
You can also use <varname>env</varname> attribute to create local
environments with needed packages installed (somewhat comparable to
<literal>virtualenv</literal>). For example, with the following
<filename>shell.nix</filename>:
<programlisting language="nix">
<![CDATA[with import <nixpkgs> {};
(python3.buildEnv.override {
extraLibs = with python3Packages;
[ numpy
requests
];
}).env]]>
</programlisting>
Running <command>nix-shell</command> will drop you into a shell where
<command>python</command> will have specified packages in its path.
</para>
<variablelist>
<title>
<function>python.buildEnv</function> arguments
</title>
<varlistentry>
<term><varname>extraLibs</varname></term>
<listitem><para>
List of packages installed inside the environment.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>postBuild</varname></term>
<listitem><para>
Shell command executed after the build of environment.
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>ignoreCollisions</varname></term>
<listitem><para>
Ignore file collisions inside the environment (default is <varname>false</varname>).
</para></listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="ssec-python-tools"><title>Tools</title>
<para>Packages inside nixpkgs are written by hand. However many tools
exist in community to help save time. No tool is preferred at the moment.
</para>
<itemizedlist>
<listitem><para>
<link xlink:href="https://github.com/proger/python2nix">python2nix</link>
by Vladimir Kirillov
</para></listitem>
<listitem><para>
<link xlink:href="https://github.com/garbas/pypi2nix">pypi2nix</link>
by Rok Garbas
</para></listitem>
<listitem><para>
<link xlink:href="https://github.com/offlinehacker/pypi2nix">pypi2nix</link>
by Jaka Hudoklin
</para></listitem>
</itemizedlist>
</section>
<section xml:id="ssec-python-development"><title>Development</title>
<para>
To develop Python packages <function>buildPythonPackage</function> has
additional logic inside <varname>shellPhase</varname> to run
<command>pip install -e . --prefix $TMPDIR/</command> for the package.
</para>
<warning><para><varname>shellPhase</varname> is executed only if <filename>setup.py</filename>
exists.</para></warning>
<para>
Given a <filename>default.nix</filename>:
<programlisting language="nix">
<![CDATA[with import <nixpkgs> {};
buildPythonPackage {
name = "myproject";
buildInputs = with pkgs.pythonPackages; [ pyramid ];
src = ./.;
}]]>
</programlisting>
Running <command>nix-shell</command> with no arguments should give you
the environment in which the package would be build with
<command>nix-build</command>.
</para>
<para>
Shortcut to setup environments with C headers/libraries and python packages:
<programlisting language="bash">$ nix-shell -p pythonPackages.pyramid zlib libjpeg git</programlisting>
</para>
<note><para>
There is a boolean value <varname>lib.inNixShell</varname> set to
<varname>true</varname> if nix-shell is invoked.
</para></note>
</section>
<section xml:id="ssec-python-faq"><title>FAQ</title>
<variablelist>
<varlistentry>
<term>How to solve circular dependencies?</term>
<listitem><para>
If you have packages <varname>A</varname> and <varname>B</varname> that
depend on each other, when packaging <varname>B</varname> override package
<varname>A</varname> not to depend on <varname>B</varname> as input
(and also the other way around).
</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>install_data / data_files</varname> problems resulting into <literal>error: could not create '/nix/store/6l1bvljpy8gazlsw2aw9skwwp4pmvyxw-python-2.7.8/etc': Permission denied</literal></term>
<listitem><para>
<link xlink:href="https://bitbucket.org/pypa/setuptools/issue/130/install_data-doesnt-respect-prefix">
Known bug in setuptools <varname>install_data</varname> does not respect --prefix</link>. Example of
such package using the feature is <filename>pkgs/tools/X11/xpra/default.nix</filename>. As workaround
install it as an extra <varname>preInstall</varname> step:
<programlisting>${python.interpreter} setup.py install_data --install-dir=$out --root=$out
sed -i '/ = data_files/d' setup.py</programlisting>
</para></listitem>
</varlistentry>
<varlistentry>
<term>Rationale of non-existent global site-packages</term>
<listitem><para>
There is no need to have global site-packages in Nix. Each package has isolated
dependency tree and installing any python package will only populate <varname>$PATH</varname>
inside user environment. See <xref linkend="ssec-python-build-env" /> to create self-contained
interpreter with a set of packages.
</para></listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="ssec-python-contrib"><title>Contributing guidelines</title>
<para>
Following rules are desired to be respected:
</para>
<itemizedlist>
<listitem><para>
Make sure package builds for all python interpreters. Use <varname>disabled</varname> argument to
<function>buildPythonPackage</function> to set unsupported interpreters.
</para></listitem>
<listitem><para>
If tests need to be disabled for a package, make sure you leave a comment about reasoning.
</para></listitem>
<listitem><para>
Packages in <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/python-packages.nix"><filename>pkgs/top-level/python-packages.nix</filename></link>
are sorted quasi-alphabetically to avoid merge conflicts.
</para></listitem>
</itemizedlist>
</section>
</section>

View file

@ -0,0 +1,70 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-qt">
<title>Qt</title>
<para>The information in this section applies to Qt 5.5 and later.</para>
<para>Qt is an application development toolkit for C++. Although it is
not a distinct programming language, there are special considerations
for packaging Qt-based programs and libraries. A small set of tools
and conventions has grown out of these considerations.</para>
<section xml:id="ssec-qt-libraries"><title>Libraries</title>
<para>Packages that provide libraries should be listed in
<varname>qt5LibsFun</varname> so that the library is built with each
Qt version. A set of packages is provided for each version of Qt; for
example, <varname>qt5Libs</varname> always provides libraries built
with the latest version, <varname>qt55Libs</varname> provides
libraries built with Qt 5.5, and so on. To avoid version conflicts, no
top-level attributes are created for these packages.</para>
</section>
<section xml:id="ssec-qt-programs"><title>Programs</title>
<para>Application packages do not need to be built with every Qt
version. To ensure consistency between the package's dependencies,
call the package with <literal>qt5Libs.callPackage</literal> instead
of the usual <literal>callPackage</literal>. An older version may be
selected in case of incompatibility. For example, to build with Qt
5.5, call the package with
<literal>qt55Libs.callPackage</literal>.</para>
<para>Several environment variables must be set at runtime for Qt
applications to function correctly, including:</para>
<itemizedlist>
<listitem><para><envar>QT_PLUGIN_PATH</envar></para></listitem>
<listitem><para><envar>QML_IMPORT_PATH</envar></para></listitem>
<listitem><para><envar>QML2_IMPORT_PATH</envar></para></listitem>
<listitem><para><envar>XDG_DATA_DIRS</envar></para></listitem>
</itemizedlist>
<para>To ensure that these are set correctly, the program must be wrapped by
invoking <literal>wrapQtProgram <replaceable>program</replaceable></literal>
during installation (for example, during
<literal>fixupPhase</literal>). <literal>wrapQtProgram</literal>
accepts the same options as <literal>makeWrapper</literal>.
</para>
</section>
<section xml:id="ssec-qt-kde"><title>KDE</title>
<para>Many of the considerations above also apply to KDE packages,
especially the need to set the correct environment variables at
runtime. To ensure that this is done, invoke <literal>wrapKDEProgram
<replaceable>program</replaceable></literal> during
installation. <literal>wrapKDEProgram</literal> also generates a
<literal>ksycoca</literal> database so that required data and services
can be found. Like its Qt counterpart,
<literal>wrapKDEProgram</literal> accepts the same options as
<literal>makeWrapper</literal>.</para>
</section>
</section>

View file

@ -0,0 +1,46 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-ruby">
<title>Ruby</title>
<para>There currently is support to bundle applications that are packaged as Ruby gems. The utility "bundix" allows you to write a <filename>Gemfile</filename>, let bundler create a <filename>Gemfile.lock</filename>, and then convert
this into a nix expression that contains all Gem dependencies automatically.</para>
<para>For example, to package sensu, we did:</para>
<screen>
<![CDATA[$ cd pkgs/servers/monitoring
$ mkdir sensu
$ cat > Gemfile
source 'https://rubygems.org'
gem 'sensu'
$ bundler package --path /tmp/vendor/bundle
$ $(nix-build '<nixpkgs>' -A bundix)/bin/bundix
$ cat > default.nix
{ lib, bundlerEnv, ruby }:
bundlerEnv {
name = "sensu-0.17.1";
inherit ruby;
gemfile = ./Gemfile;
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
meta = with lib; {
description = "A monitoring framework that aims to be simple, malleable,
and scalable.";
homepage = http://sensuapp.org/;
license = with licenses; mit;
maintainers = with maintainers; [ theuni ];
platforms = platforms.unix;
};
}]]>
</screen>
<para>Please check in the <filename>Gemfile</filename>, <filename>Gemfile.lock</filename> and the <filename>gemset.nix</filename> so future updates can be run easily.
</para>
</section>

View file

@ -12,10 +12,10 @@
<xi:include href="introduction.xml" />
<xi:include href="quick-start.xml" />
<xi:include href="stdenv.xml" />
<xi:include href="packageconfig.xml" />
<xi:include href="configuration.xml" />
<xi:include href="functions.xml" />
<xi:include href="meta.xml" />
<xi:include href="language-support.xml" />
<xi:include href="languages-frameworks/index.xml" />
<xi:include href="package-notes.xml" />
<xi:include href="coding-conventions.xml" />
<xi:include href="submitting-changes.xml" />

View file

@ -261,23 +261,72 @@ Additional information.
<para>Hydra builds for master and staging should not be used as testing platform, it's a build farm for changes that have been already tested.</para>
</listitem>
<listitem>
<para>Master should only see non-breaking commits that do not cause mass rebuilds.</para>
</listitem>
<listitem>
<para>Staging should only see non-breaking mass-rebuild commits. That means it's not to be used for testing, and changes must have been well tested already. <link xlink:href="http://comments.gmane.org/gmane.linux.distributions.nixos/13447">Read policy here</link>.</para>
</listitem>
<listitem>
<para>If staging is already in a broken state, please refrain from adding extra new breakages. Stabilize it for a few days, merge into master, then resume development on staging. <link xlink:href="http://hydra.nixos.org/jobset/nixpkgs/staging#tabs-evaluations">Keep an eye on the staging evaluations here</link>. If any fixes for staging happen to be already in master, then master can be merged into staging.</para>
</listitem>
<listitem>
<para>When changing the bootloader installation process, extra care must be taken. Grub installations cannot be rolled back, hence changes may break people's installations forever. For any non-trivial change to the bootloader please file a PR asking for review, especially from @edolstra.</para>
</listitem>
</itemizedlist>
<section>
<title>Master branch</title>
<itemizedlist>
<listitem>
<para>
It should only see non-breaking commits that do not cause mass rebuilds.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Staging branch</title>
<itemizedlist>
<listitem>
<para>
It's only for non-breaking mass-rebuild commits. That means it's not to
be used for testing, and changes must have been well tested already.
<link xlink:href="http://comments.gmane.org/gmane.linux.distributions.nixos/13447">Read policy here</link>.
</para>
</listitem>
<listitem>
<para>
If the branch is already in a broken state, please refrain from adding
extra new breakages. Stabilize it for a few days, merge into master,
then resume development on staging.
<link xlink:href="http://hydra.nixos.org/jobset/nixpkgs/staging#tabs-evaluations">Keep an eye on the staging evaluations here</link>.
If any fixes for staging happen to be already in master, then master can
be merged into staging.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Stable release branches</title>
<itemizedlist>
<listitem>
<para>
If you're cherry-picking a commit to a stable release branch, always use
<command>git cherry-pick -xe</command> and ensure the message contains a
clear description about why this needs to be included in the stable
branch.
</para>
<para>An example of a cherry-picked commit would look like this:</para>
<screen>
nixos: Refactor the world.
The original commit message describing the reason why the world was torn apart.
(cherry picked from commit abcdef)
Reason: I just had a gut feeling that this would also be wanted by people from
the stone age.
</screen>
</listitem>
</itemizedlist>
</section>
</section>
</chapter>

View file

@ -85,6 +85,26 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Creative Commons Zero v1.0 Universal";
};
cc-by-nc-sa-20 = spdx {
spdxId = "CC-BY-NC-SA-2.0";
fullName = "Creative Commons Attribution Non Commercial Share Alike 2.0";
};
cc-by-nc-sa-25 = spdx {
spdxId = "CC-BY-NC-SA-2.5";
fullName = "Creative Commons Attribution Non Commercial Share Alike 2.5";
};
cc-by-nc-sa-30 = spdx {
spdxId = "CC-BY-NC-SA-3.0";
fullName = "Creative Commons Attribution Non Commercial Share Alike 3.0";
};
cc-by-nc-sa-40 = spdx {
spdxId = "CC-BY-NC-SA-4.0";
fullName = "Creative Commons Attribution Non Commercial Share Alike 4.0";
};
cc-by-sa-25 = spdx {
spdxId = "CC-BY-SA-2.5";
fullName = "Creative Commons Attribution Share Alike 2.5";

View file

@ -81,6 +81,7 @@
devhell = "devhell <\"^\"@regexmail.net>";
dezgeg = "Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>";
dfoxfranke = "Daniel Fox Franke <dfoxfranke@gmail.com>";
dgonyeo = "Derek Gonyeo <derek@gonyeo.com>";
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
dochang = "Desmond O. Chang <dochang@gmail.com>";
doublec = "Chris Double <chris.double@double.co.nz>";
@ -165,6 +166,7 @@
lebastr = "Alexander Lebedev <lebastr@gmail.com>";
leonardoce = "Leonardo Cecchi <leonardo.cecchi@gmail.com>";
lethalman = "Luca Bruno <lucabru@src.gnome.org>";
lewo = "Antoine Eiche <lewo@abesis.fr>";
lhvwb = "Nathaniel Baxter <nathaniel.baxter@gmail.com>";
lihop = "Leroy Hopson <nixos@leroy.geek.nz>";
linquize = "Linquize <linquize@yahoo.com.hk>";
@ -265,6 +267,7 @@
rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
rushmorem = "Rushmore Mushambi <rushmore@webenchanter.com>";
rvl = "Rodney Lorrimar <dev+nix@rodney.id.au>";
rvlander = "Gaëtan André <rvlander@gaetanandre.eu>";
rycee = "Robert Helgesson <robert@rycee.net>";
samuelrivas = "Samuel Rivas <samuelrivas@gmail.com>";
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
@ -318,6 +321,7 @@
vmandela = "Venkateswara Rao Mandela <venkat.mandela@gmail.com>";
vozz = "Oliver Hunt <oliver.huntuk@gmail.com>";
wedens = "wedens <kirill.wedens@gmail.com>";
willtim = "Tim Philip Williams <tim.williams.public@gmail.com>";
winden = "Antonio Vargas Gonzalez <windenntw@gmail.com>";
wizeman = "Ricardo M. Correia <rcorreia@wizy.org>";
wjlroe = "William Roe <willroe@gmail.com>";

View file

@ -113,6 +113,20 @@ nginx.override {
extra X11 options for nvidia and nouveau drivers, respectively.
</para>
</listitem>
<listitem>
<para>The <literal>Ctrl+Alt+Backspace</literal> key combination
no longer kills the X server by default.
There's a new option <option>services.xserver.enableCtrlAltBackspace</option>
allowing to enable the combination again.
</para>
</listitem>
<listitem>
<para><literal>emacsPackagesNg</literal> now contains all packages
from the ELPA, MELPA, and MELPA Stable repositories.
</para>
</listitem>
</itemizedlist>
</section>

View file

@ -71,7 +71,6 @@ in
# FIXME: Implement powersave governor for sandy bridge or later Intel CPUs
powerManagement.cpuFreqGovernor = mkDefault "ondemand";
powerManagement.scsiLinkPolicy = mkDefault "min_power";
systemd.targets.post-resume = {
description = "Post-Resume Actions";

View file

@ -128,7 +128,7 @@ in
# !!! Hacky, should modularise.
postBuild =
''
if [ -x $out/bin/update-mime-database -a -w $out/share/mime/packages ]; then
if [ -x $out/bin/update-mime-database -a -w $out/share/mime ]; then
XDG_DATA_DIRS=$out/share $out/bin/update-mime-database -V $out/share/mime > /dev/null
fi

View file

@ -42,6 +42,17 @@ let cfg = config.system.autoUpgrade; in
'';
};
dates = mkOption {
default = "04:40";
type = types.str;
description = ''
Specification (in the format described by
<citerefentry><refentrytitle>systemd.time</refentrytitle>
<manvolnum>5</manvolnum></citerefentry>) of the time at
which the update will occur.
'';
};
};
};
@ -73,7 +84,7 @@ let cfg = config.system.autoUpgrade; in
${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch ${toString cfg.flags}
'';
startAt = mkIf cfg.enable "04:40";
startAt = optionalString cfg.enable cfg.dates;
};
};

View file

@ -11,17 +11,8 @@ let
mopidyConf = writeText "mopidy.conf" cfg.configuration;
mopidyLauncher = stdenv.mkDerivation {
name = "mopidy-launcher";
phases = [ "installPhase" ];
buildInputs = [ makeWrapper python ];
installPhase = ''
mkdir -p $out/bin
ln -s ${mopidy}/bin/mopidy $out/bin/mopidy
wrapProgram $out/bin/mopidy \
--prefix PYTHONPATH : \
"${concatStringsSep ":" (map (p: "$(toPythonPath ${p})") cfg.extensionPackages)}"
'';
mopidyEnv = python.buildEnv.override {
extraLibs = [ mopidy ] ++ cfg.extensionPackages;
};
in {
@ -86,7 +77,7 @@ in {
description = "mopidy music player daemon";
preStart = "mkdir -p ${cfg.dataDir} && chown -R mopidy:mopidy ${cfg.dataDir}";
serviceConfig = {
ExecStart = "${mopidyLauncher}/bin/mopidy --config ${concatStringsSep ":" ([mopidyConf] ++ cfg.extraConfigFiles)}";
ExecStart = "${mopidyEnv}/bin/mopidy --config ${concatStringsSep ":" ([mopidyConf] ++ cfg.extraConfigFiles)}";
User = "mopidy";
PermissionsStartOnly = true;
};
@ -96,7 +87,7 @@ in {
description = "mopidy local files scanner";
preStart = "mkdir -p ${cfg.dataDir} && chown -R mopidy:mopidy ${cfg.dataDir}";
serviceConfig = {
ExecStart = "${mopidyLauncher}/bin/mopidy --config ${concatStringsSep ":" ([mopidyConf] ++ cfg.extraConfigFiles)} local scan";
ExecStart = "${mopidyEnv}/bin/mopidy --config ${concatStringsSep ":" ([mopidyConf] ++ cfg.extraConfigFiles)} local scan";
User = "mopidy";
PermissionsStartOnly = true;
Type = "oneshot";

View file

@ -90,7 +90,7 @@ in {
extraConfig = mkOption {
type = types.attrsOf types.str;
apply = mapAttrs' (n: v: nameValuePair ("ETCD_" + n) v);
apply = mapAttrs' (n: v: nameValuePair ("FLEET_" + n) v);
default = {};
example = literalExample ''
{
@ -120,7 +120,7 @@ in {
FLEET_PUBLIC_IP = cfg.publicIp;
FLEET_ETCD_CAFILE = cfg.etcdCafile;
FLEET_ETCD_KEYFILE = cfg.etcdKeyfile;
FEELT_ETCD_CERTFILE = cfg.etcdCertfile;
FLEET_ETCD_CERTFILE = cfg.etcdCertfile;
FLEET_METADATA = cfg.metadata;
} // cfg.extraConfig;
serviceConfig = {

View file

@ -48,11 +48,33 @@ in {
'';
};
host = mkOption {
default = "0.0.0.0";
example = "localhost";
type = types.str;
description = ''
Specifies the bind adress on which the jenkins HTTP interface listens.
The default is the wildcard adress.
'';
};
port = mkOption {
default = 8080;
type = types.int;
description = ''
Specifies port number on which the jenkins HTTP interface listens. The default is 8080.
Specifies port number on which the jenkins HTTP interface listens.
The default is 8080.
'';
};
prefix = mkOption {
default = "";
example = "/jenkins";
type = types.str;
description = ''
Specifies a urlPrefix to use with jenkins.
If the example /jenkins is given, the jenkins server will be
accessible using localhost:8080/jenkins.
'';
};
@ -80,7 +102,7 @@ in {
extraOptions = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "--debug=9" "--httpListenAddress=localhost" ];
example = [ "--debug=9" ];
description = ''
Additional command line arguments to pass to Jenkins.
'';
@ -134,15 +156,18 @@ in {
'';
script = ''
${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --httpPort=${toString cfg.port} ${concatStringsSep " " cfg.extraOptions}
${pkgs.jdk}/bin/java -jar ${pkgs.jenkins} --httpListenAddress=${cfg.host} \
--httpPort=${toString cfg.port} \
--prefix=${cfg.prefix} \
${concatStringsSep " " cfg.extraOptions}
'';
postStart = ''
until ${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port} ; do
until ${pkgs.curl}/bin/curl -s -L ${cfg.host}:${toString cfg.port}${cfg.prefix} ; do
sleep 10
done
while true ; do
index=`${pkgs.curl}/bin/curl -s -L localhost:${toString cfg.port}`
index=`${pkgs.curl}/bin/curl -s -L ${cfg.host}:${toString cfg.port}${cfg.prefix}`
if [[ !("$index" =~ 'Please wait while Jenkins is restarting' ||
"$index" =~ 'Please wait while Jenkins is getting ready to work') ]]; then
exit 0

View file

@ -144,7 +144,7 @@ in {
done
echo "Asking Jenkins to reload config"
curl --silent -X POST http://localhost:${toString jenkinsCfg.port}/reload
curl --silent -X POST http://${jenkinsCfg.host}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/reload
'';
serviceConfig = {
User = jenkinsCfg.user;

View file

@ -39,7 +39,7 @@ with lib;
mkdir -m 0755 -p /var/lib/udisks2
'';
#services.udev.packages = [ pkgs.udisks2 ];
services.udev.packages = [ pkgs.udisks2 ];
systemd.services.udisks2 = {
description = "Udisks2 service";

View file

@ -3,137 +3,178 @@
with lib;
let
cfg = config.services.dovecot2;
dovecotPkg = cfg.package;
dovecotConf =
''
base_dir = /var/run/dovecot2/
baseDir = "/run/dovecot2";
stateDir = "/var/lib/dovecot";
protocols = ${optionalString cfg.enableImap "imap"} ${optionalString cfg.enablePop3 "pop3"} ${optionalString cfg.enableLmtp "lmtp"}
protocols = concatStrings [
(optionalString cfg.enableImap "imap")
(optionalString cfg.enablePop3 "pop3")
(optionalString cfg.enableLmtp "lmtp")
];
dovecotConf = concatStrings [
''
+ (if cfg.sslServerCert!="" then
base_dir = ${baseDir}
protocols = ${protocols}
''
ssl_cert = <${cfg.sslServerCert}
ssl_key = <${cfg.sslServerKey}
ssl_ca = <${cfg.sslCACert}
disable_plaintext_auth = yes
'' else ''
(if isNull cfg.sslServerCert then ''
ssl = no
disable_plaintext_auth = no
'' else ''
ssl_cert = <${cfg.sslServerCert}
ssl_key = <${cfg.sslServerKey}
${optionalString (!(isNull cfg.sslCACert)) ("ssl_ca = <" + cfg.sslCACert)}
disable_plaintext_auth = yes
'')
+ ''
''
default_internal_user = ${cfg.user}
mail_location = ${cfg.mailLocation}
maildir_copy_with_hardlinks = yes
pop3_uidl_format = %08Xv%08Xu
auth_mechanisms = plain login
service auth {
user = root
}
''
(optionalString cfg.enablePAM ''
userdb {
driver = passwd
}
passdb {
driver = pam
args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2
}
'')
pop3_uidl_format = %08Xv%08Xu
'' + cfg.extraConfig;
cfg.extraConfig
];
modulesDir = pkgs.symlinkJoin "dovecot-modules"
(map (module: "${module}/lib/dovecot") cfg.modules);
in
{
###### interface
options.services.dovecot2 = {
enable = mkEnableOption "Dovecot 2.x POP3/IMAP server";
options = {
services.dovecot2 = {
enable = mkOption {
default = false;
description = "Whether to enable the Dovecot 2.x POP3/IMAP server.";
};
enablePop3 = mkOption {
default = true;
description = "Start the POP3 listener (when Dovecot is enabled).";
};
enableImap = mkOption {
default = true;
description = "Start the IMAP listener (when Dovecot is enabled).";
};
enableLmtp = mkOption {
default = false;
description = "Start the LMTP listener (when Dovecot is enabled).";
};
user = mkOption {
default = "dovecot2";
description = "Dovecot user name.";
};
group = mkOption {
default = "dovecot2";
description = "Dovecot group name.";
};
extraConfig = mkOption {
default = "";
example = "mail_debug = yes";
description = "Additional entries to put verbatim into Dovecot's config file.";
};
configFile = mkOption {
default = null;
description = "Config file used for the whole dovecot configuration.";
apply = v: if v != null then v else pkgs.writeText "dovecot.conf" dovecotConf;
};
mailLocation = mkOption {
default = "maildir:/var/spool/mail/%u"; /* Same as inbox, as postfix */
example = "maildir:~/mail:INBOX=/var/spool/mail/%u";
description = ''
Location that dovecot will use for mail folders. Dovecot mail_location option.
'';
};
sslServerCert = mkOption {
default = "";
description = "Server certificate";
};
sslCACert = mkOption {
default = "";
description = "CA certificate used by the server certificate.";
};
sslServerKey = mkOption {
default = "";
description = "Server key.";
};
showPAMFailure = mkOption {
default = false;
description = "Show the PAM failure message on authentication error (useful for OTPW).";
};
enablePop3 = mkOption {
type = types.bool;
default = true;
description = "Start the POP3 listener (when Dovecot is enabled).";
};
enableImap = mkOption {
type = types.bool;
default = true;
description = "Start the IMAP listener (when Dovecot is enabled).";
};
enableLmtp = mkOption {
type = types.bool;
default = false;
description = "Start the LMTP listener (when Dovecot is enabled).";
};
package = mkOption {
type = types.package;
default = pkgs.dovecot22;
description = "Dovecot package to use.";
};
user = mkOption {
type = types.str;
default = "dovecot2";
description = "Dovecot user name.";
};
group = mkOption {
type = types.str;
default = "dovecot2";
description = "Dovecot group name.";
};
extraConfig = mkOption {
type = types.str;
default = "";
example = "mail_debug = yes";
description = "Additional entries to put verbatim into Dovecot's config file.";
};
configFile = mkOption {
type = types.nullOr types.str;
default = null;
description = "Config file used for the whole dovecot configuration.";
apply = v: if v != null then v else pkgs.writeText "dovecot.conf" dovecotConf;
};
mailLocation = mkOption {
type = types.str;
default = "maildir:/var/spool/mail/%u"; /* Same as inbox, as postfix */
example = "maildir:~/mail:INBOX=/var/spool/mail/%u";
description = ''
Location that dovecot will use for mail folders. Dovecot mail_location option.
'';
};
modules = mkOption {
type = types.listOf types.package;
default = [];
example = [ pkgs.dovecot_pigeonhole ];
description = ''
Symlinks the contents of lib/dovecot of every given package into
/var/lib/dovecot/modules. This will make the given modules available
if a dovecot package with the module_dir patch applied (like
pkgs.dovecot22, the default) is being used.
'';
};
sslCACert = mkOption {
type = types.nullOr types.str;
default = null;
description = "Path to the server's CA certificate key.";
};
sslServerCert = mkOption {
type = types.nullOr types.str;
default = null;
description = "Path to the server's public key.";
};
sslServerKey = mkOption {
type = types.nullOr types.str;
default = null;
description = "Path to the server's private key.";
};
enablePAM = mkOption {
type = types.bool;
default = true;
description = "Wether to create a own Dovecot PAM service and configure PAM user logins.";
};
showPAMFailure = mkOption {
type = types.bool;
default = false;
description = "Show the PAM failure message on authentication error (useful for OTPW).";
};
};
###### implementation
config = mkIf cfg.enable {
config = mkIf config.services.dovecot2.enable {
security.pam.services.dovecot2 = {};
security.pam.services.dovecot2 = mkIf cfg.enablePAM {};
users.extraUsers = [
{ name = cfg.user;
@ -148,36 +189,47 @@ in
}
];
users.extraGroups = singleton
{ name = cfg.group;
gid = config.ids.gids.dovecot2;
users.extraGroups = singleton {
name = cfg.group;
gid = config.ids.gids.dovecot2;
};
systemd.services.dovecot2 = {
description = "Dovecot IMAP/POP3 server";
after = [ "keys.target" "network.target" ];
wants = [ "keys.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
mkdir -p "${baseDir}/login"
chown -R ${cfg.user}:${cfg.group} "${baseDir}"
rm -f "${stateDir}/modules"
ln -s "${modulesDir}" "${stateDir}/modules"
'';
serviceConfig = {
ExecStart = "${dovecotPkg}/sbin/dovecot -F -c ${cfg.configFile}";
Restart = "on-failure";
RestartSec = "1s";
StartLimitInterval = "1min";
};
};
systemd.services.dovecot2 =
{ description = "Dovecot IMAP/POP3 server";
environment.systemPackages = [ dovecotPkg ];
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
preStart =
''
${pkgs.coreutils}/bin/mkdir -p /var/run/dovecot2 /var/run/dovecot2/login
${pkgs.coreutils}/bin/chown -R ${cfg.user}:${cfg.group} /var/run/dovecot2
'';
serviceConfig = {
ExecStart = "${pkgs.dovecot}/sbin/dovecot -F -c ${cfg.configFile}";
Restart = "on-failure";
RestartSec = "1s";
StartLimitInterval = "1min";
};
};
environment.systemPackages = [ pkgs.dovecot ];
assertions = [{ assertion = cfg.enablePop3 || cfg.enableImap;
message = "dovecot needs at least one of the IMAP or POP3 listeners enabled";}];
assertions = [
{ assertion = cfg.enablePop3 || cfg.enableImap;
message = "dovecot needs at least one of the IMAP or POP3 listeners enabled";
}
{ assertion = isNull cfg.sslServerCert == isNull cfg.sslServerKey
&& (!(isNull cfg.sslCACert) -> !(isNull cfg.sslServerCert || isNull cfg.sslServerKey));
message = "dovecot needs both sslServerCert and sslServerKey defined for working crypto";
}
{ assertion = cfg.showPAMFailure -> cfg.enablePAM;
message = "dovecot is configured with showPAMFailure while enablePAM is disabled";
}
];
};

View file

@ -1,5 +1,5 @@
# Avahi daemon.
{ config, lib, pkgs, ... }:
{ config, lib, utils, pkgs, ... }:
with lib;
@ -7,7 +7,9 @@ let
cfg = config.services.avahi;
inherit (pkgs) avahi;
# We must escape interfaces due to the systemd interpretation
subsystemDevice = interface:
"sys-subsystem-net-devices-${utils.escapeSystemdPath interface}.device";
avahiDaemonConf = with cfg; pkgs.writeText "avahi-daemon.conf" ''
[server]
@ -21,12 +23,18 @@ let
browse-domains=${concatStringsSep ", " browseDomains}
use-ipv4=${if ipv4 then "yes" else "no"}
use-ipv6=${if ipv6 then "yes" else "no"}
${optionalString (interfaces!=null) "allow-interfaces=${concatStringsSep "," interfaces}"}
[wide-area]
enable-wide-area=${if wideArea then "yes" else "no"}
[publish]
disable-publishing=${if publishing then "no" else "yes"}
disable-publishing=${if publish.enable then "no" else "yes"}
disable-user-service-publishing=${if publish.userServices then "no" else "yes"}
publish-addresses=${if publish.userServices || publish.addresses then "yes" else "no"}
publish-hinfo=${if publish.hinfo then "yes" else "no"}
publish-workstation=${if publish.workstation then "yes" else "no"}
publish-domain=${if publish.domain then "yes" else "no"}
'';
in
@ -74,14 +82,55 @@ in
description = ''Whether to use IPv6'';
};
interfaces = mkOption {
type = types.nullOr (types.listOf types.str);
default = null;
description = ''
List of network interfaces that should be used by the <command>avahi-daemon</command>.
Other interfaces will be ignored. If <literal>null</literal> all local interfaces
except loopback and point-to-point will be used.
'';
};
wideArea = mkOption {
default = true;
description = ''Whether to enable wide-area service discovery.'';
};
publishing = mkOption {
default = true;
description = ''Whether to allow publishing.'';
publish = {
enable = mkOption {
default = false;
description = ''Whether to allow publishing in general.'';
};
userServices = mkOption {
default = false;
description = ''Whether to publish user services. Will set <literal>addresses=true</literal>.'';
};
addresses = mkOption {
default = false;
description = ''Whether to register mDNS address records for all local IP addresses.'';
};
hinfo = mkOption {
default = false;
description = ''
Whether to register an mDNS HINFO record which contains information about the
local operating system and CPU.
'';
};
workstation = mkOption {
default = false;
description = ''Whether to register a service of type "_workstation._tcp" on the local LAN.'';
};
domain = mkOption {
default = false;
description = ''Whether to announce the locally used domain name for browsing by other hosts.'';
};
};
nssmdns = mkOption {
@ -118,29 +167,36 @@ in
system.nssModules = optional cfg.nssmdns pkgs.nssmdns;
environment.systemPackages = [ avahi ];
environment.systemPackages = [ pkgs.avahi ];
jobs.avahi_daemon =
{ name = "avahi-daemon";
systemd.services.avahi-daemon =
let
deps = optionals (cfg.interfaces!=null) (map subsystemDevice cfg.interfaces);
in
{ description = "Avahi daemon";
wantedBy = [ "ip-up.target" ];
bindsTo = deps;
after = deps;
before = [ "ip-up.target" ];
# Receive restart event after resume
partOf = [ "post-resume.target" ];
startOn = "ip-up";
path = [ pkgs.coreutils pkgs.avahi ];
preStart = "mkdir -p /var/run/avahi-daemon";
script =
''
export PATH="${avahi}/bin:${avahi}/sbin:$PATH"
# Make NSS modules visible so that `avahi_nss_support ()' can
# return a sensible value.
export LD_LIBRARY_PATH="${config.system.nssModules.path}"
mkdir -p /var/run/avahi-daemon
exec ${avahi}/sbin/avahi-daemon --syslog -f "${avahiDaemonConf}"
exec ${pkgs.avahi}/sbin/avahi-daemon --syslog -f "${avahiDaemonConf}"
'';
};
services.dbus.enable = true;
services.dbus.packages = [avahi];
services.dbus.packages = [ pkgs.avahi ];
# Enabling Avahi without exposing it in the firewall doesn't make
# sense.

View file

@ -39,6 +39,9 @@ let
certrequired=${if cfg.clientCertRequired then "true" else "false"}
${if cfg.sslCert == "" then "" else "sslCert="+cfg.sslCert}
${if cfg.sslKey == "" then "" else "sslKey="+cfg.sslKey}
${if cfg.sslCa == "" then "" else "sslCA="+cfg.sslCa}
${cfg.extraConfig}
'';
in
{
@ -219,6 +222,18 @@ in
default = "";
description = "Path to your SSL key.";
};
sslCa = mkOption {
type = types.str;
default = "";
description = "Path to your SSL CA certificate.";
};
extraConfig = mkOption {
type = types.str;
default = "";
description = "Extra configuration to put into mumur.ini.";
};
};
};

View file

@ -247,6 +247,8 @@ in
wantedBy = [ "multi-user.target" ];
wants = [ "cups.service" "avahi-daemon.service" ];
bindsTo = [ "cups.service" "avahi-daemon.service" ];
partOf = [ "cups.service" "avahi-daemon.service" ];
after = [ "cups.service" "avahi-daemon.service" ];
path = [ cups ];

View file

@ -140,9 +140,6 @@ in {
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
# Find the mouse
export XCURSOR_PATH=~/.icons:${config.system.path}/share/icons
${gnome3.gnome_session}/bin/gnome-session&
waitPID=$!
'';

View file

@ -135,7 +135,7 @@ in
pkgs.gst_all.gstPluginsUgly
pkgs.gst_all.gstPluginsBad
pkgs.gst_all.gstFfmpeg # for mp3 playback
pkgs.phonon_qt5_backend_gstreamer
pkgs.qt55.phonon-backend-gstreamer
pkgs.gst_all_1.gstreamer
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
@ -147,7 +147,7 @@ in
++ lib.optionals cfg.phonon.vlc.enable
[
pkgs.phonon_qt5_backend_vlc
pkgs.phonon_backend_vlc
pkgs.qt55.phonon-backend-vlc
];
environment.pathsToLink = [ "/share" ];

View file

@ -409,6 +409,16 @@ in
if possible.
'';
};
enableCtrlAltBackspace = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable the DontZap option, which binds Ctrl+Alt+Backspace
to forcefully kill X. This can lead to data loss and is disabled
by default.
'';
};
};
};
@ -534,6 +544,7 @@ in
''
Section "ServerFlags"
Option "AllowMouseOpenFail" "on"
Option "DontZap" "${if cfg.enableCtrlAltBackspace then "off" else "on"}"
${cfg.serverFlagsSection}
EndSection

View file

@ -10,8 +10,11 @@ let
realGrub = if cfg.version == 1 then pkgs.grub
else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; }
else if cfg.enableTrustedBoot then pkgs.trustedGrub
else pkgs.grub2;
else if cfg.trustedBoot.enable
then if cfg.trustedBoot.isHPLaptop
then pkgs.trustedGrub-for-HP
else pkgs.trustedGrub
else pkgs.grub2;
grub =
# Don't include GRUB if we're only generating a GRUB menu (e.g.,
@ -369,24 +372,37 @@ in
'';
};
enableTrustedBoot = mkOption {
default = false;
type = types.bool;
description = ''
Enable trusted boot. GRUB will measure all critical components during
the boot process to offer TCG (TPM) support.
'';
};
trustedBoot = {
enable = mkOption {
default = false;
type = types.bool;
description = ''
Enable trusted boot. GRUB will measure all critical components during
the boot process to offer TCG (TPM) support.
'';
};
systemHasTPM = mkOption {
default = "";
example = "YES_TPM_is_activated";
type = types.string;
description = ''
Assertion that the target system has an activated TPM. It is a safety
check before allowing the activation of 'trustedBoot.enable'. TrustedBoot
WILL FAIL TO BOOT YOUR SYSTEM if no TPM is available.
'';
};
isHPLaptop = mkOption {
default = false;
type = types.bool;
description = ''
Use a special version of TrustedGRUB that is needed by some HP laptops
and works only for the HP laptops.
'';
};
systemHasTPM = mkOption {
default = "";
example = "YES_TPM_is_activated";
type = types.string;
description = ''
Assertion that the target system has an activated TPM. It is a safety
check before allowing the activation of 'enableTrustedBoot'. TrustedBoot
WILL FAIL TO BOOT YOUR SYSTEM if no TPM is available.
'';
};
};
@ -452,19 +468,19 @@ in
message = "You cannot have duplicated devices in mirroredBoots";
}
{
assertion = !cfg.enableTrustedBoot || cfg.version == 2;
assertion = !cfg.trustedBoot.enable || cfg.version == 2;
message = "Trusted GRUB is only available for GRUB 2";
}
{
assertion = !cfg.efiSupport || !cfg.enableTrustedBoot;
assertion = !cfg.efiSupport || !cfg.trustedBoot.enable;
message = "Trusted GRUB does not have EFI support";
}
{
assertion = !cfg.zfsSupport || !cfg.enableTrustedBoot;
assertion = !cfg.zfsSupport || !cfg.trustedBoot.enable;
message = "Trusted GRUB does not have ZFS support";
}
{
assertion = !cfg.enableTrustedBoot || cfg.systemHasTPM == "YES_TPM_is_activated";
assertion = !cfg.trustedBoot.enable || cfg.trustedBoot.systemHasTPM == "YES_TPM_is_activated";
message = "Trusted GRUB can break the system! Confirm that the system has an activated TPM by setting 'systemHasTPM'.";
}
] ++ flip concatMap cfg.mirroredBoots (args: [

View file

@ -214,7 +214,7 @@ in
done
''] ++ (map (pool: ''
echo "importing root ZFS pool \"${pool}\"..."
zpool import -N $ZFS_FORCE "${pool}"
zpool import -d /dev/disk/by-id -N $ZFS_FORCE "${pool}"
'') rootPools));
};
@ -255,7 +255,7 @@ in
};
script = ''
zpool_cmd="${zfsUserPkg}/sbin/zpool"
("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}"
("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d /dev/disk/by-id -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}"
'';
};
in listToAttrs (map createImportService dataPools) // {

View file

@ -156,6 +156,12 @@ in
after = [ "ip-up.target" ];
wants = [ "ip-up.target" ];
environment = {
GIT_SSL_CAINFO = "/etc/ssl/certs/ca-certificates.crt";
OPENSSL_X509_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt";
SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt";
};
path = [ pkgs.e2fsprogs ];
description = "Windows Azure Agent Service";
unitConfig.ConditionPathExists = "/etc/waagent.conf";

View file

@ -71,6 +71,7 @@ in rec {
(all nixos.tests.misc)
(all nixos.tests.nat.firewall)
(all nixos.tests.nat.standalone)
(all nixos.tests.networking.scripted.loopback)
(all nixos.tests.networking.scripted.static)
(all nixos.tests.networking.scripted.dhcpSimple)
(all nixos.tests.networking.scripted.dhcpOneIf)

View file

@ -256,6 +256,7 @@ in rec {
tests.mysqlReplication = callTest tests/mysql-replication.nix {};
tests.nat.firewall = callTest tests/nat.nix { withFirewall = true; };
tests.nat.standalone = callTest tests/nat.nix { withFirewall = false; };
tests.networking.networkd.loopback = callTest tests/networking.nix { networkd = true; test = "loopback"; };
tests.networking.networkd.static = callTest tests/networking.nix { networkd = true; test = "static"; };
tests.networking.networkd.dhcpSimple = callTest tests/networking.nix { networkd = true; test = "dhcpSimple"; };
tests.networking.networkd.dhcpOneIf = callTest tests/networking.nix { networkd = true; test = "dhcpOneIf"; };
@ -264,6 +265,7 @@ in rec {
tests.networking.networkd.macvlan = callTest tests/networking.nix { networkd = true; test = "macvlan"; };
tests.networking.networkd.sit = callTest tests/networking.nix { networkd = true; test = "sit"; };
tests.networking.networkd.vlan = callTest tests/networking.nix { networkd = true; test = "vlan"; };
tests.networking.scripted.loopback = callTest tests/networking.nix { networkd = false; test = "loopback"; };
tests.networking.scripted.static = callTest tests/networking.nix { networkd = false; test = "static"; };
tests.networking.scripted.dhcpSimple = callTest tests/networking.nix { networkd = false; test = "dhcpSimple"; };
tests.networking.scripted.dhcpOneIf = callTest tests/networking.nix { networkd = false; test = "dhcpOneIf"; };

View file

@ -31,6 +31,17 @@ import ./make-test.nix ({ pkgs, networkd, test, ... }:
};
};
testCases = {
loopback = {
name = "Loopback";
machine.networking.useNetworkd = networkd;
testScript = ''
startAll;
$machine->waitForUnit("network-interfaces.target");
$machine->waitForUnit("network.target");
$machine->succeed("ip addr show lo | grep -q 'inet 127.0.0.1/8 '");
$machine->succeed("ip addr show lo | grep -q 'inet6 ::1/128 '");
'';
};
static = {
name = "Static";
nodes.router = router;

View file

@ -3,11 +3,11 @@
pythonPackages.buildPythonPackage rec {
name = "mopidy-mopify-${version}";
version = "1.5.1";
version = "1.5.8";
src = fetchurl {
url = "https://github.com/dirkgroenen/mopidy-mopify/archive/${version}.tar.gz";
sha256 = "0hhdss4i5436dj37pndxk81a4g3g8f6zqjyv04lhpqcww01290as";
sha256 = "1gq88i5hbyskwhqf51myndqgmrndkyy6gs022sc387fy3dwxmvn0";
};
propagatedBuildInputs = with pythonPackages; [ mopidy configobj ];

View file

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
pythonPackages.buildPythonPackage rec {
name = "mopidy-musicbox-webclient-${version}";
version = "2.0.0";
src = fetchFromGitHub {
owner = "pimusicbox";
repo = "mopidy-musicbox-webclient";
rev = "v${version}";
sha256 = "0gnw6jn55jr6q7bdp70mk3cm5f6jy8lm3s7ayfmisihhjbl3rnaq";
};
propagatedBuildInputs = [ mopidy ];
doCheck = false;
meta = with stdenv.lib; {
description = "Mopidy extension for playing music from SoundCloud";
license = licenses.mit;
maintainers = [ maintainers.spwhitt ];
};
}

View file

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
pythonPackages.buildPythonPackage rec {
name = "mopidy-soundcloud-${version}";
version = "2.0.1";
src = fetchFromGitHub {
owner = "mopidy";
repo = "mopidy-soundcloud";
rev = "v${version}";
sha256 = "05yvjnivj26wjish7x1xrd9l5z8i14b610a8pbifnq3cq7y2m22r";
};
propagatedBuildInputs = [ mopidy ];
doCheck = false;
meta = with stdenv.lib; {
description = "Mopidy extension for playing music from SoundCloud";
license = licenses.mit;
maintainers = [ maintainers.spwhitt ];
};
}

View file

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub, pythonPackages, mopidy, mopidy-spotify }:
pythonPackages.buildPythonPackage rec {
name = "mopidy-spotify-tunigo-${version}";
version = "0.2.1";
src = fetchFromGitHub {
owner = "trygveaa";
repo = "mopidy-spotify-tunigo";
rev = "v${version}";
sha256 = "0827wghbgrscncnshz30l97hgg0g5bsnm0ad8596zh7cai0ibss0";
};
propagatedBuildInputs = [ mopidy mopidy-spotify pythonPackages.tunigo ];
doCheck = false;
meta = with stdenv.lib; {
description = "Mopidy extension for providing the browse feature of Spotify";
license = licenses.asl20;
maintainers = [ maintainers.spwhitt ];
};
}

View file

@ -0,0 +1,24 @@
{ stdenv, fetchFromGitHub, pythonPackages, mopidy }:
pythonPackages.buildPythonPackage rec {
name = "mopidy-youtube-${version}";
version = "2.0.1";
src = fetchFromGitHub {
owner = "mopidy";
repo = "mopidy-youtube";
rev = "v${version}";
sha256 = "1si7j7m5kg0cxlhkw8s2mbnpmc9mb3l69n5sgklb1yv1s55iia6z";
};
propagatedBuildInputs = with pythonPackages; [ mopidy pafy ];
doCheck = false;
meta = with stdenv.lib; {
description = "Mopidy extension for playing music from YouTube";
license = licenses.asl20;
maintainers = [ maintainers.spwhitt ];
};
}

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pythonPackages, pygobject, gst_python
, gst_plugins_good, gst_plugins_base
, gst_plugins_good, gst_plugins_base, gst_plugins_ugly
}:
pythonPackages.buildPythonPackage rec {
@ -13,7 +13,7 @@ pythonPackages.buildPythonPackage rec {
};
propagatedBuildInputs = with pythonPackages; [
gst_python pygobject pykka tornado requests2 gst_plugins_base gst_plugins_good
gst_python pygobject pykka tornado requests2 gst_plugins_base gst_plugins_good gst_plugins_ugly
];
# There are no tests

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, boost, mpd_clientlib, ncurses, pkgconfig, readline
, libiconv
, libiconv, icu
, outputsSupport ? false # outputs screen
, visualizerSupport ? false, fftw ? null # visualizer screen
, clockSupport ? false # clock screen
@ -15,11 +15,11 @@ assert taglibSupport -> (taglib != null);
with stdenv.lib;
stdenv.mkDerivation rec {
name = "ncmpcpp-${version}";
version = "0.6.7";
version = "0.7";
src = fetchurl {
url = "http://ncmpcpp.rybczak.net/stable/${name}.tar.bz2";
sha256 = "0yr1ib14qkgbsv839anpzkfbwkm6gg8wv4bf98ar7q5l2p2pv008";
sha256 = "0xzz0g9whqjcjaaqmsw5ph1zvpi2j5v3i5k73g7916rca3q4z4jh";
};
configureFlags = [ "BOOST_LIB_SUFFIX=" ]
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ boost mpd_clientlib ncurses readline libiconv ]
buildInputs = [ boost mpd_clientlib ncurses readline libiconv icu ]
++ optional curlSupport curl
++ optional visualizerSupport fftw
++ optional taglibSupport taglib;

View file

@ -1,7 +1,7 @@
{ fetchurl, stdenv, dpkg, xorg, qt4, alsaLib, makeWrapper, openssl, freetype
, glib, pango, cairo, atk, gdk_pixbuf, gtk, cups, nspr, nss, libpng, GConf
, libgcrypt, chromium, udev, fontconfig
, dbus, expat }:
, dbus, expat, ffmpeg_0_10 }:
assert stdenv.system == "x86_64-linux";
@ -15,6 +15,7 @@ let
cups
dbus
expat
ffmpeg_0_10
fontconfig
freetype
GConf

View file

@ -11,9 +11,7 @@ assert enableXMPP -> libjreen != null;
assert enableKDE -> kdelibs != null;
assert enableTelepathy -> telepathy_qt != null;
let
quazipQt4 = quazip.override { qt = qt4; };
in stdenv.mkDerivation rec {
stdenv.mkDerivation rec {
name = "tomahawk-${version}";
version = "0.8.4";
@ -29,7 +27,7 @@ in stdenv.mkDerivation rec {
buildInputs = [
cmake pkgconfig attica boost gnutls libechonest liblastfm lucenepp phonon
qca2 qjson qt4 qtkeychain quazipQt4 sparsehash taglib websocketpp
qca2 qjson qt4 qtkeychain quazip sparsehash taglib websocketpp
makeWrapper
] ++ stdenv.lib.optional enableXMPP libjreen
++ stdenv.lib.optional enableKDE kdelibs

View file

@ -201,10 +201,10 @@
"tiny": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/tiny-0.1.tar",
"sha256": "04iyidzjgnm4ka575wxqdak19h8j4dlni2ahf0bkq1q9by79xq1q"
"url": "http://elpa.gnu.org/packages/tiny-0.1.1.tar",
"sha256": "1nhg8375qdn457wj0xmfaj72s87xbabk2w1nl6q7rjvwxv08yyn7"
},
"version": "0.1",
"version": "0.1.1",
"deps": []
},
"coffee-mode": {
@ -246,10 +246,10 @@
"org": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/org-20151123.tar",
"sha256": "13ybzjg6k61paldfln6isc6149hvilwsgsnhyirig42bz1z0vjbb"
"url": "http://elpa.gnu.org/packages/org-20151214.tar",
"sha256": "15m9l7p7xfmcrxrcsxbvpp8bq5ajcapknvqblhmk77j7ca3jffi1"
},
"version": "20151123",
"version": "20151214",
"deps": []
},
"bug-hunter": {
@ -594,10 +594,10 @@
"hydra": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/hydra-0.13.3.tar",
"sha256": "1il0maxkxm2nxwz6y6v85zhf6a8f52gfq51h1filcnlzg10b5arm"
"url": "http://elpa.gnu.org/packages/hydra-0.13.4.tar",
"sha256": "11msy6n075iv00c2r9f85bzx3srnj403rhlga1rgsl6vsryf21fj"
},
"version": "0.13.3",
"version": "0.13.4",
"deps": [
"cl-lib"
]
@ -734,10 +734,10 @@
"ggtags": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/ggtags-0.8.10.el",
"sha256": "0bigf87idd2rh40akyjiy1qvym6y3hvvx6khyb233b231s400aj9"
"url": "http://elpa.gnu.org/packages/ggtags-0.8.11.el",
"sha256": "1q2bp2b7lylf7n6c1psfn5swyjg0y78ykm0ak2kd84pbyhqak2mq"
},
"version": "0.8.10",
"version": "0.8.11",
"deps": [
"cl-lib",
"emacs"
@ -953,10 +953,10 @@
"swiper": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/swiper-0.5.1.tar",
"sha256": "06kd6r90fnjz3lapm52pgsx4dhnd95mkzq9y4khkzqny59h0vmm6"
"url": "http://elpa.gnu.org/packages/swiper-0.7.0.tar",
"sha256": "1bzzx41zcf3yk6r6csqzlffwwrw9gyk8ab026r55l6416b6rcynx"
},
"version": "0.5.1",
"version": "0.7.0",
"deps": [
"emacs"
]
@ -1018,10 +1018,10 @@
"transcribe": {
"fetch": {
"tag": "fetchurl",
"url": "http://elpa.gnu.org/packages/transcribe-0.5.0.el",
"sha256": "1wxfv96sjcxins8cyqijsb16fc3n0m13kvaw0hjam8x91wamcbxq"
"url": "http://elpa.gnu.org/packages/transcribe-1.0.2.el",
"sha256": "0b0qaq0b3l37h6wfs4j80csmfcbidcd8a8wk6mwn6p4cdi7msr15"
},
"version": "0.5.0",
"version": "1.0.2",
"deps": []
},
"websocket": {

View file

@ -1,8 +1,21 @@
pkgs: with pkgs;
/*
# Updating
To update the list of packages from ELPA,
1. Clone https://github.com/ttuegel/emacs2nix
2. Run `./elpa-packages.sh` from emacs2nix
3. Copy the new elpa-packages.json file into Nixpkgs
4. `git commit -m "elpa-packages $(date -Idate)"`
*/
{ fetchurl, lib, stdenv, texinfo }:
let
inherit (stdenv.lib) makeScope mapAttrs;
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./elpa-packages.json;
manifest = builtins.fromJSON json;
@ -10,17 +23,20 @@ let
mkPackage = self: name: recipe:
let drv =
{ elpaBuild, stdenv, fetchurl }:
let fetch = { inherit fetchurl; }."${recipe.fetch.tag}"
or (abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'");
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{ inherit fetchurl; }."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
in elpaBuild {
pname = name;
inherit (recipe) version;
inherit src;
deps =
let lookupDep = d:
self."${d}" or (abort "emacs-${name}: missing dependency ${d}");
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://elpa.gnu.org/packages/${name}.html";
@ -29,14 +45,42 @@ let
};
in self.callPackage drv {};
packages = self:
let
elpaPackages = mapAttrs (mkPackage self) manifest;
in
elpaBuild = import ../../../build-support/emacs/melpa.nix {
inherit (pkgs) lib stdenv fetchurl texinfo;
inherit (self) emacs;
};
in elpaPackages // { inherit elpaBuild elpaPackages; };
self:
in makeScope pkgs.newScope packages
let
super = mapAttrs (mkPackage self) manifest;
elpaBuild = import ../../../build-support/emacs/melpa.nix {
inherit fetchurl lib stdenv texinfo;
inherit (self) emacs;
};
markBroken = pkg: pkg.override {
elpaBuild = args: self.elpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
elpaPackages = super // {
ace-window = markBroken super.ace-window;
ada-mode = markBroken super.ada-mode;
beacon = markBroken super.beacon;
bug-hunter = markBroken super.bug-hunter;
company-math = markBroken super.company-math;
company-statistics = markBroken super.company-statistics;
context-coloring = markBroken super.context-coloring;
dict-tree = markBroken super.dict-tree;
el-search = markBroken super.el-search;
ergoemacs-mode = markBroken super.ergoemacs-mode;
exwm = markBroken super.exwm;
gnugo = markBroken super.gnugo;
iterators = markBroken super.iterators;
midi-kbd = markBroken super.midi-kbd;
stream = markBroken super.stream;
tNFA = markBroken super.tNFA;
trie = markBroken super.trie;
xelb = markBroken super.xelb;
};
in elpaPackages // { inherit elpaBuild elpaPackages; }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,71 @@
/*
# Updating
To update the list of packages from MELPA,
1. Clone https://github.com/ttuegel/emacs2nix
2. Clone https://github.com/milkypostman/melpa
3. Run `./melpa-packages.sh PATH_TO_MELPA_CLONE` from emacs2nix
4. Copy the new melpa-packages.json file into Nixpkgs
5. `git commit -m "melpa-packages $(date -Idate)"`
*/
{ lib }:
let
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./melpa-stable-packages.json;
manifest = builtins.fromJSON json;
mkPackage = self: name: recipe:
let drv =
{ melpaBuild, stdenv, fetchbzr, fetchcvs, fetchFromGitHub, fetchFromGitLab
, fetchgit, fetchhg, fetchsvn, fetchurl }:
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{
inherit fetchbzr fetchcvs fetchFromGitHub fetchFromGitLab fetchgit fetchhg
fetchsvn fetchurl;
}."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
in melpaBuild {
pname = name;
inherit (recipe) version;
inherit src;
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://melpa.org/#/${name}";
license = stdenv.lib.licenses.free;
};
};
in self.callPackage drv {};
in
self:
let
super = mapAttrs (mkPackage self) manifest;
markBroken = pkg: pkg.override {
melpaBuild = args: self.melpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
melpaPackages = super // {
# broken upstream
ack-menu = markBroken super.ack-menu;
};
in
melpaPackages // { inherit melpaPackages; }

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,73 @@
/*
# Updating
To update the list of packages from MELPA Stable,
1. Clone https://github.com/ttuegel/emacs2nix
2. Clone https://github.com/milkypostman/melpa
3. Run `./melpa-stable-packages.sh PATH_TO_MELPA_CLONE` from emacs2nix.
Error messages about missing versions are normal; most packages in
MELPA do not have a stable version.
4. Copy the new melpa-stable-packages.json file into Nixpkgs
5. `git commit -m "melpa-stable-packages $(date -Idate)"`
*/
{ lib }:
let
inherit (lib) makeScope mapAttrs;
json = builtins.readFile ./melpa-stable-packages.json;
manifest = builtins.fromJSON json;
mkPackage = self: name: recipe:
let drv =
{ melpaBuild, stdenv, fetchbzr, fetchcvs, fetchFromGitHub, fetchFromGitLab
, fetchgit, fetchhg, fetchsvn, fetchurl }:
let
unknownFetcher =
abort "emacs-${name}: unknown fetcher '${recipe.fetch.tag}'";
fetch =
{
inherit fetchbzr fetchcvs fetchFromGitHub fetchFromGitLab fetchgit fetchhg
fetchsvn fetchurl;
}."${recipe.fetch.tag}"
or unknownFetcher;
args = builtins.removeAttrs recipe.fetch [ "tag" ];
src = fetch args;
in melpaBuild {
pname = name;
inherit (recipe) version;
inherit src;
packageRequires =
let lookupDep = d: self."${d}" or null;
in map lookupDep recipe.deps;
meta = {
homepage = "http://stable.melpa.org/#/${name}";
license = stdenv.lib.licenses.free;
};
};
in self.callPackage drv {};
in
self:
let
super = mapAttrs (mkPackage self) manifest;
markBroken = pkg: pkg.override {
melpaBuild = args: self.melpaBuild (args // {
meta = (args.meta or {}) // { broken = true; };
});
};
melpaStablePackages = super // {
# broken upstream
ack-menu = markBroken super.ack-menu;
};
in
melpaStablePackages // { inherit melpaStablePackages; }

View file

@ -237,25 +237,25 @@ in
idea-community = buildIdea rec {
name = "idea-community-${version}";
version = "15.0.1";
build = "IC-143.382";
version = "15.0.2";
build = "IC-143.1184";
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 = "1dbwzj12xkv2xw5nrhr779ac24hag0rb96dlagzyxcvc44xigjps";
sha256 = "0y8rrbsb87avn1dhw5r1xb4axpbm1qvgcd0aysir9bqzhx8qg64c";
};
};
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
version = "15.0.1";
build = "IU-143.382";
version = "15.0.2";
build = "IU-143.1184";
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 = "0bw6qvsvhw0nabv01bgsbnl78vimnz2kb280jzv0ikmhxranyk0z";
sha256 = "1r8gw7mv1b0k223k76ib08f4yrrgrw24qmhkbx88rknmls5nsgss";
};
};

View file

@ -11,10 +11,10 @@ with stdenv.lib;
stdenv.mkDerivation rec {
name = "nano-${version}";
version = "2.4.2";
version = "2.5.0";
src = fetchurl {
url = "mirror://gnu/nano/${name}.tar.gz";
sha256 = "1fb5gzdm3jdx1f2vyanjvdmppaz082lf4kinyffnssgmzhc7zkf8";
sha256 = "1vl9bim56k1b4zwc3icxp46w6pn6gb042j1h4jlz1jklxxpkwcpz";
};
buildInputs = [ ncurses ] ++ optional enableNls gettext;
configureFlags = ''

View file

@ -1,5 +1,6 @@
{ stdenv, fetchurl, unzip, cmake, pkgconfig, makeWrapper
, hunspell, minizip, boost, xercesc, qt5
, hunspell, minizip, boost, xercesc
, qtbase, qttools, qtwebkit, qtxmlpatterns
}:
let
@ -17,7 +18,7 @@ stdenv.mkDerivation rec {
buildInputs = [
unzip cmake pkgconfig
hunspell minizip boost xercesc qt5.base qt5.tools qt5.webkit qt5.xmlpatterns
hunspell minizip boost xercesc qtbase qttools qtwebkit qtxmlpatterns
];
# XXX: the compiler seems to treat the .h file inappropriately:

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, qt5, pkgconfig, python }:
{ stdenv, fetchurl, qtbase, qttools, pkgconfig, python }:
let
version = "0.12.3";
@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
inherit sha256;
};
buildInputs = [ qt5.base qt5.tools pkgconfig python ];
buildInputs = [ qtbase qttools pkgconfig python ];
preConfigure = "qmake -r PREFIX=$out";

View file

@ -1,4 +1,4 @@
{ stdenv, fetchgit, libpng, python3, boost, mesa, qt5, ncurses }:
{ stdenv, fetchgit, libpng, python3, boost, mesa, qtbase, ncurses }:
let
gitRev = "745eca3a2d2657c495d5509e9083c884e021d09c";
@ -19,7 +19,7 @@ in
buildInputs = [
libpng python3 (boost.override { python = python3; })
mesa qt5.base ncurses
mesa qtbase ncurses
];
configurePhase = ''

View file

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, cmake, libX11, procps, python, qt5 }:
{ stdenv, fetchFromGitHub, cmake, libX11, procps, python, qtbase }:
let version = "7.1"; in
stdenv.mkDerivation {
@ -11,7 +11,7 @@ stdenv.mkDerivation {
owner = "apitrace";
};
buildInputs = [ libX11 procps python qt5.base ];
buildInputs = [ libX11 procps python qtbase ];
nativeBuildInputs = [ cmake ];
buildPhase = ''

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, qt5, makeWrapper }:
{ lib, stdenv, fetchurl, qtbase, makeWrapper }:
stdenv.mkDerivation {
name = "awesomebump-4.0";
@ -10,7 +10,7 @@ stdenv.mkDerivation {
setSourceRoot = "sourceRoot=$(echo */Sources)";
buildInputs = [ qt5.base makeWrapper ];
buildInputs = [ qtbase makeWrapper ];
preBuild = "qmake";

View file

@ -1,5 +1,6 @@
{ stdenv, cmake, fetchurl, fetchpatch, pkgconfig, qt5, boost, exiv2, fftwFloat, gsl
{ stdenv, cmake, fetchurl, fetchpatch, pkgconfig, boost, exiv2, fftwFloat, gsl
, ilmbase, lcms2, libraw, libtiff, openexr
, qtbase, qtdeclarative, qttools, qtwebkit
}:
stdenv.mkDerivation rec {
@ -21,7 +22,7 @@ stdenv.mkDerivation rec {
buildInputs =
[
qt5.base qt5.declarative qt5.tools qt5.webkit
qtbase qtdeclarative qttools qtwebkit
boost exiv2 fftwFloat gsl ilmbase lcms2 libraw libtiff openexr
];

View file

@ -1,11 +1,13 @@
{ stdenv, fetchurl, cmake, makeWrapper, qt5, exiv2, graphicsmagick }:
{ stdenv, fetchurl, cmake, makeWrapper, exiv2, graphicsmagick
, qtbase, qtdeclarative, qtmultimedia, qtquickcontrols, qttools
}:
let
version = "1.3";
qmlPath = stdenv.lib.makeSearchPath "lib/qt5/qml/" [
qt5.quickcontrols
qt5.declarative
qt5.multimedia
qtquickcontrols
qtdeclarative
qtmultimedia
];
in
stdenv.mkDerivation rec {
@ -15,7 +17,7 @@ stdenv.mkDerivation rec {
sha256 = "0j2kvxfb5pd9abciv161nkcsyam6n8kfqs8ymwj2mxiqflwbmfl1";
};
buildInputs = [ cmake makeWrapper qt5.base qt5.tools exiv2 graphicsmagick ];
buildInputs = [ cmake makeWrapper qtbase qttools exiv2 graphicsmagick ];
preConfigure = ''
export MAGICK_LOCATION="${graphicsmagick}/include/GraphicsMagick"

View file

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, qt5, exiv2 }:
{ stdenv, fetchFromGitHub, qtbase, exiv2 }:
stdenv.mkDerivation rec {
name = "phototonic-${version}";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1agd3bsrpljd019qrjvlbim5l0bhpx53dhpc0gvyn0wmcdzn92gj";
};
buildInputs = [ qt5.base exiv2 ];
buildInputs = [ qtbase exiv2 ];
configurePhase = ''
sed -i 's;/usr;;' phototonic.pro

View file

@ -1,4 +1,6 @@
{stdenv, fetchgit, qt5, cgal, boost, gmp, mpfr, flex, bison, dxflib, readline }:
{ stdenv, fetchgit, cgal, boost, gmp, mpfr, flex, bison, dxflib, readline
, qtbase
}:
stdenv.mkDerivation rec {
version = "0.9.5";
@ -9,8 +11,8 @@ stdenv.mkDerivation rec {
rev = "refs/tags/v${version}";
sha256 = "15c18jvgbwyrfhv7r35ih0gzx35vjlsbi984h1sckgh2z17hjq8l";
};
buildInputs = [qt5.base cgal boost gmp mpfr flex bison dxflib readline ];
buildInputs = [ qtbase cgal boost gmp mpfr flex bison dxflib readline ];
configurePhase = ''
qmake;

View file

@ -6,13 +6,14 @@ let
in
assert hotplugSupport -> (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux");
let version = "2015-12-20"; in
stdenv.mkDerivation {
name = "sane-backends-1.0.25-180-g6d8b8d5";
name = "sane-backends-${version}";
src = fetchgit {
url = "git://alioth.debian.org/git/sane/sane-backends.git";
rev = "6d8b8d5aa6e8da2b24e1caa42b9ea75e9624b45d";
sha256 = "b5b2786eef835550e4a4522db05c8c81075b1a7aff5a66f1d4a498f6efe0ef03";
rev = "5136e664b8608604f54a2cc1d466019922b311e6";
sha256 = "998fdc9cdd3f9220c38244e0b87bba3ee623d7d20726479b04ed95b3836a37ed";
};
udevSupport = hotplugSupport;
@ -39,6 +40,7 @@ stdenv.mkDerivation {
else "";
meta = with stdenv.lib; {
inherit version;
homepage = "http://www.sane-project.org/";
description = "SANE (Scanner Access Now Easy) backends";
longDescription = ''

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, cairo, colord, glib, gtk3, gusb, intltool, itstool
, libusb, libxml2, pkgconfig, saneBackends, vala, wrapGAppsHook }:
, libusb1, libxml2, pkgconfig, saneBackends, vala, wrapGAppsHook }:
let version = "3.19.3"; in
stdenv.mkDerivation rec {
@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
url = "https://launchpad.net/simple-scan/3.19/${version}/+download/${name}.tar.xz";
};
buildInputs = [ cairo colord glib gusb gtk3 libusb libxml2 saneBackends
buildInputs = [ cairo colord glib gusb gtk3 libusb1 libxml2 saneBackends
vala ];
nativeBuildInputs = [ intltool itstool pkgconfig wrapGAppsHook ];

View file

@ -0,0 +1,37 @@
{ stdenv, lib, go, fetchFromGitHub }:
stdenv.mkDerivation rec {
name = "acbuild-${version}";
version = "0.2.2";
src = fetchFromGitHub {
owner = "appc";
repo = "acbuild";
rev = "v${version}";
sha256 = "0sajmjg655irwy5fywk88cmwhc1q186dg5w8589pab2jhwpavdx4";
};
buildInputs = [ go ];
patchPhase = ''
sed -i -e 's|\$(git describe --dirty)|"${version}"|' build
'';
buildPhase = ''
patchShebangs build
./build
'';
installPhase = ''
mkdir -p $out
mv bin $out
'';
meta = with stdenv.lib; {
description = "A build tool for ACIs";
homepage = https://github.com/appc/acbuild;
license = licenses.asl20;
maintainers = with maintainers; [ dgonyeo ];
platforms = platforms.linux;
};
}

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, python, pyqt5, sip_4_16, poppler_utils, pkgconfig, libpng
, imagemagick, libjpeg, fontconfig, podofo, qt5, icu, sqlite
, imagemagick, libjpeg, fontconfig, podofo, qtbase, icu, sqlite
, makeWrapper, unrar, chmlib, pythonPackages, xz, libusb1, libmtp
, xdg_utils
}:
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
buildInputs =
[ python pyqt5 sip_4_16 poppler_utils libpng imagemagick libjpeg
fontconfig podofo qt5.base chmlib icu sqlite libusb1 libmtp xdg_utils
fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils
pythonPackages.mechanize pythonPackages.lxml pythonPackages.dateutil
pythonPackages.cssutils pythonPackages.beautifulsoup pythonPackages.pillow
pythonPackages.sqlite3 pythonPackages.netifaces pythonPackages.apsw

View file

@ -0,0 +1,23 @@
{ stdenv, fetchurl, cmake, qt4, libXfixes, libXtst}:
let version = "2.5.0";
in
stdenv.mkDerivation {
name = "CopyQ-${version}";
src = fetchurl {
url = "https://github.com/hluk/CopyQ/archive/v${version}.tar.gz";
sha256 = "7726745056e8d82625531defc75b2a740d3c42131ecce1f3181bc0a0bae51fb1";
};
buildInputs = [ cmake qt4 libXfixes libXtst ];
meta = with stdenv.lib; {
homepage = "https://hluk.github.io/CopyQ";
description = "Clipboard Manager with Advanced Features";
license = licenses.gpl3;
maintainers = with maintainers; [ willtim ];
# NOTE: CopyQ supports windows and osx, but I cannot test these.
# OSX build requires QT5.
platforms = platforms.linux;
};
}

View file

@ -1,4 +1,4 @@
{ stdenv, fetchgit, cmake, qt5, file, kde5}:
{ stdenv, fetchgit, cmake, file, qtbase, qttools, qtx11extras, solid }:
let
version = "git-2015-07-25";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1dd21xl24xvxs100j8nzhpaqfqk8srqs92al9c03jmyjlk31s6lf";
};
buildInputs = [ cmake qt5.base qt5.tools qt5.x11extras file kde5.solid];
buildInputs = [ cmake qtbase qttools qtx11extras file solid ];
cmakeFlags = "-DQT5BUILD=true";

View file

@ -5,10 +5,14 @@ let
in
stdenv.mkDerivation {
name = "gosmore-r${version}";
# the gosmore svn repository does not lock revision numbers of its externals
# so we explicitly disable them to avoid breaking the hash
# especially as the externals appear to be unused
src = fetchsvn {
url = http://svn.openstreetmap.org/applications/rendering/gosmore;
sha256 = "0i6m3ikavsaqhfy18sykzq0cflw978nr4fhg18hawndcmr45v5zj";
sha256 = "0qsckpqx7i7f8gkqhkzdamr65250afk1rpnh3nbman35kdv3dsxi";
rev = "${version}";
ignoreExternals = true;
};
buildInputs = [ libxml2 gtk curl ];

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, zlib, qt5, which }:
{ stdenv, fetchurl, zlib, qtbase, which }:
stdenv.mkDerivation rec {
name = "gpsbabel-${version}";
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "0xf7wmy2m29g2lm8lqc74yf8rf7sxfl3cfwbk7dpf0yf42pb0b6w";
};
buildInputs = [ zlib qt5.base which ];
buildInputs = [ zlib qtbase which ];
/* FIXME: Building the documentation, with "make doc", requires this:

View file

@ -0,0 +1,33 @@
{ stdenv, buildEnv, fetchurl, mono, unzip }:
let
version = "1.5.4";
drv = stdenv.mkDerivation {
name = "keefox-${version}";
src = fetchurl {
url = "https://github.com/luckyrat/KeeFox/releases/download/v${version}/${version}.xpi";
sha256 = "c7c30770beb0ea32cbdee5311d03a9910fb7772695af3aa655e4ae64cd4d8335";
};
meta = {
description = "Keepass plugin for keefox Firefox add-on";
homepage = http://keefox.org;
platforms = with stdenv.lib.platforms; linux;
license = stdenv.lib.licenses.gpl2;
};
buildInputs = [ unzip ];
pluginFilename = "KeePassRPC.plgx";
unpackCmd = "unzip $src deps/$pluginFilename ";
sourceRoot = "deps";
installPhase = ''
mkdir -p $out/lib/dotnet/keepass/
cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
'';
};
in
# Mono is required to compile plugin at runtime, after loading.
buildEnv { name = drv.name; paths = [ mono drv ]; }

View file

@ -1,6 +1,12 @@
{ stdenv, fetchurl, buildDotnetPackage, makeWrapper, unzip, makeDesktopItem }:
{ stdenv, lib, fetchurl, buildDotnetPackage, makeWrapper, unzip, makeDesktopItem, plugins ? [] }:
buildDotnetPackage rec {
# KeePass looks for plugins in under directory in which KeePass.exe is
# located. It follows symlinks where looking for that directory, so
# buildEnv is not enough to bring KeePass and plugins together.
#
# This derivation patches KeePass to search for plugins in specified
# plugin derivations in the Nix store and nowhere else.
with builtins; buildDotnetPackage rec {
baseName = "keepass";
version = "2.30";
@ -11,10 +17,26 @@ buildDotnetPackage rec {
sourceRoot = ".";
buildInputs = [ unzip ];
buildInputs = [ unzip makeWrapper ];
patches = [ ./keepass.patch ];
pluginLoadPathsPatch =
let outputLc = toString (add 8 (length plugins));
patchTemplate = readFile ./keepass-plugins.patch;
loadTemplate = readFile ./keepass-plugins-load.patch;
loads =
lib.concatStrings
(map
(p: replaceStrings ["$PATH$"] [ (unsafeDiscardStringContext (toString p)) ] loadTemplate)
plugins);
in replaceStrings ["$OUTPUT_LC$" "$DO_LOADS$"] [outputLc loads] patchTemplate;
passAsFile = [ "pluginLoadPathsPatch" ];
postPatch = ''
patch --binary -p1 <$pluginLoadPathsPatchPath
'';
preConfigure = "rm -rvf Build/*";
desktopItem = makeDesktopItem {
@ -22,7 +44,7 @@ buildDotnetPackage rec {
exec = "keepass";
comment = "Password manager";
desktopName = "Keepass";
genericName = "Password manager";
genericName = "Password manager";
categories = "Application;Other;";
};
@ -30,9 +52,16 @@ buildDotnetPackage rec {
dllFiles = [ "KeePassLib.dll" ];
exeFiles = [ "KeePass.exe" ];
# plgx plugin like keefox requires mono to compile at runtime
# after loading. It is brought into plugins bin/ directory using
# buildEnv in the plugin derivation. Wrapper below makes sure it
# is found and does not pollute output path.
binPaths = lib.concatStrings (lib.intersperse ":" (map (x: x + "/bin") plugins));
postInstall = ''
mkdir -p "$out/share/applications"
cp ${desktopItem}/share/applications/* $out/share/applications
wrapProgram $out/bin/keepass --prefix PATH : "$binPaths"
'';
meta = {

View file

@ -0,0 +1 @@
+ m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass");

View file

@ -0,0 +1,14 @@
--- old/KeePass/Forms/MainForm.cs
+++ new/KeePass/Forms/MainForm.cs
@@ -384,9 +384,$OUTPUT_LC$ @@ namespace KeePass.Forms
m_pluginManager.Initialize(m_pluginDefaultHost);
m_pluginManager.UnloadAllPlugins();
- if(AppPolicy.Current.Plugins)
- m_pluginManager.LoadAllPlugins(UrlUtil.GetFileDirectory(
- WinUtil.GetExecutable(), false, true));
+ if(AppPolicy.Current.Plugins) {
$DO_LOADS$+ }
// Delete old files *after* loading plugins (when timestamps
// of loaded plugins have been updated already)

View file

@ -1,10 +1,12 @@
{ stdenv, fetchurl, cmake, libgcrypt, qt4, xorg, ... }:
stdenv.mkDerivation {
name = "keepassx2-2.0beta2";
stdenv.mkDerivation rec {
name = "keepassx2-${version}";
version = "2.0";
src = fetchurl {
url = "https://github.com/keepassx/keepassx/archive/2.0-beta2.tar.gz";
sha256 = "0ljf9ws3wh62zd0gyb0vk2qw6pqsmxrlybrfs5mqahf44q92ca2q";
url = "https://www.keepassx.org/releases/${version}/keepassx-${version}.tar.gz";
sha256 = "1ri2r1sldc62hbg74m4pmci0nrjwvv38rqhyzhyjin247an0zd0f";
};
buildInputs = [ cmake libgcrypt qt4 xorg.libXtst ];

View file

@ -1,11 +1,12 @@
{ stdenv, fetchurl, bzip2, qt4, libX11, xextproto, libXtst }:
stdenv.mkDerivation rec {
name = "keepassx-0.4.3";
name = "keepassx-${version}";
version = "0.4.4";
src = fetchurl {
url = "mirror://sourceforge/keepassx/${name}.tar.gz";
sha256 = "cd901a0611ce57e62cf6df7eeeb1b690b5232302bdad8626994eb54adcfa1e85";
url = "https://www.keepassx.org/releases/${version}/${name}.tar.gz";
sha256 = "1i5dq10x28mg7m4c0yacm32xfj4j7imir4ph8x9p0s2ym260c9ry";
};
configurePhase = ''

View file

@ -15,15 +15,15 @@ stdenv.mkDerivation rec {
configureFlags = [ "--with-libmediainfo=${libmediainfo}" ];
preConfigure = "sh autogen.sh";
meta = {
meta = with stdenv.lib; {
description = "Supplies technical and tag information about a video or audio file";
longDescription = ''
MediaInfo is a convenient unified display of the most relevant technical
and tag data for video and audio files.
'';
homepage = http://mediaarea.net/;
license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.devhell ];
license = licenses.bsd2;
platforms = platforms.unix;
maintainers = [ maintainers.devhell ];
};
}

View file

@ -0,0 +1,53 @@
{ stdenv, fetchurl, fetchpatch, pkgconfig, gnome_doc_utils, intltool
, mono, gtk-sharp, gnome-sharp, hyena
, which, makeWrapper, glib, gnome3, poppler, wrapGAppsHook
}:
stdenv.mkDerivation rec {
name = "pdfmod-${version}";
version = "0.9.1";
src = fetchurl {
url = "mirror://gnome/sources/pdfmod/0.9/pdfmod-${version}.tar.bz2";
sha256 = "eb7c987514a053106ddf03f26544766c751c801d87762909b36415d46bc425c9";
};
patches = [ (fetchpatch {
url = "https://raw.githubusercontent.com/City-busz/Arch-Linux-Repository"
+ "/master/gnome/pdfmod/pdfmod/pdfmod-mono-2.10.patch";
sha256 = "0fpz9ifr6476lqhd5rkb94dm68vlrwdq5w1aaxzgyjgdax9hxx81";
}) ];
buildInputs = [
pkgconfig gnome_doc_utils intltool mono gtk-sharp gnome-sharp
hyena which makeWrapper wrapGAppsHook
];
preConfigure = ''
substituteInPlace configure --replace gmcs mcs
substituteInPlace lib/poppler-sharp/poppler-sharp/poppler-sharp.dll.config \
--replace libpoppler-glib.so.4 libpoppler-glib.so
'';
postInstall = ''
makeWrapper "${mono}/bin/mono" "$out/bin/pdfmod" \
--add-flags "$out/lib/pdfmod/PdfMod.exe" \
--prefix MONO_GAC_PREFIX : ${gtk-sharp} \
--prefix MONO_GAC_PREFIX : ${gnome-sharp} \
--prefix LD_LIBRARY_PATH : ${glib}/lib \
--prefix LD_LIBRARY_PATH : ${gtk-sharp}/lib \
--prefix LD_LIBRARY_PATH : ${gnome-sharp}/lib \
--prefix LD_LIBRARY_PATH : ${gtk-sharp.gtk}/lib \
--prefix LD_LIBRARY_PATH : ${gnome3.gconf}/lib \
--prefix LD_LIBRARY_PATH : ${poppler}/lib
'';
dontStrip = true;
meta = with stdenv.lib; {
homepage = "https://wiki.gnome.org/Apps/PdfMod";
description = "A simple application for modifying PDF documents";
platforms = platforms.all;
maintainers = with maintainers; [ obadz ];
};
}

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, git, gnupg, makeWrapper, pass, qt5 }:
{ stdenv, fetchurl, git, gnupg, makeWrapper, pass, qtbase, qttools }:
stdenv.mkDerivation rec {
name = "qtpass-${version}";
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "0c07bd1eb9e5336c0225f891e5b9a9df103f218619cf7ec6311edf654e8db281";
};
buildInputs = [ git gnupg makeWrapper pass qt5.base qt5.tools ];
buildInputs = [ git gnupg makeWrapper pass qtbase qttools ];
configurePhase = "qmake CONFIG+=release PREFIX=$out DESTDIR=$out";

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, qt5, openssl, boost, cmake, scons, python, pcre, bzip2 }:
{ stdenv, fetchurl, qtbase, openssl, boost, cmake, scons, python, pcre, bzip2 }:
stdenv.mkDerivation {
name = "robomongo-0.8.4";
@ -16,7 +16,7 @@ stdenv.mkDerivation {
NIX_CFLAGS_COMPILE = "-fno-stack-protector";
buildInputs = [ cmake boost scons qt5.base openssl python pcre bzip2 ];
buildInputs = [ cmake boost scons qtbase openssl python pcre bzip2 ];
meta = {
homepage = "http://robomongo.org/";

View file

@ -1,4 +1,4 @@
{ fetchurl, stdenv, fetchgit, qt5, pkgconfig, boost }:
{ fetchurl, stdenv, fetchgit, qtbase, qtx11extras, pkgconfig, boost }:
stdenv.mkDerivation rec {
name = "twmn-git-2014-09-23";
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "9c91e9d3d6d7f9d90d34da6f1a4b9f3dee65605c1e43729417d6921c54dded6b";
};
buildInputs = [ qt5.base qt5.x11extras pkgconfig boost ];
buildInputs = [ qtbase qtx11extras pkgconfig boost ];
configurePhase = ''
sed -i s/-Werror// twmnd/twmnd.pro

View file

@ -4,185 +4,185 @@
# ruby generate_sources.rb > sources.nix
{
version = "42.0";
version = "43.0.1";
sources = [
{ locale = "ach"; arch = "linux-i686"; sha256 = "f45ceba774989f09e6adb226f0e189c69092d9eccf67722b1876695d94b6a988"; }
{ locale = "ach"; arch = "linux-x86_64"; sha256 = "78f64d02e5a1548e0b9b9f9c36f1eb151dbc0212805f09658d61a35c8ef94380"; }
{ locale = "af"; arch = "linux-i686"; sha256 = "a3cb08c2d3879d46a2fe6b9567664d4c4a996bf10560079936d221e9588c5b76"; }
{ locale = "af"; arch = "linux-x86_64"; sha256 = "c580f19ac9909d28e5f3d55c3347893e088471a0fc7f4cb2e42fb1481218a1d3"; }
{ locale = "an"; arch = "linux-i686"; sha256 = "61a4fa6a4c3a8c814d3d81bf51e1780c148e366fe1355e621523f419d5e4c583"; }
{ locale = "an"; arch = "linux-x86_64"; sha256 = "2bbc6591669258fbc46944577ce6a4a091772b1cb8a4430d88d3f1b911da770c"; }
{ locale = "ar"; arch = "linux-i686"; sha256 = "1aa9e3e21c3d678135f009f8541999a18ea38ade9ae3d21b8da07a60d22eab91"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "eef01a5315eab457073ff01a51382a46200e84a6e87a91a3e38ab865b3304430"; }
{ locale = "as"; arch = "linux-i686"; sha256 = "e3949cd85c439f72e8051ece5c22b18f6802e29311b84c5e88b124ea72ced52f"; }
{ locale = "as"; arch = "linux-x86_64"; sha256 = "59178756fcd409765ff88324133bccdd0e43d2961a0fa15e2e53f7ed4fea3bac"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "88440f3f572421c0a7c2e95f3517289a33de474766185bacc0b93ef09673f1df"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "ce6fec215b11ecc2e5bd74d2dc47a09de9bcbf3df18e8f270c83967e605985a7"; }
{ locale = "az"; arch = "linux-i686"; sha256 = "1b0e3ce4799e4cf3bf6129298895e8aa48c38b6b138c5ebfdd694ae8811e51af"; }
{ locale = "az"; arch = "linux-x86_64"; sha256 = "6e0b73fc25a68d57117259043fd5bbd6dfbc8e32ba4090233303c5bf57d858b4"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "c50492edb43b2d306c664bb174f89392e68a530eec4fef2aa39335b9d12b0e32"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "2057d21e45538be260d723cf11bb36e32c79d87530fc19852a2f342d825d75cc"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "f87522d234e50d50509ead2800a804131b769235006aada0a379e46d290b6cc1"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "8793acfd7bbcc47e9ee19cfc2cb265a71f7dea5e98222fc541ae66c29bd8c39d"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "d55de132e4d6c49053d2c843f91f7410188f62ee3e4bb56ac8b4370f55475274"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "a5798d40795689f2c92cfd8cc3605c4a30e23e39d8db43a8e7415cb9e4c75a55"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha256 = "28fd24e8e3069de9d1f81aff9e3671a806470e56f17ab0193566c8709eb1c268"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "dd5b97f1b3acdb2ab1a2f75b4c236ce2b68365840ea6b3703969e57b2eaaf927"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "5dd3132f6543c7dd5bf062d1222782b4bfd38b3f95088e2881c0b6f4362f1e3d"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "69ff22dc400cbaa75e9799929fd2496e8e2db6c5549d848abf642f58e73ad825"; }
{ locale = "bs"; arch = "linux-i686"; sha256 = "bfe4feb86124cde6ebd0e2449b5301657f1d62a073e98c888e81307832441b45"; }
{ locale = "bs"; arch = "linux-x86_64"; sha256 = "878712c2ff34e27181f8477440b2489c8c4c8b1cd2f6a03724ee4b9b5eabd031"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "a5fd111a60b81a11b233bc2720ca58a307d883a84cb2212644dc07a0acd8ed88"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "c8df6e52d22907615c0198a9c061d5836e43427e66964d9235662d1673ec0573"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "6f0ad2a1ec219a8aef9c762235fafc8113a06754aaab2c141812f9f062c1a0c4"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "d4a1c8becbeb05da17ffb6d1ba8625b7286a1591fc5f141202542ce769c29c13"; }
{ locale = "cy"; arch = "linux-i686"; sha256 = "4bae504ae202fbc75244fd476de80857dc33fe6a7dd3da2555e7efba279a5089"; }
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "2133795258e00be82219dbd5f288ab76e5b218a4d298224fedcaf02ddc049b07"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "64fbcfa9c645dd0986b85de286347eb223c81db45e405b2e29df47527edfe55a"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "58af00c544e5a2c9a98cc2cb896db80052ee12e31d4215ae4b08862ac3d3caa3"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "b8a48b676494ec7c9af8d24678dd1c719871c297887431b9360dea67d9bafb48"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "8d6bc67c1db287c00c8782cb33b03ba0076f1b89064cdd0ddefcb37bffddbc68"; }
{ locale = "dsb"; arch = "linux-i686"; sha256 = "955968db11698942a86b79a9f5258c4636121e9c3350dfad70eab375f87c08e3"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha256 = "f34efb2d427e23ea34a1f24cbbe32d6ce384e1e4055a83afc1d336bb31481095"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "bff3a1efcaed403d2e465b92a88076fc0525534593d977423811c30a4abc757a"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "0d83d214eb61c3d248291141fa6b5e29d72f62a030be39dc4ee7c1781424c421"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "593041d5b07665134bd61866b706e11f10168df72c9a033034e95fdecaa6f65c"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "eab33978a3cd15ad3ed86efd72eda53e65f6addfd352f1f372d8133fea7edc6b"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "2c44f8ef07896f3e4c4ee555e35ebe5658f2721fdbdee4c70b153387472b781e"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "e3077ca9aa246154acad2a264489e7cc68864035873e6c6d54b7fb3f9b832fd7"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha256 = "8b78e83769d468dd7d5e9964ca99fd745f82341f8a426e7af82671c4515c8e70"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "631da5975f08807bfa4519c1265d082bb6de8ba6b39bbf6c903e08cf5c85b2a3"; }
{ locale = "eo"; arch = "linux-i686"; sha256 = "16556716bb0cfcfade4c705bc641317c423dda976f68a1a78bf1b1df08883725"; }
{ locale = "eo"; arch = "linux-x86_64"; sha256 = "cb21a5ea8cb9ded9eb729864d20a538275b8f29e9b7a10ea9d9dcb2b7a2368b3"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "3b830fc45a2ad62253d51eb53ae2cf6345bcc2a348e43e5aa19a001506fe3f6e"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "9ede597d11d798c4369b74e74a67564152a793f4d2a655f422176a1e03d0f6f9"; }
{ locale = "es-CL"; arch = "linux-i686"; sha256 = "1384df5e31f49f8f647e21f1d5d4f3a2229dce389857219745d2e2e325c894b4"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha256 = "e1a56a69687e9fe0979602b9256b5f8f3e05596e8af23fc78b0459ad66950158"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "258a3ded204f66d20370f4ca34d668da38921302ba6844bb6b49525a911ef1f5"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "6563107eaadfad91f29b5d3084068ddf2b2959723f0bf38f8287e9b71dfafe68"; }
{ locale = "es-MX"; arch = "linux-i686"; sha256 = "00253b3a1c28f55199c74d1cce9fa1aff5cf6a7b3f77385f18836b36c961cbd1"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha256 = "897bfc04b17334ac1499a50c0fede1dda4dd9f667801d50a3c7221409158a39a"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "fb4c11f82c492d02f15817c19d4450049ce8532741d6c2733302e06a77ed768a"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "9e4c22e0e430bab1a85d83f8e77245390ecadc2af9c6fc6d408a1ccb388b5c5c"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "4be07916499253dee47572b0fe03318050f601ecd34a2578e3daaa2423ea0223"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "414366c5de7bd58f620a86d69b3fc618b4f2a41103e073197ed6f6326cb34173"; }
{ locale = "fa"; arch = "linux-i686"; sha256 = "84dd27e9f3f3736c2364f995b460a401ceccb5df88b9420fc5c4e10bed714ebd"; }
{ locale = "fa"; arch = "linux-x86_64"; sha256 = "e1e19b3a13e48ae5db809d781ed94a079dfcc23fef7b084e18589863fdda1e16"; }
{ locale = "ff"; arch = "linux-i686"; sha256 = "7de7ded84b96c8208796336b079294cb163e5a1717e7f0263fdbdf061bbd77a2"; }
{ locale = "ff"; arch = "linux-x86_64"; sha256 = "0c57b47227db17ec0b5cf05b2c839d01ef09e85e062af145cb063e9b431201a0"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "7bd42dd0dc3f3a9328f41f06f5f4409b611d17e1f3c71dc68b4f87aa1a5403ef"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "32aed7d397353791d0eeb4d64003ddc0206f43308020e4e003877741bbc4246a"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "274fb64798147b96c49117444a55b0d27da1ce58c64d0c72a8f4f2445ef8dcfa"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "17f3af176ce83481678ba5b496a6c576af1ad01a858714cec0c613219ef78105"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "ef2a32e783456b8be56cc2fe16c4c9f80e174f5cbea5fcb0ffaa9dccc498c1bc"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "76742465bfb95935e3f5531ef52f0d13021454887f20b5c60d903142e8bf29b7"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "e23cd7c54f08fd952c40d88811ac0a8be7c54b8c44e8e948961c063bd833d720"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "5f37a8add1753e41a75a1cd8f1edeeae0da89987939684e4f7ef46e139c0f2b6"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "1f65eeaa2e213a9a1bd48e12b978faf21a5cbc4db4e6257edd373c7f08fc63a6"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "25398b31be953a54107a38ea9476047e0ad6de8083d1330594522d261ef4f5de"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "13ec763f279c39b0a0082fde0331cde9cc3d9a3aa5155b8853c7acb92bd18d0b"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "46208cc319062483f85c5d801bc4822869bce916f78d2dd36670592794a266c3"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha256 = "fad30f5fdcf5622b80f391bf2e957466e8955f23b91be2022ab5cc550b993d08"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "4ef6713e394c72b5d9a5d49899ef952a4587a2f1e0b52307b5062d6807de8ba0"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "211cafe7a39b45ca1cf471b2029f8981a26517114fcad3b40f0c5cd702988ee5"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "ad85f5b69ff0d15f0eb17e81e5976635b3319f583938e0c2dcf59badcea71cc2"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha256 = "8ec9ccd458b231d873e4272968be09b50d1629280014deacb2a74a754123208e"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "1c78e8adb1047be3be2bb6bae776d1fb3e32b6bd888877d33abcbd56b858f70b"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "64436c22be8c7a873634de4d7677c93427c9307be40a95fa73dc509d32900a20"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "4485174c761aa49bebc7bbdd5d50ceb2ca70477560406b880181ee4ab5f51b26"; }
{ locale = "hsb"; arch = "linux-i686"; sha256 = "d5e6eb225d04124a9582e31de8c996512b9816bcaa72c4ef8d373f3cb77536be"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha256 = "65642995943763d35a9816a02d95d3ad7c26f388a731749c96446308bad0d13d"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "2e4a1602fe3dc83f99b60df358e809cfc831d0c173d0fb1a0b5d0bcc8d5fd0be"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "39592f757f6066e060446cf9ac051cad58ae5e457dea5d28be8e6573a7712b3b"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "e11c1f746e472855c99706d597107426e4f411ed6ab8f3066417a4bf788f6db7"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "34fb58fc187a4afafe45f8b9463f725404bfc9fbb8374bbccd95fbe6a6127cfa"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "33c1870c5be769d051ff52d0512253316357925c4074c9760ffdd7ae5eb38680"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "f10a83c55a7164a88c387cff02d5fbca483901b8bface790fd064dc456637004"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "312eb8e2613e6723182f1392b0d654488facd31866922241ec7366be3259b42c"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "d850e5c4e18b1f3daeec9508f3d1a19771109a449a8b40106e20154c3128a43a"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "782d2e791c1c241e068a7041244def8d3983c7d65372b8297f54010ed2723db5"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "dcec427d3c22e7081d4657ea336aa3a2d1b728cc2ae917aadd89f1021fa53e44"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "8f36b884b8480a225a68a1f3583408132b58511bd3666a04c21a88d8ab9e1387"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "2727864ae1ebc4e0186214297d59cc531a06306059ccfd4a59d83a084cef81c0"; }
{ locale = "kk"; arch = "linux-i686"; sha256 = "50d46466bd31723f3116db503dba0b5d095679233ded63173b8b31740afa8ecc"; }
{ locale = "kk"; arch = "linux-x86_64"; sha256 = "5ae23bb07acdbfb45e49eb4afdbb6c84a00331f8c5c9824b9756e2e87f927934"; }
{ locale = "km"; arch = "linux-i686"; sha256 = "13e32146820f31f0c87f38b3cb636a6a25c5bdb2dbf3befc909f459b33c0ac71"; }
{ locale = "km"; arch = "linux-x86_64"; sha256 = "f81eebb081309200f2cec0cf742ac3aebe06ac09948a05af0961a572bc06b0a1"; }
{ locale = "kn"; arch = "linux-i686"; sha256 = "8db58576cbd2cb8f8c61d4278dcd0594c92fa707770255f1397272dacfb420c6"; }
{ locale = "kn"; arch = "linux-x86_64"; sha256 = "3a2002a54057c062ef720894147486c68b60e21c4bc57435b2ab1fe0f03f11e7"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "0e0f221ec6917635ea8519473a447ee8a572a439cfd2f5de1e1b4d63cfb1e1a8"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "ea4dfbad71d63702377b6a1641667b88ffa270cf37f77e223a88ed2ed6385f3f"; }
{ locale = "lij"; arch = "linux-i686"; sha256 = "92af63912444d8ccc43f4b0fa1ec25ad988db4117dc15e58a31c2b783e2922dd"; }
{ locale = "lij"; arch = "linux-x86_64"; sha256 = "c93f0e90125fb58b6f9d3281ac580bf46ce7481bbcb5d0162661c7049e7116e8"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "ff6a933c13e5d0bcab3e09915c09489d441f191f06a915ac5953334ae2a613bb"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "d82c44370c3b86230c86933a91e533e51c1ff6c6e515ee6a2b53d7aca105694c"; }
{ locale = "lv"; arch = "linux-i686"; sha256 = "7595254788ecc0845cd98f9524e20ef0dc2ec01c6efc3e8289b7c930b37fc604"; }
{ locale = "lv"; arch = "linux-x86_64"; sha256 = "a349ae40d4bd2bc0be0517bcd2f3149796687a1a3bf31527e92d7bae3020e839"; }
{ locale = "mai"; arch = "linux-i686"; sha256 = "4ef3e22d7bea09ccf7a75759725cd3db5ffec1b486026f3d0afee06293e01c3f"; }
{ locale = "mai"; arch = "linux-x86_64"; sha256 = "2a6c645773c6ec3230ae66f850d151fd8ccbe4d65e5d3b241948341b003c2fe8"; }
{ locale = "mk"; arch = "linux-i686"; sha256 = "d50d81cb4eab09166d6636c2964143b5fa7cdf909b5eb2eddb2103679f86ba71"; }
{ locale = "mk"; arch = "linux-x86_64"; sha256 = "51a4c986a7b85ad140d0fc0e952426d103307013bce72e395873171afa8d0a8f"; }
{ locale = "ml"; arch = "linux-i686"; sha256 = "57d9e6ec5ddbf3eea9e07d85d5d84998e70a764260d73f38d32fe71a55ac3720"; }
{ locale = "ml"; arch = "linux-x86_64"; sha256 = "50cf19e1b07ea43dffe37a59fdc969d8e8d46df100c15455e4ac2d4b202a00d7"; }
{ locale = "mr"; arch = "linux-i686"; sha256 = "98b4d4ac2148e37b741842386333707d8789b2cfacf7ecd7adab3162c43307d8"; }
{ locale = "mr"; arch = "linux-x86_64"; sha256 = "77e825a071f826c5668475e33a6a06f3fe3e49306e045fbc9a0a76843e66eb7d"; }
{ locale = "ms"; arch = "linux-i686"; sha256 = "a8c2c8db2ecb76070d54a5cc8cf6c31027a843490a54875e4b66e8e3dd212fa4"; }
{ locale = "ms"; arch = "linux-x86_64"; sha256 = "54d387432363074ff79a72f6a517b86b7fd76637caa5389a09f7e3ec11965512"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "a2f14933978e45ab472a85bf6278879617b61273f3358c67e6180171d6e9ab5c"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "578da776b395c07ccf7525f7f7c2a807daf994807a30f2a0c2bee9d2ea6b977c"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "49e079241dcea98a08d27708d918dcc9e530f30368b9b67006f16fc5e24ab29d"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "b165e97cf3408ef9c7d04f25b7b15924954ed65c78e25c853fb33bd98c751bda"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "aad675288be4c1c6e4751b3c32f3e5e569e8348a580e7c2497ab61cbd2fe733b"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "c1128bde1d7030d367cf14833c8a775f1a8790a6a159171cfe55ab369f803b84"; }
{ locale = "or"; arch = "linux-i686"; sha256 = "28fc9d508d0f86da87060080bea805fc089cb297a82849d7b75fde1d7c35dea8"; }
{ locale = "or"; arch = "linux-x86_64"; sha256 = "f3879c6bc8b24d4cccbd559b4ee480ee42008187aac403c35a82fa3aa67cf733"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "262a496547689093ee22ce31b056cc1727cba9a690ea2fd5729e0694e710e6b5"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "67c9a3db932ee1e890f2b0373b160f7a1db2481263919179f34d24e1bb73869d"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "6b561482f0289c085cccd3d331bf7135cec47bf4e56d5a23c86341191e175484"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "c47b600afa999bc38eaf964def0d8e3e64a6f8dc2ebee14b125885773be37527"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "df1f14d353406d367f7c9a3fbec66544ad8ae8f70cd8cf2b8dedcea40f3acd04"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "fe07b106b9783d3b91f31deb55ddf006cbe51e485d6bbf181025edadce7e587f"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "6a4e39b78336f07463887a712a3b5a11f9d9f3be4d2e1be36970d17a554b9d39"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "1df70f54c4e59625740635c99a900738f25ae67707536c86511d98253a1b7207"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "9e56b6a6831877bf5cf9c3299ab305ec06014044285dc635dc4951403024e1c4"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "2d89a4dc8590db8a54c7f2d9d126222ce152eff831170b497b657b64df1cbef3"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "f7006e2dc8a99c47bafcaae9138f752fd9ee014969ee6db5e440724cf124ce9c"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "6b42002b7ba893675ab6da994c0e43129ab2cb4bd3ed361c0f2a116167960ace"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "b7eef5ad76fdc48894be4b20ccd19d42c966235905c8362b2e262c9da729fac7"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "efde30e2e473b667b134487c2e16459e72eb41a63c916a660cba847ee9c5ee7b"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "365eeb713360303af2880362aca5edb62a3370ec0a65eebb1fd72cf11a509543"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "43338a5a36278e07d76316eee4b7e0aa07a99123f1ea124650ea5357288b6daa"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "c552413717efe35a1b70d4745c9ed3ecf50eead210225daf1b922d25022026ee"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "fb92a066a27de4328dd4aa5ae4091513ee021a94167ca7f2174cd1809f311799"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "5ede91c27358d812a7fe0f4cfc4516d5802e516c0c4c3ede44f5535dff04ca87"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "f301a92ea7d165d20c23af0d4004a679f6dc1f7574cd34bd92be4cae7d36eaa6"; }
{ locale = "son"; arch = "linux-i686"; sha256 = "816ef59d8ab566967c38944df4884a75e1d15f5906bef59c534e80f1f4d31d1b"; }
{ locale = "son"; arch = "linux-x86_64"; sha256 = "0bf5149fdffd060773b82c575dbc981e420deb0719a8f4fff9a03c6ba571d5db"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "3e43a60388d2cceb306d7a70e984ded6dacb0a968b78ed8a4032ac60d7c1cc6c"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "6c0fa8dcf9359e8aa1244512f1d264b8684191f4bfb062c802f21009862c26e6"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "1df63b2753dd55d69d0990f3f34f9574dd34289cb64726da45fcc891b6a83088"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "01dec866a74a56fe8652e5b75731c7f508637e875c62a84805fcc0e4636c9e67"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "6f3f5b62e475ce4128e11f62a556505e00d5b8dfbd374ae747a16d6f161059dd"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "0b3cfbb77d291a7fbb14b61c1bb1936dcec5f66af55c3c0b92e9dd4299c9b897"; }
{ locale = "ta"; arch = "linux-i686"; sha256 = "357f182c2df19bdd97834bb714f979253bb4a16029d115a12e66bb7c20ff5a1a"; }
{ locale = "ta"; arch = "linux-x86_64"; sha256 = "013d771a256e84d6faf97c84edd5ed25bd5d700712f9aa4aef54ff257b530c21"; }
{ locale = "te"; arch = "linux-i686"; sha256 = "59ba28b5c3aefa5455af1f1b549018dda9d544aca4829190af4e361b2eb164f0"; }
{ locale = "te"; arch = "linux-x86_64"; sha256 = "e181876679ef2c5a289d5697fefde0acc64c936237b907fab7e6d000cbaee5a4"; }
{ locale = "th"; arch = "linux-i686"; sha256 = "57545f48f6c1ff7a5ba2aa43d61446aca4d9e8f5f6f1bf70cdbb75d72d4b9713"; }
{ locale = "th"; arch = "linux-x86_64"; sha256 = "e2c70247a333447f100bfb87be9f9f7e6f3398ac22623627b016e046afcd7a26"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "f0d6f1053ffc9396657485f58c3bd33ee616a1b474b72a78e0b14960a0818646"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "101763b31f615b301b1e040df7a0219456446695f9edf75580ce6fbcf061142b"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "d0c5854b736bfc7f263f7a515a477e209c90fe7d5ed0ca64dd7d16f3d68a6671"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "3b78c94708d5b5798e30bbf9956619b694c3484672d0e3f473dbbd8898f3c8c4"; }
{ locale = "uz"; arch = "linux-i686"; sha256 = "0870ba372c7abfa95bc9da5d5b7f501b3137208d084f25a3ca88a09c8395ec6b"; }
{ locale = "uz"; arch = "linux-x86_64"; sha256 = "87f6ea282450521a786944d516c26ff8cbe14a2f24df11fa80c343aca5dcbd3f"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "088be2a9815914a8637163493636acaae40c0348e1b7f064b1ea5181c114a77e"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "b68fc3fc98ecba457ffac3e191b1ef6c1512b826a9dd1b9a301858b8051453c2"; }
{ locale = "xh"; arch = "linux-i686"; sha256 = "83095d26d9a73c3113a98c902f31565a3e358ee1aa4ec37976fb72cbc8470845"; }
{ locale = "xh"; arch = "linux-x86_64"; sha256 = "642026251591bc1eb1ca1200db1b232981d019d8664cfa216777e12b591606d4"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "a3289ad36a1a3b5affc721a7a2b509d9151049e50209f62c92592d7cd17c96d8"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "f53e14f1ce29b172acba3d58b5ca6da3ff03a121aaf224949a88a2fed96aaa9d"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "a471944312b7f2a04a0f1df4a897f63c41cd74c0645d890d95bce6d725a2ae2d"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "d0d201cff0b8dcc59224645d4f4ab15fa14fe131a30897242e5692729894abed"; }
{ locale = "ach"; arch = "linux-i686"; sha256 = "77cd7332ecebd3e51cb45896d61494e95e57707dcc1393af00695f8232274c17"; }
{ locale = "ach"; arch = "linux-x86_64"; sha256 = "792d25a8d536d32dc89b655f5e3961b704fa27618395d3ae637180242eae2b71"; }
{ locale = "af"; arch = "linux-i686"; sha256 = "fe211798f211a316a5ecf5a5c4dd61389e448b45166c681f886fa1e97bff4734"; }
{ locale = "af"; arch = "linux-x86_64"; sha256 = "7a6e077c0702e7c832a9b9c5f35a70f19dd4c0c9f910a8a254fe165a5f3d8331"; }
{ locale = "an"; arch = "linux-i686"; sha256 = "a01769decb90c7235f2cffcb6eaa135ba0a838e182f8398e12ff664e8be500c0"; }
{ locale = "an"; arch = "linux-x86_64"; sha256 = "8e4b243cca233a6f00b07ccb5ac2330edc5de590d2d6b787d753e965fd6e777c"; }
{ locale = "ar"; arch = "linux-i686"; sha256 = "e572f980f5d28b994b930d3a5665e92f8ab5c149a19a99132bf93cdf2bf75fbc"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "b42f56de042899d67461fab43d41f9b23817e879df23cd0c4be748b701a8d5da"; }
{ locale = "as"; arch = "linux-i686"; sha256 = "652919614ebd2775d3a13706ffb09959655f9bb12f0a120698c1deec6c244554"; }
{ locale = "as"; arch = "linux-x86_64"; sha256 = "62793f511b7a4244beca42d5dbb235df8431f7156a09fc4c1227cfaf19fe8885"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "e6a8ab24ef5585cc5204b5150066c8e96fb30c15b89a7c885fb8def445f2734f"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "e8c286528d5149c58bbae4a75b2d95c408e81de85cfe68e431d97f51c19ec0b0"; }
{ locale = "az"; arch = "linux-i686"; sha256 = "829728affcb12321102bee38eb5b0e428d9a9d910a69bb299e77452c5bca6f02"; }
{ locale = "az"; arch = "linux-x86_64"; sha256 = "aed06f78b55620e2632a9fcb4cbbf36f34ad1510ab7df2dc3de94c8c57f79263"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "257afd489537fa53ae84daf819a859a62757122d824d501d95c5010235c345e1"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "7021ac97b762b7d17a498c86c52551056b0cc388a8e10e81e034b845e05f0925"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "a2c74efe9233c4b3bf1a6b9beee417b869ef129e6b60a3078e9528a84d354149"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "a492710cc54c9bc6e406d558063bd16158059fe2e87bf172405b3c6ea38eb391"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "465bad32dc16f8ddb669d032a217ca5863410384b40a86b81290f85b2fc85811"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "063b1642e0ea6ac8b07baa3969698337bfc3a96db724b7a32a668c2e4cf516f1"; }
{ locale = "bn-IN"; arch = "linux-i686"; sha256 = "cebcf89bafe0cb88e1d725bf4b4caf72f845a6abd7d5c0ff9b9ed02c99eba686"; }
{ locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "85b51db611b917d3ffddc6b1bf39405eadb69d64473731780fb21f4db42a94af"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "997ae06800cf75ec62084db0f453caebe9e6ef0cc43abaf14a623785ca365a2e"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "4455965e809900bb42595c7c05365ec1d26b7508c9d7ca24ac636be4b6583147"; }
{ locale = "bs"; arch = "linux-i686"; sha256 = "0e88abaa021e9e435e41baf59590e4d2ee7c3ec442b01620297671f4c4fa023e"; }
{ locale = "bs"; arch = "linux-x86_64"; sha256 = "229ad924b0c72823e7599f8a53df0c1fe46fc4d9972e18a32caa78bbd7f72dec"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "5f03a177cd4ea81732329f7ee62494ad25f79e65f12ad4e0cb244aaa95c66e0a"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "67f29e97d323fa8ccf1e14f1638beeecf5489701a13509cd824b61e6c64e0b96"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "100c1ce1bcdbfc9b4a6f3e576e71ca9cbc771ac7d28d916fbfbbf40c7e37a42c"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "178373db4c0ca4edd6150595529d62fa38912a71ab0d6122fe8ba2ee5947f7dd"; }
{ locale = "cy"; arch = "linux-i686"; sha256 = "fbdf1b10f6f07c21669a5d515e9c14b3ad8b2a606e2bb997cb75df4928021f48"; }
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "7444923521bf421fe60c721fa16b6005f40a108813e547ef32c0c1263d687630"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "4277aa0783b92e5a101ef52ea191347fb873700f8366d06480dc2445fe7c391e"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "9300787407ca226bf1ac9a25f8f4e9428793c032ca102c65b1841a12ebb508b6"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "ceaef87cf7553368a919396c3c303033fe6e1bb23477549ff25d2426473127e6"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "55b7296fa2643d7caee38fa0e282959cd0160fb7f8a89bca11085d6bba40a679"; }
{ locale = "dsb"; arch = "linux-i686"; sha256 = "7b92682d19f457d162c537bea71f9c026b36cefdda440f2a1ea489f44fc57f63"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha256 = "be235c2af381500a5cbc4f0c400106a31b00a49fcf19d2a981f5ee7221f7617e"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "832c7f65d97795a284e93bec61c14ffcffaf74fa3fc844f1ae896058f0409e72"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "4758c97ab627cd7818f4a38febca52c11084e2c8e0ee2d05f70a6e1f2b67661f"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "02b926d46100116ab7bab27ecbfa60ded6674d5d687f76412443a52e5fdb4283"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "98d83b9434d948d7fbc24708363d1c8e8d37551711994c7b8448f6e924f49be7"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "a8530e2b5d5c16c1afef6759a9015e83767271046537a050442fd6c457986746"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "ea797acf50c2efb39968773864aeac0bd17dc3a1dc726b3ff95780aec01ea669"; }
{ locale = "en-ZA"; arch = "linux-i686"; sha256 = "4baa2cc65dd053e226f4391a975c162c8c709f31f82c31d7707ab168f8c249c2"; }
{ locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "93ddb0c696131e9a7a258fc44eed88d5aecac50f101106211e69220e602c949a"; }
{ locale = "eo"; arch = "linux-i686"; sha256 = "eabb1fad074ccc3887fb56eda2d71f51af3aa22541d310f0c25ddab0a52ba7a8"; }
{ locale = "eo"; arch = "linux-x86_64"; sha256 = "280f9010cad2583eaca8892cbb2600e3b98d77181ef30f5cf233951e26414df9"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "82741dd5a2bdb7541d931ed8606ec483f44b0d6416a3f4d9b3fa1c1e57cd3390"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "10499b8c57d6d6c8976e80e5b50c278846c45d408a2ead66328c780cb5a40ed2"; }
{ locale = "es-CL"; arch = "linux-i686"; sha256 = "e5879a71124b429250f6bea231f0411e80c28718a7cecdd7713e9512d21c22f6"; }
{ locale = "es-CL"; arch = "linux-x86_64"; sha256 = "177b19854746c70fbe1243db51b22e3a96e660def60763d79a340b08c7537d6d"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "b1f2baa7fdeb2a670289fdbea089084f01171c1a5295142aff38a36efe7c4f3f"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "231e9d0d9588732d4aa440e7d56eaa4d6a94457b0805802643c4ab6b5be46087"; }
{ locale = "es-MX"; arch = "linux-i686"; sha256 = "917e235734993f4a121eb01fd91cf1788b018f52477116b1848a2faebdf6c4d0"; }
{ locale = "es-MX"; arch = "linux-x86_64"; sha256 = "de6ec93363ae0f814737bb63ff17d5beb2e756d5990ca15f7dca445bfcf83331"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "dacfc817b23972d066a89c2430d0e4ae450fa7c05cc148c726e0a739aa248dcc"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "e114477a85c27f199e807b203c78c148b9b594d3dcf8fefa08bb6b15c1b60deb"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "0fba5ce5724309e251cc010b5bdff861b21934fe21ce810c11bc8f25ef6f2854"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "d43fa45c2e78c112a2dfc00e5486dad0150aca3d14ea87e6184392a394ca0e0a"; }
{ locale = "fa"; arch = "linux-i686"; sha256 = "fb37966eca9e8077b96187b73925e3ff9d2725954db4ce6a9dcf8fe7004d1213"; }
{ locale = "fa"; arch = "linux-x86_64"; sha256 = "46e103d2bbaf66e123a2f178b29c20fc7e87dec3cd1ef4cf7edbee379104774a"; }
{ locale = "ff"; arch = "linux-i686"; sha256 = "46658e4701c21276a2731efa1c64783dce29fd3cfca35edebb36dd094f826280"; }
{ locale = "ff"; arch = "linux-x86_64"; sha256 = "aae29a8ab6a2245536a7828dc688973589d46c32f60e3e08424d417b2fdca1ce"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "45c19f14327a5ec2a6ca64e9126467d88ff43995e98a9954a3b50b5440a2cc46"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "2ea74f89de5af4ffdcc27746a524114f5160ddc38d041a344367c85856830c7e"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "05b2998f27e59ef1a771deceef92888995503b220b4bd6e60bf62d5bf5bb3b91"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "8b39731c52323fda138e82a6152cefa5f90bed9b3997415feb508498faa96c34"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "b51c3801e852f6ded7f5cc166dba95398e14a316103e34dab71b7bb82260880f"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "44f8629a19a48748b10246df108b2dfb3b685b261462a925c64c337649ee6b55"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "62d5eda1223150bb402ab56a5bd106e5b5e95229b5f4f7542d786d7d6b4e55d0"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "8b1329faf13cd75e960f5958c98002ef486cbd76d8429e800b8930707d23bbc4"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "6f572140ee8ff1a299613c6f459a7de0097519f04fb4094bfd9736fb13bd9d58"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "4d03d82c86cf1e574264786ff2cf6d70201d0ec657ab729530ae90303a160fdc"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "f0f1ab79f93a5467f097b7c5c4ac20847c1029b975ea2bd40b772a9a6ae8c759"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "093cad0eac9c3f399a24ed5cc954f520a997562e05920cb833b44f19dfe35807"; }
{ locale = "gu-IN"; arch = "linux-i686"; sha256 = "1ab234f32b8fbedbcf80965661f0db0245826e965d6f6266a329723ea2f5a19f"; }
{ locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "d10681ce58b2b2ff00b0219b0807707efb4005dcb1bb7d63ce4c297d2c6f6213"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "10f8c4ce42dc5a74754bc18d1f2883eee7c02884900435f432be01a7fdb4b8ed"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "9bc878bc21c03717f75f6a24ba604f7822dc2872afe02a00d01fefec593679d0"; }
{ locale = "hi-IN"; arch = "linux-i686"; sha256 = "e5cf142f1aedbaee1044ef07e2ab78f9a11658d11544dd4a0f2d5a756862e8ba"; }
{ locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "adea7b2dffbd2b354c1fbb395c661ddf433e65ba2ea0e121e3275ecc0d691df4"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "12152b2510a30b0961715af872c93f16e178d9251b76e69e036f48576795fff9"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "37013843d5ec1056139cfd54d12c490314cf22cd0cef54dd95540baeeee6230c"; }
{ locale = "hsb"; arch = "linux-i686"; sha256 = "5f9cda6b0a8a86bf22697d05625abb0b12776a5dd28e696ccece9a2eb5147bc6"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha256 = "d927c16ad103a0b2c2fa701e474d68b89cf45813b94714d1fed82140ae699d66"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "26522239478dad6fc04c06cf1a4e13998cdc69dd026afe127f5c62cf40114332"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "3742d3f582d5229e58fe918d022b8bd55e856957b95f7d75aed4aefa2983713f"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "d847834c540d40344678d20e4c0a9f30cb3af3b28e0147da9905522c1e43d553"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "672bb8abca09194ffcf402ac89296c31d46c5dd10cec7d98e7588faf98112d15"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "d6388edc053ffd8d1c8b96d09edacec503109f33b42ba89a3a35fee8593e1b58"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "7968be1865b6381f970e514f1f9268bd41cfda5b8e5695544dd93627ec0c8124"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "7239ce4db17389e1717a63827faad3ef4957ef496f2f7b4d7e1e9fc96aa864cd"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "babbec58f631050242183926f0956a3c5ff2a064a8aafdc2d1bdd945b0c353ad"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "75b5f2fa097819a5de8450422b368f0b2bd4fb8e5ff67b60abc9a014939113f5"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "63737299f29d8f52f9ef00e43160ecc3c8a9046c050e6b78c651079750853505"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "6ee7bc9487d9ac5d121a706920e8efaabe9bdc5bb7527f02f38fe27771aa1042"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "f9add10fe74ad4b1fb42618a93f686ae3929e862b24248eed7abb3ab8129808d"; }
{ locale = "kk"; arch = "linux-i686"; sha256 = "8e10163a29fd333f31bbfa57ad92f2b3cfedec23726779cafa567de80e217548"; }
{ locale = "kk"; arch = "linux-x86_64"; sha256 = "b20fcb23b481ad30089bf94b704847ae8deae3841c3d032b39d3ec43eef0eda5"; }
{ locale = "km"; arch = "linux-i686"; sha256 = "6df67080e6e2b8236432bdf7d215b674ef2d534c63dcabeb3a894966e4e8866f"; }
{ locale = "km"; arch = "linux-x86_64"; sha256 = "983571f48d4517f25e22a0c828240bd00e8cdf5f643c7ad0b094b2a73d7cd2f5"; }
{ locale = "kn"; arch = "linux-i686"; sha256 = "27e20cc9794805763539683407d3e40a02b8cc77ea7e4ec6d63a73bad36d6a74"; }
{ locale = "kn"; arch = "linux-x86_64"; sha256 = "6d4733730e57ea4aac60e0fb55b8db00c41d9848f1b9b28811cbada781b557d8"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "81cc34afd043bebd79760ec759eb47b5ac32374ee1e3698327a3520d51f308b8"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "2401953e6f1fdf8a7b5c3bf01c9ae7b0873697f8519ac8c27495053e1a23990c"; }
{ locale = "lij"; arch = "linux-i686"; sha256 = "3d3917d0fad2cea34325d95e21208f7bc33a5f8823b633c5c4c3e38979f0e4d4"; }
{ locale = "lij"; arch = "linux-x86_64"; sha256 = "85e8b23f22a5349a649f892b5134ece615ba2832257cdbeebe4d44900d140070"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "4ac4805e59b4a9546b5a035d5599be3bb828d06f53ceaef1a38d7e906da40030"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "b9f0ae9691e2c956a7e7227552d86624a03e99258caab7a4fa8a028f28a50551"; }
{ locale = "lv"; arch = "linux-i686"; sha256 = "552e9bd5a00373135a165bbf05d2edfbc6ee6708b0b6e2ff71c7762d44baa303"; }
{ locale = "lv"; arch = "linux-x86_64"; sha256 = "7591d8edf125a3c98383b2fdcb84016659ada7314cf15390401183641fffbe2a"; }
{ locale = "mai"; arch = "linux-i686"; sha256 = "c25de9a04ae447b39c1ba33e0e1ab56a1e085a2fc6d0bffe4d47f3c2e6353587"; }
{ locale = "mai"; arch = "linux-x86_64"; sha256 = "b8bd88d4e472f12518e848900947fea0070dd6acba698fe7330a0aec0e2241c4"; }
{ locale = "mk"; arch = "linux-i686"; sha256 = "baa001a2118908ec106717260b6aa8e8a66372f72a6424c4ec77545ddfc586c5"; }
{ locale = "mk"; arch = "linux-x86_64"; sha256 = "cbb8e8c9184ae617809603c0ab0704d0271d7bc5a84b0d7697dd5ab980a1108e"; }
{ locale = "ml"; arch = "linux-i686"; sha256 = "5defd3a75c2f7858335b5bd2f5d46e555e237af7be3cb671f324a107fecc04dc"; }
{ locale = "ml"; arch = "linux-x86_64"; sha256 = "bc5dadffe98a2fb127fa0a83442880359123630e944516410b48a923659f0f70"; }
{ locale = "mr"; arch = "linux-i686"; sha256 = "fa324f6e164be65b94e5d9dd56f52dfed744f71403d06e1ee6db6d653fa9c56e"; }
{ locale = "mr"; arch = "linux-x86_64"; sha256 = "e52a794c144c062925e310d2aae725152e70b2c1c61657772ae639f2a36bf656"; }
{ locale = "ms"; arch = "linux-i686"; sha256 = "a27bf493efba61fc01f2c64308338e510671708895567af4b209fa3bc41718da"; }
{ locale = "ms"; arch = "linux-x86_64"; sha256 = "da349192ee2a36ed48e3ae8ff4d1acea55877544c77a2b07dd2f017ce4f6e1b7"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "37245f0291b519b436b1b862299960a7961bfb496ca18c247cc5014ccddf9427"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "02c93155e20775db45d05cd46a8b28e2e88c2a20dc4c847ca0ac4844691c4a2a"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "c449d3b9b9b1aa3e438e7380f7c9c89c3d91f207f798a7a5dea11ea05371caa5"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "15ccabff42c778fdff18757bfca234e0bf1bde589b76c7fb950783437cd9c0b8"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "1ec5fea33f0a150c1039386ebefef81acb004142ca4d18023d6e86852969cffb"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "3a8d31dd02895a7113ed3eb4cc004b2748c39badff206f69f2f9fe0aceb1b013"; }
{ locale = "or"; arch = "linux-i686"; sha256 = "fa93ce73fa59876f7beb0f48e484dd4561a4d4c2c187d8c896f5e1e5f9306342"; }
{ locale = "or"; arch = "linux-x86_64"; sha256 = "bd3cdf10fce0ac75bfa2e5fac591b09c8351a3ae2f2018e45546e77d85c384f5"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "5f2917636c1b193b3b7136bf6444a0924f693916f981456965cb452d58812400"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "a8f440c37462a4712df9cd274fd939a4c5bd1a5e4d38435499f598be36b18e1a"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "757cc7c6d9e6cfd701b0a84cce6973f356b0f16781ba80ad92b66c5bc8389d65"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "45702d113636970e97222bb7ff48f8e54e16912e39f9c576a17b1ee3fd2530a0"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "241ba56480c8e7a983e26fa8382c3a5f177d31858fd4453b6ba42578d1d0c9ef"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "90f03fbbe12256824024050698e231c3093630ebd09be56e372d4f76e89b55b2"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "af2e770bd86a2d683883ce9e28be32837be55c3e705430dd5b60d6684154969f"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "dbaefe62b8285931e1a09b70f6082c7c52404117d0ee92a343250b419a2399e3"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "b559d1ffb96587ecf335b6cefcd8f4155161780f6121d19f244d59b051f2145f"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "247029e16aa38a83aec68e7269a93a1ee6f6cb9846aca97fd4a2c44a22ff2b64"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "d3555d64bb64958c577af8ffd958eebaec8cba00a9755b2005bf480527fa52cf"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "e81aeb9737cfece9ae9e886fcf32a85aea943ef4211af8a4fee46cca8b9c9027"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "ab93abbabb9f0d605cc8a0775d3a25e383e5d16c19eda2c5d88fbb7353f4983e"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "304c4eec5ddb2416b71fec38bb2eb0bb9260a9746bccc4c31b9ebf97351d09fb"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "4f946959e40dfff8fa83654c733e3c7dc5cd4bfe2d166d454a1f9c98cf3a7d65"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "e06e5d2ea19ea5f4e8db666a53c1854f7861a06f53d2bfac8bc3c128bddc9f87"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "10aa224b3e7eac73f196d4c8ef836b903938c326ee86024f56847afb667cad35"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "376e803c1626a6cd47f1627c4d735fba422e48385bfb5333b58a52115ce13ae8"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "fb15fc51459c916a9c9c6e3969dedd873fdd89d7864d17d6cbedb29e905b6749"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "ae545eae7e637aff1825913b454eb9be87321a1fd6d9777c6aea33aa4159f629"; }
{ locale = "son"; arch = "linux-i686"; sha256 = "9df97e243e34df135c91476a4bfb632e0a1e0935afc643f142b1536d0f6c3c1a"; }
{ locale = "son"; arch = "linux-x86_64"; sha256 = "f8f0ba26226d12bc5896d67fb52e4f5166f307dcc1ea4a09faf11a3a57bdefa4"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "0478e708713d8a8d966442d26f02654945e8b888213e1df017b09de066ddbeb0"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "516a655ac44e81f530673aecfd3ce2d50487b79e00a89ad196ba8772bd87eb3b"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "777d1582a745eaa1134282cf9b299fabf1eaabfefa045701fdf5ccc33ea7f439"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "2675e68d168baa851bd8c7b320818add6135ac96f938ef9039807286c82d9321"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "a2af1b6c6f2a054176e2ae19d4a8d1ff659fdf25fbb6dda1ae01fe1d3e20fce6"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "dc8ed365766fe29849f3840d05516be2c68018b3165a2a83bce4c4f1fff63a9e"; }
{ locale = "ta"; arch = "linux-i686"; sha256 = "d24f0fe9ee72cb88a214873a49d7734b9a0e78fbcf39baaa5bf72a50aea34ff7"; }
{ locale = "ta"; arch = "linux-x86_64"; sha256 = "5a88e39ccad7f3aca46d5f0558194b13c33e557c58c24683eadd4484566be219"; }
{ locale = "te"; arch = "linux-i686"; sha256 = "78b61877ba4b89b9a7d2198d59c3331b2e697f8bf9c55a3e6e734cb3f4e3df91"; }
{ locale = "te"; arch = "linux-x86_64"; sha256 = "693e5253f4564ae69a21a25e18fbbf5902e2e5e39b388d1cc30e35f9a49029c4"; }
{ locale = "th"; arch = "linux-i686"; sha256 = "372f36a5ea8fe5b92c2aa1ec7fcde80ca0bd006cdc220b14d1175eeb11fb7679"; }
{ locale = "th"; arch = "linux-x86_64"; sha256 = "03b1f0037809b14f7e2daafa7dd43471ed914e445fdf4d12c5bba50c4b66e0aa"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "d030908f9ed247e93a4417d48ef3b4ab136dd5325d5a7e8894f186a6a5179a3f"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "9e15c843feff5d071a4a8e3be64cb2faba9021846c7d5bfe13f206ce91300eb9"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "1b377aec5af5af4021b5385f2a46198d181d1c4d8994b2a1a4108bf9cacdcac3"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "0b158a684610ca92d95868605f18dd61040e0bab820ef7e858505d04d8b5685f"; }
{ locale = "uz"; arch = "linux-i686"; sha256 = "8d905bac16fd022354aa54743ae12afabc6f823609586f9ca12ea6b9717ef9e7"; }
{ locale = "uz"; arch = "linux-x86_64"; sha256 = "e22740daf104694323437ae5885aaba67fb7392719c0872ba6f07e2ea73557c1"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "372904386e107a595179b6a0f6bed84e7f986878e054c7e052c3e0378b2a9b2e"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "9c6e2f5cfec7d468dbbf3bda667b00865fec1f10d90a0ba9971ca4c33e8e87b9"; }
{ locale = "xh"; arch = "linux-i686"; sha256 = "b056ba0741f09be1d2d2e7980ecc17e813c587080328959e7f4362409fabac3e"; }
{ locale = "xh"; arch = "linux-x86_64"; sha256 = "075effe19f422430948c0a90255ba26bcbf0a4b21153652c1d582ab626eb6be6"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "e3e8b0e0bba1a9a583cb0f82e24d3898f453a9fc478f119ca15f9a8c280dc1e8"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "92236719b5553aad48215b51d13173f7c2673afc4f05d16d92d74a102efa8a22"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "7400fe4f31e95472ca7ddaf2fc0ededa7b8fe709d32674a264639bd065885aaf"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "7f5dd7597600175f7d049d99558c44910ca5a3d07b4ee1140d1ad7e5fb4e6c16"; }
];
}

View file

@ -44,6 +44,16 @@ let
if debug then "32bit_debug"
else "32bit"
else throw "Flash Player is not supported on this platform";
suffix =
if stdenv.system == "x86_64-linux" then
if debug then throw "no x86_64 debugging version available"
else "-release.x86_64"
else if stdenv.system == "i686-linux" then
if debug then "_linux_debug.i386"
else "_linux.i386"
else throw "Flash Player is not supported on this platform";
in
stdenv.mkDerivation rec {
name = "flashplayer-${version}";
@ -58,7 +68,7 @@ stdenv.mkDerivation rec {
postUnpack = ''
cd */*${arch}
tar -xvzf flash-plugin*.tar.gz
tar -xvzf *${suffix}.tar.gz
'';
sourceRoot = ".";
@ -87,5 +97,6 @@ stdenv.mkDerivation rec {
homepage = http://www.adobe.com/products/flashplayer/;
license = stdenv.lib.licenses.unfree;
maintainers = [];
platforms = [ "x86_64-linux" "i686-linux" ];
};
}

View file

@ -1,5 +1,6 @@
{ stdenv, fetchgit, python, buildPythonPackage, qt5, pyqt5, jinja2, pygments, pyyaml, pypeg2,
gst_plugins_base, gst_plugins_good, gst_ffmpeg }:
{ stdenv, fetchgit, python, buildPythonPackage, qtmultimedia, pyqt5
, jinja2, pygments, pyyaml, pypeg2, gst_plugins_base, gst_plugins_good
, gst_ffmpeg }:
let version = "0.4.1"; in
@ -23,7 +24,7 @@ buildPythonPackage {
makeWrapperArgs = ''
--prefix GST_PLUGIN_PATH : "${stdenv.lib.makeSearchPath "lib/gstreamer-0.10"
[ gst_plugins_base gst_plugins_good gst_ffmpeg ]}"
--prefix QT_PLUGIN_PATH : "${qt5.multimedia}/lib/qt5/plugins"
--prefix QT_PLUGIN_PATH : "${qtmultimedia}/lib/qt5/plugins"
'';
meta = {

View file

@ -20,11 +20,11 @@
let
# NOTE: When updating, please also update in current stable, as older versions stop working
version = "3.12.4";
version = "3.12.6";
sha256 =
{
"x86_64-linux" = "0xq5gjqmrl4fn6vp7krj44jhb71npxvsjzbqb01whyyw7mdlc8gf";
"i686-linux" = "093bfnak5xv50p9fxpr68w25hc1d08fcvrqnb4a6nb9wdfv3lkr6";
"x86_64-linux" = "16d0g9bygvaixv4r42p72z6a6wqhkf5qzb058lijih93zjr8zjlj";
"i686-linux" = "1pgqz6axzzyaahql01g0l80an39hd9j4dnq0vfavwvb2qkb27dph";
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
arch =

View file

@ -1,6 +1,7 @@
{ stdenv, fetchgit, pkgconfig, libtoxcore-dev, qt5, openal, opencv,
{ stdenv, fetchgit, pkgconfig, libtoxcore-dev, openal, opencv,
libsodium, libXScrnSaver, glib, gdk_pixbuf, gtk2, cairo,
pango, atk, qrencode, ffmpeg, filter-audio, makeWrapper }:
pango, atk, qrencode, ffmpeg, filter-audio, makeWrapper,
qtbase, qtsvg, qttools, qttranslations }:
let
revision = "1673b43e26c853f6446f228fec083af166cbf446";
@ -18,8 +19,8 @@ stdenv.mkDerivation rec {
buildInputs =
[
libtoxcore-dev openal opencv libsodium filter-audio
qt5.base qt5.tools libXScrnSaver glib gtk2 cairo
pango atk qrencode ffmpeg qt5.translations makeWrapper
qtbase qttools libXScrnSaver glib gtk2 cairo
pango atk qrencode ffmpeg qttranslations makeWrapper
];
nativeBuildInputs = [ pkgconfig ];
@ -46,7 +47,7 @@ stdenv.mkDerivation rec {
mkdir -p $out/bin
cp qtox $out/bin
wrapProgram $out/bin/qtox \
--prefix QT_PLUGIN_PATH : ${qt5.svg}/lib/qt5/plugins
--prefix QT_PLUGIN_PATH : ${qtsvg}/lib/qt5/plugins
'';
enableParallelBuilding = true;

View file

@ -1,5 +1,5 @@
{ stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype
, xorg, fontconfig, qt55, xkeyboard_config, alsaLib, libpulseaudio ? null
, xorg, fontconfig, qtbase, xkeyboard_config, alsaLib, libpulseaudio ? null
, libredirect, quazip, less, which, unzip
}:
@ -12,7 +12,7 @@ let
deps =
[ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender
xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama
xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsaLib qt55.qtbase libpulseaudio
xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsaLib qtbase libpulseaudio
];
desktopItem = makeDesktopItem {

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub
, qt5Libs, qtbase, qtquick1, qtmultimedia, qtquickcontrols, qtgraphicaleffects, makeQtWrapper
, qtbase, qtquick1, qtmultimedia, qtquickcontrols, qtgraphicaleffects, makeQtWrapper
, telegram-qml, libqtelegram-aseman-edition }:
stdenv.mkDerivation rec {

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub
, qt5Libs, qtbase, qtmultimedia, qtquick1
, qtbase, qtmultimedia, qtquick1
, libqtelegram-aseman-edition }:
stdenv.mkDerivation rec {

View file

@ -1,4 +1,4 @@
{ stdenv, fetchurl, qt5, pkgconfig, boost, wirelesstools, iw, qwt6 }:
{ stdenv, fetchurl, qtbase, qtsvg, pkgconfig, boost, wirelesstools, iw, qwt6 }:
stdenv.mkDerivation rec {
name = "linssid-${version}";
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "13d35rlcjncd8lx3khkgn9x8is2xjd5fp6ns5xsn3w6l4xj9b4gl";
};
buildInputs = [ qt5.base qt5.svg pkgconfig boost qwt6 ];
buildInputs = [ qtbase qtsvg pkgconfig boost qwt6 ];
patches = [ ./0001-unbundled-qwt.patch ];

View file

@ -30,7 +30,7 @@
with stdenv.lib;
let version = "3.13.0"; in
let version = "3.13.1"; in
stdenv.mkDerivation {
name = "claws-mail-${version}";
@ -45,7 +45,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz";
sha256 = "0fpr9gdgrs5yggm61a6135ca06x0cflddsh8dwfqmpb3dj07cl1n";
sha256 = "049av7r0xhjjjm1p93l2ns3xisvn125v3ncqar23cqjzgcichg5d";
};
patches = [ ./mime.patch ];

View file

@ -64,7 +64,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/${source.arch}/${source.locale}/thunderbird-${version}.tar.bz2";
inherit (source) sha1;
inherit (source) sha256;
};
phases = "unpackPhase installPhase";

View file

@ -1,43 +1,61 @@
require "open-uri"
version = if ARGV.empty?
"latest"
else
ARGV[0]
end
base_path = "http://archive.mozilla.org/pub/thunderbird/releases"
Source = Struct.new(:hash, :arch, :locale, :filename)
sources = open("#{base_path}/#{version}/SHA1SUMS") do |input|
input.readlines
end.select do |line|
/\/thunderbird-.*\.tar\.bz2$/ === line && !(/source/ === line)
end.map do |line|
hash, name = line.chomp.split(/ +/)
Source.new(hash, *(name.split("/")))
end.sort_by do |source|
[source.locale, source.arch]
end
real_version = sources[0].filename.match(/thunderbird-([0-9.]*)\.tar\.bz2/)[1]
base_path = "archive.mozilla.org/pub/thunderbird/releases"
arches = ["linux-i686", "linux-x86_64"]
arches.each do |arch|
system("wget", "--recursive", "--continue", "--no-parent", "--reject-regex", ".*\\?.*", "--reject", "xpi", "http://#{base_path}/#{version}/#{arch}/")
end
locales = Dir.glob("#{base_path}/#{version}/#{arches[0]}/*").map do |path|
File.basename(path)
end.sort
locales.delete("index.html")
locales.delete("xpi")
# real version number, e.g. "30.0" instead of "latest".
real_version = Dir.glob("#{base_path}/#{version}/#{arches[0]}/#{locales[0]}/thunderbird-*")[0].match(/thunderbird-([0-9.]*)/)[1][0..-2]
locale_arch_path_tuples = locales.flat_map do |locale|
arches.map do |arch|
path = Dir.glob("#{base_path}/#{version}/#{arch}/#{locale}/thunderbird-*")[0]
[locale, arch, path]
end
end
paths = locale_arch_path_tuples.map do |tuple| tuple[2] end
hashes = IO.popen(["sha256sum", "--binary", *paths]) do |input|
input.each_line.map do |line|
$stderr.puts(line)
line.match(/^[0-9a-f]*/)[0]
end
end
puts(<<"EOH")
# This file is generated from generate_nix.rb. DO NOT EDIT.
# This file is generated from generate_sources.rb. DO NOT EDIT.
# Execute the following command in a temporary directory to update the file.
#
# ruby generate_source.rb > source.nix
# ruby generate_sources.rb > sources.nix
{
version = "#{real_version}";
sources = [
EOH
sources.each do |source|
puts(%Q| { locale = "#{source.locale}"; arch = "#{source.arch}"; sha1 = "#{source.hash}"; }|)
locale_arch_path_tuples.zip(hashes) do |tuple, hash|
locale, arch, path = tuple
puts(%Q| { locale = "#{locale}"; arch = "#{arch}"; sha256 = "#{hash}"; }|)
end
puts(<<'EOF')

View file

@ -1,126 +1,126 @@
# This file is generated from generate_nix.rb. DO NOT EDIT.
# This file is generated from generate_sources.rb. DO NOT EDIT.
# Execute the following command in a temporary directory to update the file.
#
# ruby generate_source.rb > source.nix
# ruby generate_sources.rb > sources.nix
{
version = "38.3.0";
version = "38.4.0";
sources = [
{ locale = "ar"; arch = "linux-i686"; sha1 = "45a8e9613b5d5083b264fb82704bc69c622372c5"; }
{ locale = "ar"; arch = "linux-x86_64"; sha1 = "97ea8fa778bd4e5fc65d919f2d0f9f473e00fc38"; }
{ locale = "ast"; arch = "linux-i686"; sha1 = "0c535223b5620f249ff32381c53e05c8f5429f1a"; }
{ locale = "ast"; arch = "linux-x86_64"; sha1 = "01352d0046fa41d832c7f18c2b8d0c3d74ab95ce"; }
{ locale = "be"; arch = "linux-i686"; sha1 = "f496db8690c9a7b61766a235ee1dc204f622fddf"; }
{ locale = "be"; arch = "linux-x86_64"; sha1 = "2a62ca92f2dfafa3a58fedbf03304fd6daed01ea"; }
{ locale = "bg"; arch = "linux-i686"; sha1 = "02934c4c9dba3fce844159dc790c0575c0202efd"; }
{ locale = "bg"; arch = "linux-x86_64"; sha1 = "d8cf360615b05d805b88d6057e4f08527aba6576"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha1 = "880434d08155275dc4806d45afa365f62bb58ad0"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "e99dcde6db5bd3178ce58f67191bc3f54f75574a"; }
{ locale = "br"; arch = "linux-i686"; sha1 = "7fab50b35a4bcff0e7e1268e3b50f2088209237e"; }
{ locale = "br"; arch = "linux-x86_64"; sha1 = "d9d945dc271cf092746f8921f490e0f77359f5e3"; }
{ locale = "ca"; arch = "linux-i686"; sha1 = "7f6b5f5523d3b67068e153515629bbbb3e944ee5"; }
{ locale = "ca"; arch = "linux-x86_64"; sha1 = "abd73c39a87a2a28063e165941be98994d22f401"; }
{ locale = "cs"; arch = "linux-i686"; sha1 = "a80a5e962d0ca4458365cee96715c830681b1ee0"; }
{ locale = "cs"; arch = "linux-x86_64"; sha1 = "71096a0d6e8293682638abb9073cf2dc8f905ffb"; }
{ locale = "cy"; arch = "linux-i686"; sha1 = "b64f444d523f3dd88f23d491e91193ef0422f664"; }
{ locale = "cy"; arch = "linux-x86_64"; sha1 = "e8fdf1acb14801c97a3e48ff49706bd15f3433e6"; }
{ locale = "da"; arch = "linux-i686"; sha1 = "73ce38987daf2a145dbca2aa8cd7ca32098598a5"; }
{ locale = "da"; arch = "linux-x86_64"; sha1 = "f403094fbb49addc5d7dfe15370fdd612f067256"; }
{ locale = "de"; arch = "linux-i686"; sha1 = "f265e65020397b79420691a475adb98f3bcc73a1"; }
{ locale = "de"; arch = "linux-x86_64"; sha1 = "267ad171576e57df9a241a22332d15efa882e485"; }
{ locale = "dsb"; arch = "linux-i686"; sha1 = "3d8fb2e858ea3210ddb9eb566235ffeddbc23cb6"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha1 = "7c50f42a6a0c5172469f37412664306049253637"; }
{ locale = "el"; arch = "linux-i686"; sha1 = "732fade73221962dc840d3a97b440753bfda35fc"; }
{ locale = "el"; arch = "linux-x86_64"; sha1 = "9e8f4a7698050b506a815af03534395bf6cfda31"; }
{ locale = "en-GB"; arch = "linux-i686"; sha1 = "0c0c4f87977c0ca4a70db8ba22dcb35b5276f451"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha1 = "0217d912251c52acaf071a6955c725e365d0298b"; }
{ locale = "en-US"; arch = "linux-i686"; sha1 = "1ffa88c200b17e4fe8ea647c58e0d479b3e673e2"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha1 = "e2a2690e2e7b72eff8944effc6d8a70f4fb2a3e7"; }
{ locale = "es-AR"; arch = "linux-i686"; sha1 = "7fddb79300f158ed94c970dd9a0f384093a369fe"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha1 = "961e90db7063c5d49c8494ec31761ae1206effec"; }
{ locale = "es-ES"; arch = "linux-i686"; sha1 = "69a5ad0cc12d9e8e17d4a47c705d3653106248f5"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha1 = "fe84027eef32f4788a8056ea331e2a7a1ecc3c8a"; }
{ locale = "et"; arch = "linux-i686"; sha1 = "d1cdd86f79f6bd17a98a1fcaec70af34671f60c6"; }
{ locale = "et"; arch = "linux-x86_64"; sha1 = "3ee90372f035ba972aff2bb9e8d592cf007fd2bd"; }
{ locale = "eu"; arch = "linux-i686"; sha1 = "d0caf6d75b169a1a420f68210782230bc83d5cfe"; }
{ locale = "eu"; arch = "linux-x86_64"; sha1 = "eb4250e4422699d09bb9a8a2b3a539f72a91e4d1"; }
{ locale = "fi"; arch = "linux-i686"; sha1 = "37e6d23be510eee3d908a2396eee554c65f24539"; }
{ locale = "fi"; arch = "linux-x86_64"; sha1 = "0dc06ca1c164a3f2ca7941e376fb3e085ec29f82"; }
{ locale = "fr"; arch = "linux-i686"; sha1 = "a057112a12aa7e214b2fec5cb3a24126fabe1dbf"; }
{ locale = "fr"; arch = "linux-x86_64"; sha1 = "392d413e2a4c16391af122c2cbcf264d901e875b"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha1 = "207d75317e6257c1eb95e6ba133e3a7229125ffa"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "69e02da4f9473b25f8d3b9cd74602f966899602b"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha1 = "5f356a214e32696e8296a7fee3b9cfe3d86b8176"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "bce6441acd9a438ea707f6db1d8f639fa676adb8"; }
{ locale = "gd"; arch = "linux-i686"; sha1 = "8a4473b82a10ad3dfefdc381b90a0616d1ecaf6b"; }
{ locale = "gd"; arch = "linux-x86_64"; sha1 = "3fdbe0debaf43a741b137eeb549117747dfa08eb"; }
{ locale = "gl"; arch = "linux-i686"; sha1 = "235d6b94cf0e44e7bac6e76ae8c13bd5c090865e"; }
{ locale = "gl"; arch = "linux-x86_64"; sha1 = "a5f23d30426fb0d78d7840ab2b2ed457785cc6c1"; }
{ locale = "he"; arch = "linux-i686"; sha1 = "5b98752dd745d406325682faaaba2d8ce4c34743"; }
{ locale = "he"; arch = "linux-x86_64"; sha1 = "2ce82ecdca404f72f033f3752e34122ff97e6006"; }
{ locale = "hr"; arch = "linux-i686"; sha1 = "b7e8899d7db51129ef94c2b34bcf950307c0eaa1"; }
{ locale = "hr"; arch = "linux-x86_64"; sha1 = "85e0d2ee0591df75754f03566f206085a43e1603"; }
{ locale = "hsb"; arch = "linux-i686"; sha1 = "6252d41415ec5ba7841e629b2617fb38f5bfe25f"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha1 = "40ef8f4991f9670ded25372805b05cf090ae8419"; }
{ locale = "hu"; arch = "linux-i686"; sha1 = "b98b9198d0347ccee4cf1b46405c375ed94d1c79"; }
{ locale = "hu"; arch = "linux-x86_64"; sha1 = "8e144f40a677471b411608cca2170c90de122ffc"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha1 = "aa4d323f658f4330b13e5883ba8b6e2a3e441add"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "2273f2d4d15a4dc4681a8d21e6f42f2e1ba0772a"; }
{ locale = "id"; arch = "linux-i686"; sha1 = "60b9a32ba6b831f851399c6f4ba675bff163aba7"; }
{ locale = "id"; arch = "linux-x86_64"; sha1 = "73cda0ab1e1c04e7ab2816642481d2f9b41746e8"; }
{ locale = "is"; arch = "linux-i686"; sha1 = "9b61caeaf4f1a7e5153d042f6ec52c7a4c4a5573"; }
{ locale = "is"; arch = "linux-x86_64"; sha1 = "a705d9724c2fe246a3a9e96f7304bad73ed9897d"; }
{ locale = "it"; arch = "linux-i686"; sha1 = "0fcd397c3a8f6519ec85f7f2d71416b27053813f"; }
{ locale = "it"; arch = "linux-x86_64"; sha1 = "6900813562473c64a50087f5d0620666763ceb09"; }
{ locale = "ja"; arch = "linux-i686"; sha1 = "786e9aadae199fb2a84b03ac9716f021f118e16e"; }
{ locale = "ja"; arch = "linux-x86_64"; sha1 = "8f92502e03e2bdd704d57a3298a5c109be3d3927"; }
{ locale = "ko"; arch = "linux-i686"; sha1 = "0d3c52e88f5d0cc329b8bcb3cf3322fb59651dd1"; }
{ locale = "ko"; arch = "linux-x86_64"; sha1 = "065a6b448189246d52bee2ea2722d22253c7fcae"; }
{ locale = "lt"; arch = "linux-i686"; sha1 = "b667e748814e2d2ea508eac799325aa4d3e6b56f"; }
{ locale = "lt"; arch = "linux-x86_64"; sha1 = "174214613317d4ea2c25a6c9cbc61810fe579349"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha1 = "669f7f03860c7648bc901120f5bbb43e63424759"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "3cb36ad745d505241bba330e0d832a77d1ba8641"; }
{ locale = "nl"; arch = "linux-i686"; sha1 = "7b399deb6e9a8d4db099bbaaadc8e5a000c13293"; }
{ locale = "nl"; arch = "linux-x86_64"; sha1 = "1d7391c23da59b9367071c95d43ea2cc870c5388"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha1 = "25d80451d59a19339ce8d0e8e9b3fb76c183cca0"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "4af717ad8b7dcc7564bada20b3f28f179d29ae91"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha1 = "225eab7baf002da6543918e1682a931fe7cb4493"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "d519eaf04ee57e1ca1fffe2a1dc5cfbe876ce128"; }
{ locale = "pl"; arch = "linux-i686"; sha1 = "be4eeed21159601047b59aa832c9adbd54a812dd"; }
{ locale = "pl"; arch = "linux-x86_64"; sha1 = "47a7a6f548dfad92a725c56858fb625e42821d9c"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha1 = "5e44c5e9e07cbb0ef864a98c17a3e2c744d7eddd"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "e4337edbaee9023b69518f3804459508a5fb693a"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha1 = "5ce4e8a2626835c3d17c37a68db6c4cc9f3db5e4"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "f155173b56f3e0302288cb359170615d925d9c12"; }
{ locale = "rm"; arch = "linux-i686"; sha1 = "57549fda6d8c9ef67950f6729bb17c8fb79d18cb"; }
{ locale = "rm"; arch = "linux-x86_64"; sha1 = "96cbc015ea082bf9c8a2363929bec574c3ba264d"; }
{ locale = "ro"; arch = "linux-i686"; sha1 = "85399bb39ddb09b5aedd44c5362bda1a375255d8"; }
{ locale = "ro"; arch = "linux-x86_64"; sha1 = "6a4f1f43d188cc0bd817d150fe7c958aec4f0ac6"; }
{ locale = "ru"; arch = "linux-i686"; sha1 = "9fdd1b141cde49a5453540f4ceb3d74dc92b05aa"; }
{ locale = "ru"; arch = "linux-x86_64"; sha1 = "29537fbb4eacb6a9fc396802d74b35132620613d"; }
{ locale = "si"; arch = "linux-i686"; sha1 = "410f15673c95ce3744c84559e5801b4c1cc062b6"; }
{ locale = "si"; arch = "linux-x86_64"; sha1 = "383acd5b025d907ed0dee36f1b8fc5bf5234c860"; }
{ locale = "sk"; arch = "linux-i686"; sha1 = "86e7b065876b4eb0177e7523bab78d36182f1517"; }
{ locale = "sk"; arch = "linux-x86_64"; sha1 = "cdc547aca6dfff934195a69e1ad81a357f37fef4"; }
{ locale = "sl"; arch = "linux-i686"; sha1 = "a88a74354e6b481418d8b5aec08a0c1f87693117"; }
{ locale = "sl"; arch = "linux-x86_64"; sha1 = "d27b3c018904dcb6862f569b84b4200b05013df0"; }
{ locale = "sq"; arch = "linux-i686"; sha1 = "822e117f5a840f46c6b2500ad80efb6c16c2a5de"; }
{ locale = "sq"; arch = "linux-x86_64"; sha1 = "349aeab272d702afbe9f249c54a7cf6d17918f6a"; }
{ locale = "sr"; arch = "linux-i686"; sha1 = "170c6f23bdb3222e7eb95591a22d09d17ca1b5a2"; }
{ locale = "sr"; arch = "linux-x86_64"; sha1 = "eda779e2154ca0ede7c69435ad49fbd541ec21d1"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha1 = "63e9eb73d9854e72f93639c1383dd21075626efb"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "a824725919096f53c3372a038d999ce56b242d40"; }
{ locale = "ta-LK"; arch = "linux-i686"; sha1 = "5b40dd6b193a92ddc6344825bf6e9c547f58b0a2"; }
{ locale = "ta-LK"; arch = "linux-x86_64"; sha1 = "5d6c019b2708b87ac32db16b828966f1b1215e08"; }
{ locale = "tr"; arch = "linux-i686"; sha1 = "17c8ccd0c6d08dd00a6267d9c6850ea8a027b4a5"; }
{ locale = "tr"; arch = "linux-x86_64"; sha1 = "b5c6a09750d01af1f8428425c9c7af9f73a7e42b"; }
{ locale = "uk"; arch = "linux-i686"; sha1 = "6dbfd27fd8efd59cd1af932af3f302f9cc35e314"; }
{ locale = "uk"; arch = "linux-x86_64"; sha1 = "690f60f461d958a076af671321b2588607369754"; }
{ locale = "vi"; arch = "linux-i686"; sha1 = "84dc2737efcc831a63ea2ceeccfdadb2c065c201"; }
{ locale = "vi"; arch = "linux-x86_64"; sha1 = "323be14cf52c7587200856ad31528a93d4f88766"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha1 = "9186336bcf83179205b91f51c56ee7972024d59c"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "97f65edfe8cbb419c4eacb54163df629b8fdb9bb"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha1 = "239c526df1c25aa4b7f639fb0a88d1969d49e2a1"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "88cf0f7fd1c1f73f1c8bfef0a292eac3158f7b88"; }
{ locale = "ar"; arch = "linux-i686"; sha256 = "30383ea1567d2338af99de09f144e4a3cf6c195bc3707c1011171b4c09a885ab"; }
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "0325b8da77e0ec1c97eac81367cbf68c2e4cf62ddd086ab07494cd1705d6134e"; }
{ locale = "ast"; arch = "linux-i686"; sha256 = "5e91cb9df7aab8c887dadcdf8d01b0dd2e6427ed570333b66a680c57ff9391b2"; }
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "3e275d4db234f2ce1c226577dbd6289f870c7ac9f3963136eaa6fa097cb7fbef"; }
{ locale = "be"; arch = "linux-i686"; sha256 = "74a4dcbcf45e766b3a4b23a0bf4c08d61b8e8e8923b45d27ca23f2785dd4120b"; }
{ locale = "be"; arch = "linux-x86_64"; sha256 = "52e9c46cb12b4cdb8d6eaa384717572ef5bd845c18a36d8cfd15db39c4d0332f"; }
{ locale = "bg"; arch = "linux-i686"; sha256 = "0dde851fee0eba8be214f8f673a5da9924f84cf1b558d3f76aa80f6008e518f1"; }
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "198607f773ddc38ab1c2433500f53578fab38dea817a24ae94849fa8045bbb67"; }
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "a34e8ae21b22cb80b772a31341a7dd5da23aaddf8685c6a1a20be6f8f3c312af"; }
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "03f611a7029002e593175cb4e624b1d3885c12847115a027d89625d3be9247c4"; }
{ locale = "br"; arch = "linux-i686"; sha256 = "6c61dcc67472b3fd1b8361d4960e0ec2a190e7a18aa9e05060fa80a7d23b3796"; }
{ locale = "br"; arch = "linux-x86_64"; sha256 = "f4589f1e31697fd65296f306350558ca9355962182e69d0c6f4b303b62407e5b"; }
{ locale = "ca"; arch = "linux-i686"; sha256 = "dd2f59e278a34081c6ac3f1c8dbb61b2e9fe188b23715e6917c7034ac562ae42"; }
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "0f77e01e3a9dda94c8dd7cc34ab2eefbfd4bcacc6d09b3a8563632130c3fb83b"; }
{ locale = "cs"; arch = "linux-i686"; sha256 = "389e99cc4b2c56067ea02eef9e2e347ef972fe21a20a094c6d056aa5e7fb65ff"; }
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "c34ee1e3607df27a9edc03faed4476533489a962715a9d7920282044e9af2dd6"; }
{ locale = "cy"; arch = "linux-i686"; sha256 = "f77986fb3ab81e82e611247066ba6856518a209694cc71592895c4186ec80607"; }
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "549a0c15bbd298e9d3753782e97a0874bf2bfca607bfed484efe3b9fdce3c9b0"; }
{ locale = "da"; arch = "linux-i686"; sha256 = "e56cf65ce0719a3a22d2fdb33ce08113348022afd3a557f2ac39a25e35f632de"; }
{ locale = "da"; arch = "linux-x86_64"; sha256 = "991b5ff474cff16d106b88ee31ac889c6e0543e15b3bf4340c3c263cd3a3ea4c"; }
{ locale = "de"; arch = "linux-i686"; sha256 = "7f28547c9e67c4d76815337d8f5f39e303d1a1055077a77af42ad4162dd3b476"; }
{ locale = "de"; arch = "linux-x86_64"; sha256 = "4c16d7477792759eb754cb5770be67dc78dab3cdfb47c29bb3bf038dbfe6601e"; }
{ locale = "dsb"; arch = "linux-i686"; sha256 = "8f5a82f61c80dd9a1358ee43e192364f34dbba0253aeba00ad0c5d1656e57a34"; }
{ locale = "dsb"; arch = "linux-x86_64"; sha256 = "7804c72b8c758193fbd45feedc185d01717133bf2fa1b1d0054ea421224c780e"; }
{ locale = "el"; arch = "linux-i686"; sha256 = "8128d4330fdfa0c5b0e5b309d1957b7523b337f862bd1e9d2286f50fc652f339"; }
{ locale = "el"; arch = "linux-x86_64"; sha256 = "1d1f7859cd25aa5bd18222f97b4496c8f661a375b1e0404eb92b0bec3bb60ae7"; }
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "980f494e26c8a2904490d55ff2bdfcf8b3d2c82c4b251a7ade3bce90d1e4632c"; }
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "3f3fd4139c64bbea32c53683a2ba75be24fa4a2024922c42b4647ce28a59457f"; }
{ locale = "en-US"; arch = "linux-i686"; sha256 = "bca69f68e6296608e50bb798e46e209cc3be9f20b5baacc102f7571316f7f65e"; }
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "e8d9a31537a6db91efec6372106e655d73ab3e55f3c0ff2e42e564e2a4da7781"; }
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "bbb8817ed30f591f54d47066765cc4796786f5fa41cd2ee2dbf59001fcaad4c6"; }
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "06b55c261bc0cfbc257c264e9643088682256aaf739c8905cfbd4cd08f0868bd"; }
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "44a77de45e05ad469cd03d17efa4766a1e2e06bc8e2e7a5d954db3aea17b8407"; }
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "f14c54fc64eb586c8015352d24b392268d3b2ced7312a5647fc1385e14f6d93d"; }
{ locale = "et"; arch = "linux-i686"; sha256 = "81b28a75d61d9f8463f18ce48943b0f701f392201655eba4899fa609cb59cd9c"; }
{ locale = "et"; arch = "linux-x86_64"; sha256 = "974247ffb2e003026d46888b425a5f497b7a6d06213190e5668c085e1c44453d"; }
{ locale = "eu"; arch = "linux-i686"; sha256 = "f45344ec704ad5a07639da1076ad2e6b1cad21bb75c9462e5e46abad3e57b588"; }
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "4acba2bb5780f85e45a28f58027b75b2832281a7f001f780b215c564a2da2671"; }
{ locale = "fi"; arch = "linux-i686"; sha256 = "74c4d196d31fbc000d541d057ed7dfa31cf713f7964be4bc6fe1c3f80680824d"; }
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "14dfe7b1cf2b1feb8a27628a27d5ef00e64dc401c5aebac1e01e1b94f7d091b6"; }
{ locale = "fr"; arch = "linux-i686"; sha256 = "a6749feae77747703f3a07a1c58bc5679c5faaeb207cb5e46f98cbac733294e1"; }
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "201af3653ade9411902e208a2d16a7b0357d2a4a44d5dfcccf59d7939e24e787"; }
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "8521f1f0551531aef107a21ad953fdeaf0b025266f709e9cfd49eab92a3dcaf2"; }
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "195f0f25dab810e4f8a89d01f3ddb837378cd9fd691425b0b6b50653ac9bad73"; }
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "f3f216995781f4ec55346822483d073e4a1c15449df78e56a05acb7743198292"; }
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "ebcbc721eee9020ac52eeee92531307512a8a3f2306eee3952b9343a52381d4b"; }
{ locale = "gd"; arch = "linux-i686"; sha256 = "234e5cb13726b1025c96403e8522c2cbb169ba547513c007501230d6fff3face"; }
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "2cffd346a895b520c804d8efc7f92e38ace1256a007d8a95abd5687c6fdebcbc"; }
{ locale = "gl"; arch = "linux-i686"; sha256 = "e65afb4d848a4d6922b550888990733046227dd9201c917b161f19d9b5cab232"; }
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "ec85e88f167c195fb1f5ac07adcd4b1ebe538ccb94959a1d2d9ca33406fc2277"; }
{ locale = "he"; arch = "linux-i686"; sha256 = "2b6f436f26ab131d6d6e883a16d27f5a5b9570ada883fe8a387462ad6a2e50ea"; }
{ locale = "he"; arch = "linux-x86_64"; sha256 = "e37020bd431a697b73b88cfc1a9ddee0168009627ce3848684d8de499ad3b053"; }
{ locale = "hr"; arch = "linux-i686"; sha256 = "7c005e34cde48c606dbd67d43fa691c96cd8a27ce50b552b1c1b3e114ae112b3"; }
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "b41260a478e8afa2ae530d6b170514a815b8962bbb3bd32431032604868c3d48"; }
{ locale = "hsb"; arch = "linux-i686"; sha256 = "b4b2e41f9afe8eea8b347bd8fe0ba8d03ac8b9cf9b055469e053e4f72bc1c665"; }
{ locale = "hsb"; arch = "linux-x86_64"; sha256 = "b6540fe80976a53828058e91f4a311192a7da37fd1ea8574161c0cfe494d17f2"; }
{ locale = "hu"; arch = "linux-i686"; sha256 = "c7b27a351e095353f2f53b50275ed7774faeb9254b980dd6571d48a935b50630"; }
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "d5b014fd679bc475ade1278ba661a97e0a92d0fea8a6351e199677f5185f19f4"; }
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "e6748c7f84a6040e98bb0cb3b1ec1c975f2174f8a89c2cc0ef83921dd56d2b1c"; }
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "ce902a1ecadf1a89ab7f32ed17eef33725c946447fd67bc83cde0492fd65022b"; }
{ locale = "id"; arch = "linux-i686"; sha256 = "6f2851c35f8b3fa5187d05d252da8d593f5ec4f9d268dc9c6973b0f87ed0733e"; }
{ locale = "id"; arch = "linux-x86_64"; sha256 = "1a89f09b6a4c3418fb4a1490430e96742e5e8f5dc8b2613ccd9214950c6e8c80"; }
{ locale = "is"; arch = "linux-i686"; sha256 = "e1cdede34db4b9d289596a689e04452813b6c9a83c72513d51c9f356879af9b2"; }
{ locale = "is"; arch = "linux-x86_64"; sha256 = "eeb91667080edb15bb5e023333ff7410580b70de878628b4e6bbaa3d0db2bdfa"; }
{ locale = "it"; arch = "linux-i686"; sha256 = "bd531bf775d991710fd63f1de90b6389c176d6a0c7d7068a8139f70379d6a76b"; }
{ locale = "it"; arch = "linux-x86_64"; sha256 = "89fe33ffda15340926c727b535b378bf629389edccf8f8627b03b4056284b93b"; }
{ locale = "ja"; arch = "linux-i686"; sha256 = "6e22ad0f04be5ce33dfe1d33d4d935e0dce425d80c5e6e07f3b7f2c856f64aee"; }
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "2aaafcb3b5da060458e67f493c10a3f02266e328222f25f96b8229f8dfec37b2"; }
{ locale = "ko"; arch = "linux-i686"; sha256 = "7a0a5957bb1cf2724e551fe2f05e06e4493f95ea939812f535a166428d127a25"; }
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "ee62aee7a4b549d95e4bcab696c28ada842f352111bb44f4d39d1fe05a49d970"; }
{ locale = "lt"; arch = "linux-i686"; sha256 = "ed13eeea81f3673ae082e92db0cb966889f00cfc14c6f54f4f90677a3adc0fd4"; }
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "22fdb92474591dcb05fae0c6bf65d696bcba718b208224411867a38af187c87a"; }
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "44c999f4f73d02ea3c336ceba5771ddd187ce241fd3dcc027f315bdd935ba1c4"; }
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "04aaf3ce92aaadfc975730956b0e92a3b26b5b1abfb376bbc2e8c35b2b1d5169"; }
{ locale = "nl"; arch = "linux-i686"; sha256 = "06b86c4bc4018e5117a8e8a129f81d8ca5fb2781bd06a2f2ec29fcaceba23d58"; }
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "186ee5e191160a72f6f5f99371412cc0cb44fc66184d5a33b0aa8cc480b784c7"; }
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "0ce71ba703d3b307ae66502768c6fe924fbd838570f917e1ab65fc8ffedddfc8"; }
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "4e5f3b1ac34c61ae977d9f346fa04de7a3b21a21756bbf120f5d1bd8f56a98c9"; }
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "7b99742ca9ccca0f5151d4f9ff4b3fffbc9df5f6c8e89c3f2236da84639d6050"; }
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "6e66778a0c318add8d8fdac631400af94a9fff77d90c1c039a91e3b4ae8e66fe"; }
{ locale = "pl"; arch = "linux-i686"; sha256 = "7d50ff91e15954c4736309e23425603ae731c9d221936106a67517a5caf8c24d"; }
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "bc224b70b522199e6c3c7012f3aec9a4cd6b31feb8eea23e3701ff891bcd2d77"; }
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "7194b4ef864aa1cfcc00d9ba108cb9436bfcb72fda9a4bf2ff3abbf47877a5f4"; }
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "6a94b5a6448af6c273fa526b3a359f4435482d1f55f9fbd40ef0d7aded98b1ad"; }
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "1a0fab79901d40fe8709e8675a3c8cc6cb6474e10c64730bcda13a3577f94334"; }
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "3672d9b0e9de882ef9f9851e0ecd9deb52053c65b4a747ac8ef0700b53426f5a"; }
{ locale = "rm"; arch = "linux-i686"; sha256 = "5f2008f9225ade5e1cff93f804e59b95f998129b1de7910280a3a7f508ea9ca5"; }
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "645d13223d1aaf5ca3768515e6d9ac12a4205834bf1329765fbc6ff0410eed8e"; }
{ locale = "ro"; arch = "linux-i686"; sha256 = "582bafffc11ff585860b5af8e8f75d359f4f8e928c794cf35522c083089664ea"; }
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "bf3d9ca3e1ee0d55dd601d25be1b2f2c9ebbe78094a2df725704b060b834eda0"; }
{ locale = "ru"; arch = "linux-i686"; sha256 = "3f3ebf446a22176b429cc328b002ffa723e27727ca29def5dfb88eeddef605f7"; }
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "41f17ef5311d0d1cb10893adb68ca312710f16b07c41d64b31695013cfe15cdd"; }
{ locale = "si"; arch = "linux-i686"; sha256 = "de99654352ff974fcf0c83d0f6aca669bf6fbfcc6ad534b0a26568d30c650564"; }
{ locale = "si"; arch = "linux-x86_64"; sha256 = "554e32f4c204a8c7aa1b3d83dd736524abc0595c5fde6c5f58b0b5a644133df1"; }
{ locale = "sk"; arch = "linux-i686"; sha256 = "c54c6039343bd0bdbe449e6c8633a8aa18ce187850a4d81912b0751d84769fa4"; }
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "cc38fdc0202da4a7292564f3f30fc01080582991dd5a5fb28860ccb4f4c8d75f"; }
{ locale = "sl"; arch = "linux-i686"; sha256 = "a276c5f8d1ce308f79f6ae6f95118164bd8882acc9c2aa8140c544626d1c1960"; }
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "ccbbb0cfd53a9ac5f500e7313111a74d305107578ab94e17bf54175f3366279e"; }
{ locale = "sq"; arch = "linux-i686"; sha256 = "ede984ffb03f4a35ee18699a217d1d75492a4e7a372168a9c6ccc8fb7d133922"; }
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "43a3fdb69989c0365d568eb7d7e697fd9d94ce59f0438a3f9b0e615c255e1eb3"; }
{ locale = "sr"; arch = "linux-i686"; sha256 = "48ee50e180515633db238d73ec8d50cd3dd5dd79e8ab7050f341a5be73401dd9"; }
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "2a7deb046cd8652e04aafcd88b8d621a2503f7061c6b48cdafcbc763143e88bd"; }
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "e87406cb2503ab7cc0ee8df8ac4ec92c90e5033a0133da72b14fd72e736c5360"; }
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "f6227e1c4442dca0ff7ececf90c03bd711d6a5a83d0f8bf9857dd5c964ed243f"; }
{ locale = "ta-LK"; arch = "linux-i686"; sha256 = "758c22dac6d97296ef1543f7eafca7d937a2313dd09ac3ca4bfe401009afe210"; }
{ locale = "ta-LK"; arch = "linux-x86_64"; sha256 = "5f1993c3c54cd0ae42cdac9606664d8127de26ef31a94ec4f7da264a233d788e"; }
{ locale = "tr"; arch = "linux-i686"; sha256 = "68a3dce3a3c84d111b36dc544a82496364d3b16b411d70ee148bf8f9b8d650a0"; }
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "facf8cc17d37049ce5c48a9aec9ce97a46242c46c18b2b52a2b3d6ca14217f63"; }
{ locale = "uk"; arch = "linux-i686"; sha256 = "836cd0eca497cc554da3e68e2274c16c875dc600b8541854a4c11e54e3262b49"; }
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "2fdaafbd212530c309639aa0ee3ebc113c8aeddf7811b5db51e9792a98deeecb"; }
{ locale = "vi"; arch = "linux-i686"; sha256 = "9b263fb42a5ed939dc63a452e7cb87c295c6eaf270bfa97d9c858eed2931c0ae"; }
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "b7684a1836b489b5ef8ad9b28ce0837a846fa55305f83d3a998f6722a97c0e65"; }
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "39b0d87388ae8646f7b81d1008e8b9019a3f702031103e497326bb80988559ed"; }
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "c85ad956bb69a97abd116b30ca5e2303fe4aebdffb08a8120ce7fdeda161b117"; }
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "e2f931b5ffbb1d6169e16125bcc40bc432debc01354f193450075d19f0a23a78"; }
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "3d9310cec9c1370e6a9fa8185935c6c48c3029fc17b6f2fcc311e8f8565ac804"; }
];
}

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, cmake, boost, botan, snappy, libopus, libuuid, qt5
, libXScrnSaver, openssl }:
{ stdenv, fetchFromGitHub, cmake, boost, botan, snappy, libopus, libuuid
, libXScrnSaver, openssl, qtbase, qtmultimedia }:
stdenv.mkDerivation {
name = "firestr-0.8";
@ -11,7 +11,7 @@ stdenv.mkDerivation {
sha256 = "0s2kdi8rw3i3f8gbiy0ykyi6xj5n8p80m0d1i86mhh8jpagvbfzb";
};
buildInputs = [ cmake boost botan snappy libopus libuuid qt5.base qt5.multimedia
buildInputs = [ cmake boost botan snappy libopus libuuid qtbase qtmultimedia
libXScrnSaver openssl ];
patches = ./return.patch;

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