Merge master into staging
This commit is contained in:
commit
11c702c582
|
@ -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)
|
||||
|
|
2
COPYING
2
COPYING
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -277,7 +277,7 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
|
|||
multiPkgs = pkgs: (with pkgs;
|
||||
[ udev
|
||||
alsaLib
|
||||
]) ++ (with [];
|
||||
]);
|
||||
runScript = "bash";
|
||||
}).env
|
||||
]]></programlisting>
|
||||
|
|
|
@ -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
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
|
@ -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 don’t 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 doesn’t 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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>. It’s 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 we’re 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 it’s (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>
|
||||
|
|
@ -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 it’s (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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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" />
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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>";
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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=$!
|
||||
'';
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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: [
|
||||
|
|
|
@ -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) // {
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"; };
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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": {
|
||||
|
|
|
@ -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
|
@ -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
|
@ -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; }
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 ];
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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 ]; }
|
|
@ -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 = {
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
+ m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass");
|
|
@ -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)
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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/";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"; }
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ stdenv, fetchFromGitHub
|
||||
, qt5Libs, qtbase, qtmultimedia, qtquick1
|
||||
, qtbase, qtmultimedia, qtquick1
|
||||
, libqtelegram-aseman-edition }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
|
|
@ -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 ];
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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"; }
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue