Merge master into staging

This commit is contained in:
Frederik Rietdijk 2018-10-13 09:48:20 +02:00
commit 6f5142e48e
309 changed files with 11221 additions and 3339 deletions

View File

@ -1,8 +0,0 @@
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((nil
(bug-reference-bug-regexp . "\\(\\(?:[Ii]ssue \\|[Ff]ixe[ds] \\|[Rr]esolve[ds]? \\|[Cc]lose[ds]? \\|[Pp]\\(?:ull [Rr]equest\\|[Rr]\\) \\|(\\)#\\([0-9]+\\))?\\)")
(bug-reference-url-format . "https://github.com/NixOS/nixpkgs/issues/%s"))
(nix-mode
(tab-width . 2)))

View File

@ -20,7 +20,7 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license.
(Motivation for change. Additional information.) (Motivation for change. Additional information.)
``` ```
For consistency, there should not be a period at the end of the commit message. For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
Examples: Examples:

View File

@ -966,5 +966,766 @@ lib.attrsets.mapAttrsToList (name: value: "${name}=${value}")
itself to attribute sets. Also, the first argument of the argument function itself to attribute sets. Also, the first argument of the argument function
is a <emphasis>list</emphasis> of the names of the containing attributes. is a <emphasis>list</emphasis> of the names of the containing attributes.
</para> </para>
<variablelist>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> Any -> Any</literal>
</para>
<para>
Given a list of attribute names and value, return a new value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name_path</varname>
</term>
<listitem>
<para>
The list of attribute names to this value.
</para>
<para>
For example, the <varname>name_path</varname> for the
<literal>example</literal> string in the attribute set <literal>{ foo
= { bar = "example"; }; }</literal> is <literal>[ "foo" "bar"
]</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The attribute's value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>set</varname>
</term>
<listitem>
<para>
The attribute set to recursively map over.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.mapAttrsRecursive-example">
<title>A contrived example of using <function>lib.attrsets.mapAttrsRecursive</function></title>
<programlisting><![CDATA[
mapAttrsRecursive
(path: value: concatStringsSep "-" (path ++ [value]))
{
n = {
a = "A";
m = {
b = "B";
c = "C";
};
};
d = "D";
}
=> {
n = {
a = "n-a-A";
m = {
b = "n-m-b-B";
c = "n-m-c-C";
};
};
d = "d-D";
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.mapAttrsRecursiveCond">
<title><function>lib.attrsets.mapAttrsRecursiveCond</function></title>
<subtitle><literal>mapAttrsRecursiveCond :: (AttrSet -> Bool) -> ([ String ] -> Any -> Any) -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrsRecursiveCond" />
<para>
Like <function>mapAttrsRecursive</function>, but it takes an additional
predicate function that tells it whether to recursive into an attribute set.
If it returns false, <function>mapAttrsRecursiveCond</function> does not
recurse, but does apply the map function. It is returns true, it does
recurse, and does not apply the map function.
</para>
<variablelist>
<varlistentry>
<term>
<varname>cond</varname>
</term>
<listitem>
<para>
<literal>(AttrSet -> Bool)</literal>
</para>
<para>
Determine if <function>mapAttrsRecursive</function> should recurse deeper
in to the attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>attributeset</varname>
</term>
<listitem>
<para>
An attribute set.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> Any -> Any</literal>
</para>
<para>
Given a list of attribute names and value, return a new value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name_path</varname>
</term>
<listitem>
<para>
The list of attribute names to this value.
</para>
<para>
For example, the <varname>name_path</varname> for the
<literal>example</literal> string in the attribute set <literal>{ foo
= { bar = "example"; }; }</literal> is <literal>[ "foo" "bar"
]</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The attribute's value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>set</varname>
</term>
<listitem>
<para>
The attribute set to recursively map over.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.mapAttrsRecursiveCond-example">
<title>Only convert attribute values to JSON if the containing attribute set is marked for recursion</title>
<programlisting><![CDATA[
lib.attrsets.mapAttrsRecursiveCond
({ recurse ? false, ... }: recurse)
(name: value: builtins.toJSON value)
{
dorecur = {
recurse = true;
hello = "there";
};
dontrecur = {
converted-to- = "json";
};
}
=> {
dorecur = {
hello = "\"there\"";
recurse = "true";
};
dontrecur = "{\"converted-to\":\"json\"}";
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.genAttrs">
<title><function>lib.attrsets.genAttrs</function></title>
<subtitle><literal>genAttrs :: [ String ] -> (String -> Any) -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.genAttrs" />
<para>
Generate an attribute set by mapping a function over a list of attribute
names.
</para>
<variablelist>
<varlistentry>
<term>
<varname>names</varname>
</term>
<listitem>
<para>
Names of values in the resulting attribute set.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>String -> Any</literal>
</para>
<para>
Takes the name of the attribute and return the attribute's value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute to generate a value for.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.genAttrs-example">
<title>Generate an attrset based on names only</title>
<programlisting><![CDATA[
lib.attrsets.genAttrs [ "foo" "bar" ] (name: "x_${name}")
=> { foo = "x_foo"; bar = "x_bar"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.isDerivation">
<title><function>lib.attrsets.isDerivation</function></title>
<subtitle><literal>isDerivation :: Any -> Bool</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.isDerivation" />
<para>
Check whether the argument is a derivation. Any set with <code>{ type =
"derivation"; }</code> counts as a derivation.
</para>
<variablelist>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The value which is possibly a derivation.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.isDerivation-example-true">
<title>A package is a derivation</title>
<programlisting><![CDATA[
lib.attrsets.isDerivation (import <nixpkgs> {}).ruby
=> true
]]></programlisting>
</example>
<example xml:id="function-library-lib.attrsets.isDerivation-example-false">
<title>Anything else is not a derivation</title>
<programlisting><![CDATA[
lib.attrsets.isDerivation "foobar"
=> false
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.toDerivation">
<title><function>lib.attrsets.toDerivation</function></title>
<subtitle><literal>toDerivation :: Path -> Derivation</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.toDerivation" />
<para>
Converts a store path to a fake derivation.
</para>
<variablelist>
<varlistentry>
<term>
<varname>path</varname>
</term>
<listitem>
<para>
A store path to convert to a derivation.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="function-library-lib.attrsets.optionalAttrs">
<title><function>lib.attrsets.optionalAttrs</function></title>
<subtitle><literal>optionalAttrs :: Bool -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.optionalAttrs" />
<para>
Conditionally return an attribute set or an empty attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>cond</varname>
</term>
<listitem>
<para>
Condition under which the <varname>as</varname> attribute set is
returned.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>as</varname>
</term>
<listitem>
<para>
The attribute set to return if <varname>cond</varname> is true.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.optionalAttrs-example-true">
<title>Return the provided attribute set when <varname>cond</varname> is true</title>
<programlisting><![CDATA[
lib.attrsets.optionalAttrs true { my = "set"; }
=> { my = "set"; }
]]></programlisting>
</example>
<example xml:id="function-library-lib.attrsets.optionalAttrs-example-false">
<title>Return an empty attribute set when <varname>cond</varname> is false</title>
<programlisting><![CDATA[
lib.attrsets.optionalAttrs false { my = "set"; }
=> { }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrsWithNames">
<title><function>lib.attrsets.zipAttrsWithNames</function></title>
<subtitle><literal>zipAttrsWithNames :: [ String ] -> (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrsWithNames" />
<para>
Merge sets of attributes and use the function <varname>f</varname> to merge
attribute values where the attribute name is in <varname>names</varname>.
</para>
<variablelist>
<varlistentry>
<term>
<varname>names</varname>
</term>
<listitem>
<para>
A list of attribute names to zip.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>(String -> [ Any ] -> Any</literal>
</para>
<para>
Accepts an attribute name, all the values, and returns a combined value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute each value came from.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>vs</varname>
</term>
<listitem>
<para>
A list of values collected from the list of attribute sets.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrsWithNames-example">
<title>Summing a list of attribute sets of numbers</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrsWithNames
[ "a" "b" ]
(name: vals: "${name} ${toString (builtins.foldl' (a: b: a + b) 0 vals)}")
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = "a 11"; b = "b 101"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrsWith">
<title><function>lib.attrsets.zipAttrsWith</function></title>
<subtitle><literal>zipAttrsWith :: (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrsWith" />
<para>
Merge sets of attributes and use the function <varname>f</varname> to merge
attribute values. Similar to
<xref
linkend="function-library-lib.attrsets.zipAttrsWithNames" /> where
all key names are passed for <varname>names</varname>.
</para>
<variablelist>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>(String -> [ Any ] -> Any</literal>
</para>
<para>
Accepts an attribute name, all the values, and returns a combined value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute each value came from.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>vs</varname>
</term>
<listitem>
<para>
A list of values collected from the list of attribute sets.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrsWith-example">
<title>Summing a list of attribute sets of numbers</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrsWith
(name: vals: "${name} ${toString (builtins.foldl' (a: b: a + b) 0 vals)}")
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = "a 11"; b = "b 101"; c = "c 1001"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrs">
<title><function>lib.attrsets.zipAttrs</function></title>
<subtitle><literal>zipAttrsWith :: [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrs" />
<para>
Merge sets of attributes and combine each attribute value in to a list.
Similar to <xref linkend="function-library-lib.attrsets.zipAttrsWith" />
where the merge function returns a list of all values.
</para>
<variablelist>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrs-example">
<title>Combining a list of attribute sets</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrs
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = [ 1 10 ]; b = [ 1 100 ]; c = [ 1 1000 ]; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.recursiveUpdateUntil">
<title><function>lib.attrsets.recursiveUpdateUntil</function></title>
<subtitle><literal>recursiveUpdateUntil :: ( [ String ] -> AttrSet -> AttrSet -> Bool ) -> AttrSet -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.recursiveUpdateUntil" />
<para>
Does the same as the update operator <literal>//</literal> except that
attributes are merged until the given predicate is verified. The predicate
should accept 3 arguments which are the path to reach the attribute, a part
of the first attribute set and a part of the second attribute set. When the
predicate is verified, the value of the first attribute set is replaced by
the value of the second attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>pred</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> AttrSet -> AttrSet -> Bool</literal>
</para>
<variablelist>
<varlistentry>
<term>
<varname>path</varname>
</term>
<listitem>
<para>
The path to the values in the left and right hand sides.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>l</varname>
</term>
<listitem>
<para>
The left hand side value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>r</varname>
</term>
<listitem>
<para>
The right hand side value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>lhs</varname>
</term>
<listitem>
<para>
The left hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>rhs</varname>
</term>
<listitem>
<para>
The right hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.recursiveUpdateUntil-example">
<title>Recursively merging two attribute sets</title>
<programlisting><![CDATA[
lib.attrsets.recursiveUpdateUntil (path: l: r: path == ["foo"])
{
# first attribute set
foo.bar = 1;
foo.baz = 2;
bar = 3;
}
{
#second attribute set
foo.bar = 1;
foo.quz = 2;
baz = 4;
}
=> {
foo.bar = 1; # 'foo.*' from the second set
foo.quz = 2; #
bar = 3; # 'bar' from the first set
baz = 4; # 'baz' from the second set
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.recursiveUpdate">
<title><function>lib.attrsets.recursiveUpdate</function></title>
<subtitle><literal>recursiveUpdate :: AttrSet -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.recursiveUpdate" />
<para>
A recursive variant of the update operator <literal>//</literal>. The
recursion stops when one of the attribute values is not an attribute set, in
which case the right hand side value takes precedence over the left hand
side value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>lhs</varname>
</term>
<listitem>
<para>
The left hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>rhs</varname>
</term>
<listitem>
<para>
The right hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.recursiveUpdate-example">
<title>Recursively merging two attribute sets</title>
<programlisting><![CDATA[
recursiveUpdate
{
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/hda";
}
{
boot.loader.grub.device = "";
}
=> {
boot.loader.grub.enable = true;
boot.loader.grub.device = "";
}
]]></programlisting>
</example>
</section> </section>
</section> </section>

View File

@ -186,7 +186,7 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
`toolz` package. `toolz` package.
```nix ```nix
{ # ... { lib, buildPythonPackage, fetchPypi }:
toolz = buildPythonPackage rec { toolz = buildPythonPackage rec {
pname = "toolz"; pname = "toolz";
@ -199,8 +199,8 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
doCheck = false; doCheck = false;
meta = { meta = with lib; {
homepage = "https://github.com/pytoolz/toolz/"; homepage = https://github.com/pytoolz/toolz;
description = "List processing tools and functional utilities"; description = "List processing tools and functional utilities";
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ fridh ]; maintainers = with maintainers; [ fridh ];
@ -267,12 +267,13 @@ that we introduced with the `let` expression.
#### Handling dependencies #### Handling dependencies
Our example, `toolz`, does not have any dependencies on other Python Our example, `toolz`, does not have any dependencies on other Python packages or
packages or system libraries. According to the manual, `buildPythonPackage` system libraries. According to the manual, `buildPythonPackage` uses the
uses the arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If something is arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If
exclusively a build-time dependency, then the dependency should be included as a something is exclusively a build-time dependency, then the dependency should be
`buildInput`, but if it is (also) a runtime dependency, then it should be added included as a `buildInput`, but if it is (also) a runtime dependency, then it
to `propagatedBuildInputs`. Test dependencies are considered build-time dependencies. should be added to `propagatedBuildInputs`. Test dependencies are considered
build-time dependencies and passed to `checkInputs`.
The following example shows which arguments are given to `buildPythonPackage` in The following example shows which arguments are given to `buildPythonPackage` in
order to build [`datashape`](https://github.com/blaze/datashape). order to build [`datashape`](https://github.com/blaze/datashape).
@ -292,7 +293,7 @@ order to build [`datashape`](https://github.com/blaze/datashape).
checkInputs = with self; [ pytest ]; checkInputs = with self; [ pytest ];
propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ]; propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ];
meta = { meta = with lib; {
homepage = https://github.com/ContinuumIO/datashape; homepage = https://github.com/ContinuumIO/datashape;
description = "A data description language"; description = "A data description language";
license = licenses.bsd2; license = licenses.bsd2;
@ -326,7 +327,7 @@ when building the bindings and are therefore added as `buildInputs`.
buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ]; buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ];
meta = { meta = with lib; {
description = "Pythonic binding for the libxml2 and libxslt libraries"; description = "Pythonic binding for the libxml2 and libxslt libraries";
homepage = https://lxml.de; homepage = https://lxml.de;
license = licenses.bsd3; license = licenses.bsd3;
@ -370,9 +371,9 @@ and `CFLAGS`.
export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include" export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include"
''; '';
meta = { meta = with lib; {
description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms"; description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
homepage = http://hgomersall.github.com/pyFFTW/; homepage = http://hgomersall.github.com/pyFFTW;
license = with licenses; [ bsd2 bsd3 ]; license = with licenses; [ bsd2 bsd3 ];
maintainers = with maintainers; [ fridh ]; maintainers = with maintainers; [ fridh ];
}; };
@ -478,8 +479,6 @@ don't explicitly define which `python` derivation should be used. In the above
example we use `buildPythonPackage` that is part of the set `python35Packages`, example we use `buildPythonPackage` that is part of the set `python35Packages`,
and in this case the `python35` interpreter is automatically used. and in this case the `python35` interpreter is automatically used.
## Reference ## Reference
### Interpreters ### Interpreters
@ -549,31 +548,31 @@ The `buildPythonPackage` function is implemented in
The following is an example: The following is an example:
```nix ```nix
{ lib, buildPythonPackage, fetchPypi, hypothesis, setuptools_scm, attrs, py, setuptools, six, pluggy }:
buildPythonPackage rec { buildPythonPackage rec {
version = "3.3.1";
pname = "pytest"; pname = "pytest";
version = "3.3.1";
preCheck = ''
# don't test bash builtins
rm testing/test_argcomplete.py
'';
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93"; sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93";
}; };
postPatch = ''
# don't test bash builtins
rm testing/test_argcomplete.py
'';
checkInputs = [ hypothesis ]; checkInputs = [ hypothesis ];
buildInputs = [ setuptools_scm ]; buildInputs = [ setuptools_scm ];
propagatedBuildInputs = [ attrs py setuptools six pluggy ]; propagatedBuildInputs = [ attrs py setuptools six pluggy ];
meta = with stdenv.lib; { meta = with lib; {
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ]; maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
description = "Framework for writing tests"; description = "Framework for writing tests";
}; };
} }
``` ```
The `buildPythonPackage` mainly does four things: The `buildPythonPackage` mainly does four things:
@ -655,6 +654,39 @@ Another difference is that `buildPythonPackage` by default prefixes the names of
the packages with the version of the interpreter. Because this is irrelevant for the packages with the version of the interpreter. Because this is irrelevant for
applications, the prefix is omitted. applications, the prefix is omitted.
When packaging a python application with `buildPythonApplication`, it should be
called with `callPackage` and passed `python` or `pythonPackages` (possibly
specifying an interpreter version), like this:
```nix
{ lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "luigi";
version = "2.7.9";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "035w8gqql36zlan0xjrzz9j4lh9hs0qrsgnbyw07qs7lnkvbdv9x";
};
propagatedBuildInputs = with python3Packages; [ tornado_4 pythondaemon ];
meta = with lib; {
...
};
}
```
This is then added to `all-packages.nix` just as any other application would be.
```nix
luigi = callPackage ../applications/networking/cluster/luigi { };
```
Since the package is an application, a consumer doesn't need to care about
python versions or modules, which is why they don't go in `pythonPackages`.
#### `toPythonApplication` function #### `toPythonApplication` function
A distinction is made between applications and libraries, however, sometimes a A distinction is made between applications and libraries, however, sometimes a

View File

@ -196,7 +196,7 @@ rec {
newScope = scope: newScope (self // scope); newScope = scope: newScope (self // scope);
callPackage = self.newScope {}; callPackage = self.newScope {};
overrideScope = g: lib.warn overrideScope = g: lib.warn
"`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: self: { })` instead of `overrideScope (super: self: { })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern." "`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: super: { })` instead of `overrideScope (super: self: { })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern."
(makeScope newScope (lib.fixedPoints.extends (lib.flip g) f)); (makeScope newScope (lib.fixedPoints.extends (lib.flip g) f));
overrideScope' = g: makeScope newScope (lib.fixedPoints.extends g f); overrideScope' = g: makeScope newScope (lib.fixedPoints.extends g f);
packages = f; packages = f;

View File

@ -28,7 +28,7 @@ rec {
}; };
armv7l-hf-multiplatform = rec { armv7l-hf-multiplatform = rec {
config = "armv7a-unknown-linux-gnueabihf"; config = "armv7l-unknown-linux-gnueabihf";
platform = platforms.armv7l-hf-multiplatform; platform = platforms.armv7l-hf-multiplatform;
}; };

View File

@ -194,7 +194,10 @@ rec {
# separator between the values). # separator between the values).
separatedString = sep: mkOptionType rec { separatedString = sep: mkOptionType rec {
name = "separatedString"; name = "separatedString";
description = "string"; description = if sep == ""
then "Concatenated string" # for types.string.
else "strings concatenated with ${builtins.toJSON sep}"
;
check = isString; check = isString;
merge = loc: defs: concatStringsSep sep (getValues defs); merge = loc: defs: concatStringsSep sep (getValues defs);
functor = (defaultFunctor name) // { functor = (defaultFunctor name) // {

View File

@ -520,6 +520,11 @@
github = "bgamari"; github = "bgamari";
name = "Ben Gamari"; name = "Ben Gamari";
}; };
bhall = {
email = "brendan.j.hall@bath.edu";
github = "brendan-hall";
name = "Brendan Hall";
};
bhipple = { bhipple = {
email = "bhipple@protonmail.com"; email = "bhipple@protonmail.com";
github = "bhipple"; github = "bhipple";
@ -1195,6 +1200,11 @@
github = "eduarrrd"; github = "eduarrrd";
name = "Eduard Bachmakov"; name = "Eduard Bachmakov";
}; };
edude03 = {
email = "michael@melenion.com";
github = "edude03";
name = "Michael Francis";
};
edwtjo = { edwtjo = {
email = "ed@cflags.cc"; email = "ed@cflags.cc";
github = "edwtjo"; github = "edwtjo";
@ -2148,6 +2158,11 @@
github = "kiloreux"; github = "kiloreux";
name = "Kiloreux Emperex"; name = "Kiloreux Emperex";
}; };
kimburgess = {
email = "kim@acaprojects.com";
github = "kimburgess";
name = "Kim Burgess";
};
kini = { kini = {
email = "keshav.kini@gmail.com"; email = "keshav.kini@gmail.com";
github = "kini"; github = "kini";
@ -3125,6 +3140,11 @@
github = "pacien"; github = "pacien";
name = "Pacien Tran-Girard"; name = "Pacien Tran-Girard";
}; };
paddygord = {
email = "pgpatrickgordon@gmail.com";
github = "paddygord";
name = "Patrick Gordon";
};
paholg = { paholg = {
email = "paho@paholg.com"; email = "paho@paholg.com";
github = "paholg"; github = "paholg";

View File

@ -115,10 +115,17 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add a <emphasis>swap</emphasis> partition. The size required will vary Add the <emphasis>root</emphasis> partition. This will fill the disk
according to needs, here a 8GiB one is created. The space left in front except for the end part, where the swap will live, and the space left in
(512MiB) will be used by the boot partition. front (512MiB) which will be used by the boot partition.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB</screen> <screen language="commands"># parted /dev/sda -- mkpart primary 512MiB -8GiB</screen>
</para>
</listitem>
<listitem>
<para>
Next, add a <emphasis>swap</emphasis> partition. The size required will
vary according to needs, here a 8GiB one is created.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap -8GiB 100%</screen>
<note> <note>
<para> <para>
The swap partition size rules are no different than for other Linux The swap partition size rules are no different than for other Linux
@ -127,20 +134,13 @@
</note> </note>
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Next, add the <emphasis>root</emphasis> partition. This will fill the
remainder ending part of the disk.
<screen language="commands"># parted /dev/sda -- mkpart primary 8.5GiB -1MiB</screen>
</para>
</listitem>
<listitem> <listitem>
<para> <para>
Finally, the <emphasis>boot</emphasis> partition. NixOS by default uses Finally, the <emphasis>boot</emphasis> partition. NixOS by default uses
the ESP (EFI system partition) as its <emphasis>/boot</emphasis> the ESP (EFI system partition) as its <emphasis>/boot</emphasis>
partition. It uses the initially reserved 512MiB at the start of the partition. It uses the initially reserved 512MiB at the start of the
disk. disk.
<screen language="commands"># parted /dev/sda -- mkpart ESP fat32 1M 512MiB <screen language="commands"># parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB
# parted /dev/sda -- set 3 boot on</screen> # parted /dev/sda -- set 3 boot on</screen>
</para> </para>
</listitem> </listitem>
@ -177,9 +177,16 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Add a <emphasis>swap</emphasis> partition. The size required will vary Add the <emphasis>root</emphasis> partition. This will fill the the disk
according to needs, here a 8GiB one is created. except for the end part, where the swap will live.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap 1M 8GiB</screen> <screen language="commands"># parted /dev/sda -- mkpart primary 1MiB -8GiB</screen>
</para>
</listitem>
<listitem>
<para>
Finally, add a <emphasis>swap</emphasis> partition. The size required
will vary according to needs, here a 8GiB one is created.
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap -8GiB 100%</screen>
<note> <note>
<para> <para>
The swap partition size rules are no different than for other Linux The swap partition size rules are no different than for other Linux
@ -188,13 +195,6 @@
</note> </note>
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Finally, add the <emphasis>root</emphasis> partition. This will fill the
remainder of the disk.
<screen language="commands"># parted /dev/sda -- mkpart primary 8GiB -1s</screen>
</para>
</listitem>
</orderedlist> </orderedlist>
</para> </para>
@ -486,17 +486,17 @@ $ nix-env -i w3m</screen>
<title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (MBR)</title> <title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (MBR)</title>
<screen language="commands"> <screen language="commands">
# parted /dev/sda -- mklabel msdos # parted /dev/sda -- mklabel msdos
# parted /dev/sda -- mkpart primary linux-swap 1M 8GiB # parted /dev/sda -- mkpart primary 1MiB -8GiB
# parted /dev/sda -- mkpart primary 8GiB -1s</screen> # parted /dev/sda -- mkpart primary linux-swap -8GiB 100%</screen>
</example> </example>
<example xml:id="ex-partition-scheme-UEFI"> <example xml:id="ex-partition-scheme-UEFI">
<title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (UEFI)</title> <title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (UEFI)</title>
<screen language="commands"> <screen language="commands">
# parted /dev/sda -- mklabel gpt # parted /dev/sda -- mklabel gpt
# parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB # parted /dev/sda -- mkpart primary 512MiB -8GiB
# parted /dev/sda -- mkpart primary 8.5GiB -1MiB # parted /dev/sda -- mkpart primary linux-swap -8GiB 100%
# parted /dev/sda -- mkpart ESP fat32 1M 512MiB # parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB
# parted /dev/sda -- set 3 boot on</screen> # parted /dev/sda -- set 3 boot on</screen>
</example> </example>

View File

@ -113,6 +113,15 @@
(i.e. <literal>users.users.yourusername.extraGroups = ["video"];</literal>). (i.e. <literal>users.users.yourusername.extraGroups = ["video"];</literal>).
</para> </para>
</listitem> </listitem>
<listitem>
<para>
Buildbot now supports Python 3 and its packages have been moved to
<literal>pythonPackages</literal>. The options
<option>services.buildbot-master.package</option> and
<option>services.buildbot-worker.package</option> can be used to select
the Python 2 or 3 version of the package.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>

View File

@ -79,7 +79,7 @@ in {
options = { options = {
krb5 = { krb5 = {
enable = mkEnableOption "Whether to enable Kerberos V."; enable = mkEnableOption "building krb5.conf, configuration file for Kerberos V";
kerberos = mkOption { kerberos = mkOption {
type = types.package; type = types.package;

View File

@ -24,11 +24,11 @@ with lib;
environment.extraSetup = '' environment.extraSetup = ''
if [ -w $out/share/mime ] && [ -d $out/share/mime/packages ]; then if [ -w $out/share/mime ] && [ -d $out/share/mime/packages ]; then
XDG_DATA_DIRS=$out/share ${pkgs.shared-mime-info}/bin/update-mime-database -V $out/share/mime > /dev/null XDG_DATA_DIRS=$out/share ${pkgs.buildPackages.shared-mime-info}/bin/update-mime-database -V $out/share/mime > /dev/null
fi fi
if [ -w $out/share/applications ]; then if [ -w $out/share/applications ]; then
${pkgs.desktop-file-utils}/bin/update-desktop-database $out/share/applications ${pkgs.buildPackages.desktop-file-utils}/bin/update-desktop-database $out/share/applications
fi fi
''; '';
}; };

View File

@ -166,7 +166,7 @@ in
if [ -w $out/share/info ]; then if [ -w $out/share/info ]; then
shopt -s nullglob shopt -s nullglob
for i in $out/share/info/*.info $out/share/info/*.info.gz; do for i in $out/share/info/*.info $out/share/info/*.info.gz; do
${pkgs.texinfo}/bin/install-info $i $out/share/info/dir ${pkgs.buildPackages.texinfo}/bin/install-info $i $out/share/info/dir
done done
fi fi
''; '';

View File

@ -735,12 +735,14 @@
./services/x11/display-managers/lightdm.nix ./services/x11/display-managers/lightdm.nix
./services/x11/display-managers/sddm.nix ./services/x11/display-managers/sddm.nix
./services/x11/display-managers/slim.nix ./services/x11/display-managers/slim.nix
./services/x11/display-managers/startx.nix
./services/x11/display-managers/xpra.nix ./services/x11/display-managers/xpra.nix
./services/x11/fractalart.nix ./services/x11/fractalart.nix
./services/x11/hardware/libinput.nix ./services/x11/hardware/libinput.nix
./services/x11/hardware/multitouch.nix ./services/x11/hardware/multitouch.nix
./services/x11/hardware/synaptics.nix ./services/x11/hardware/synaptics.nix
./services/x11/hardware/wacom.nix ./services/x11/hardware/wacom.nix
./services/x11/gdk-pixbuf.nix
./services/x11/redshift.nix ./services/x11/redshift.nix
./services/x11/urxvtd.nix ./services/x11/urxvtd.nix
./services/x11/window-managers/awesome.nix ./services/x11/window-managers/awesome.nix

View File

@ -9,7 +9,7 @@ let
cfg = config.programs.fish; cfg = config.programs.fish;
fishAliases = concatStringsSep "\n" ( fishAliases = concatStringsSep "\n" (
mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}") cfg.shellAliases
); );
in in

View File

@ -6,8 +6,12 @@ with lib;
let let
cfg = config.services.buildbot-master; cfg = config.services.buildbot-master;
python = cfg.package.pythonModule;
escapeStr = s: escape ["'"] s; escapeStr = s: escape ["'"] s;
masterCfg = if cfg.masterCfg == null then pkgs.writeText "master.cfg" ''
defaultMasterCfg = pkgs.writeText "master.cfg" ''
from buildbot.plugins import * from buildbot.plugins import *
factory = util.BuildFactory() factory = util.BuildFactory()
c = BuildmasterConfig = dict( c = BuildmasterConfig = dict(
@ -27,8 +31,28 @@ let
factory.addStep(step) factory.addStep(step)
${cfg.extraConfig} ${cfg.extraConfig}
'' '';
else cfg.masterCfg;
tacFile = pkgs.writeText "buildbot-master.tac" ''
import os
from twisted.application import service
from buildbot.master import BuildMaster
basedir = '${cfg.buildbotDir}'
configfile = '${cfg.masterCfg}'
# Default umask for server
umask = None
# note: this line is matched against to check that this is a buildmaster
# directory; do not edit it.
application = service.Application('buildmaster')
m = BuildMaster(basedir, configfile, umask)
m.setServiceParent(application)
'';
in { in {
options = { options = {
@ -66,9 +90,9 @@ in {
}; };
masterCfg = mkOption { masterCfg = mkOption {
type = types.nullOr types.path; type = types.path;
description = "Optionally pass master.cfg path. Other options in this configuration will be ignored."; description = "Optionally pass master.cfg path. Other options in this configuration will be ignored.";
default = null; default = defaultMasterCfg;
example = "/etc/nixos/buildbot/master.cfg"; example = "/etc/nixos/buildbot/master.cfg";
}; };
@ -175,18 +199,25 @@ in {
package = mkOption { package = mkOption {
type = types.package; type = types.package;
default = pkgs.buildbot-full; default = pkgs.pythonPackages.buildbot-full;
defaultText = "pkgs.buildbot-full"; defaultText = "pkgs.pythonPackages.buildbot-full";
description = "Package to use for buildbot."; description = "Package to use for buildbot.";
example = literalExample "pkgs.buildbot-full"; example = literalExample "pkgs.python3Packages.buildbot-full";
}; };
packages = mkOption { packages = mkOption {
default = with pkgs; [ python27Packages.twisted git ]; default = [ pkgs.git ];
example = literalExample "[ pkgs.git ]"; example = literalExample "[ pkgs.git ]";
type = types.listOf types.package; type = types.listOf types.package;
description = "Packages to add to PATH for the buildbot process."; description = "Packages to add to PATH for the buildbot process.";
}; };
pythonPackages = mkOption {
default = pythonPackages: with pythonPackages; [ ];
defaultText = "pythonPackages: with pythonPackages; [ ]";
description = "Packages to add the to the PYTHONPATH of the buildbot process.";
example = literalExample "pythonPackages: with pythonPackages; [ requests ]";
};
}; };
}; };
@ -210,14 +241,15 @@ in {
description = "Buildbot Continuous Integration Server."; description = "Buildbot Continuous Integration Server.";
after = [ "network-online.target" ]; after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = cfg.packages; path = cfg.packages ++ cfg.pythonPackages python.pkgs;
environment.PYTHONPATH = "${python.withPackages (self: cfg.pythonPackages self ++ [ cfg.package ])}/${python.sitePackages}";
preStart = '' preStart = ''
env > envvars mkdir -vp "${cfg.buildbotDir}"
mkdir -vp ${cfg.buildbotDir} # Link the tac file so buildbot command line tools recognize the directory
ln -sfv ${masterCfg} ${cfg.buildbotDir}/master.cfg ln -sf "${tacFile}" "${cfg.buildbotDir}/buildbot.tac"
rm -fv $cfg.buildbotDir}/buildbot.tac ${cfg.package}/bin/buildbot create-master --db "${cfg.dbUrl}" "${cfg.buildbotDir}"
${cfg.package}/bin/buildbot create-master ${cfg.buildbotDir} rm -f buildbot.tac.new master.cfg.sample
''; '';
serviceConfig = { serviceConfig = {
@ -225,12 +257,11 @@ in {
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
WorkingDirectory = cfg.home; WorkingDirectory = cfg.home;
ExecStart = "${cfg.package}/bin/buildbot start --nodaemon ${cfg.buildbotDir}"; # NOTE: call twistd directly with stdout logging for systemd
ExecStart = "${python.pkgs.twisted}/bin/twistd -o --nodaemon --pidfile= --logfile - --python ${tacFile}";
}; };
}; };
}; };
meta.maintainers = with lib.maintainers; [ nand0p mic92 ]; meta.maintainers = with lib.maintainers; [ nand0p mic92 ];
} }

View File

@ -7,6 +7,40 @@ with lib;
let let
cfg = config.services.buildbot-worker; cfg = config.services.buildbot-worker;
python = cfg.package.pythonModule;
tacFile = pkgs.writeText "aur-buildbot-worker.tac" ''
import os
from io import open
from buildbot_worker.bot import Worker
from twisted.application import service
basedir = '${cfg.buildbotDir}'
# note: this line is matched against to check that this is a worker
# directory; do not edit it.
application = service.Application('buildbot-worker')
master_url_split = '${cfg.masterUrl}'.split(':')
buildmaster_host = master_url_split[0]
port = int(master_url_split[1])
workername = '${cfg.workerUser}'
with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file:
passwd = passwd_file.read().strip('\r\n')
keepalive = 600
umask = None
maxdelay = 300
numcpus = None
allow_shutdown = None
s = Worker(buildmaster_host, port, workername, passwd, basedir,
keepalive, umask=umask, maxdelay=maxdelay,
numcpus=numcpus, allow_shutdown=allow_shutdown)
s.setServiceParent(application)
'';
in { in {
options = { options = {
services.buildbot-worker = { services.buildbot-worker = {
@ -59,6 +93,23 @@ in {
description = "Specifies the Buildbot Worker password."; description = "Specifies the Buildbot Worker password.";
}; };
workerPassFile = mkOption {
type = types.path;
description = "File used to store the Buildbot Worker password";
};
hostMessage = mkOption {
default = null;
type = types.nullOr types.str;
description = "Description of this worker";
};
adminMessage = mkOption {
default = null;
type = types.nullOr types.str;
description = "Name of the administrator of this worker";
};
masterUrl = mkOption { masterUrl = mkOption {
default = "localhost:9989"; default = "localhost:9989";
type = types.str; type = types.str;
@ -67,23 +118,24 @@ in {
package = mkOption { package = mkOption {
type = types.package; type = types.package;
default = pkgs.buildbot-worker; default = pkgs.pythonPackages.buildbot-worker;
defaultText = "pkgs.buildbot-worker"; defaultText = "pkgs.pythonPackages.buildbot-worker";
description = "Package to use for buildbot worker."; description = "Package to use for buildbot worker.";
example = literalExample "pkgs.buildbot-worker"; example = literalExample "pkgs.python3Packages.buildbot-worker";
}; };
packages = mkOption { packages = mkOption {
default = with pkgs; [ python27Packages.twisted git ]; default = with pkgs; [ git ];
example = literalExample "[ pkgs.git ]"; example = literalExample "[ pkgs.git ]";
type = types.listOf types.package; type = types.listOf types.package;
description = "Packages to add to PATH for the buildbot process."; description = "Packages to add to PATH for the buildbot process.";
}; };
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass);
users.groups = optional (cfg.group == "bbworker") { users.groups = optional (cfg.group == "bbworker") {
name = "bbworker"; name = "bbworker";
}; };
@ -104,11 +156,16 @@ in {
after = [ "network.target" "buildbot-master.service" ]; after = [ "network.target" "buildbot-master.service" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = cfg.packages; path = cfg.packages;
environment.PYTHONPATH = "${python.withPackages (p: [ cfg.package ])}/${python.sitePackages}";
preStart = '' preStart = ''
mkdir -vp ${cfg.buildbotDir} mkdir -vp "${cfg.buildbotDir}/info"
rm -fv $cfg.buildbotDir}/buildbot.tac ${optionalString (cfg.hostMessage != null) ''
${cfg.package}/bin/buildbot-worker create-worker ${cfg.buildbotDir} ${cfg.masterUrl} ${cfg.workerUser} ${cfg.workerPass} ln -sf "${pkgs.writeText "buildbot-worker-host" cfg.hostMessage}" "${cfg.buildbotDir}/info/host"
''}
${optionalString (cfg.adminMessage != null) ''
ln -sf "${pkgs.writeText "buildbot-worker-admin" cfg.adminMessage}" "${cfg.buildbotDir}/info/admin"
''}
''; '';
serviceConfig = { serviceConfig = {
@ -116,11 +173,9 @@ in {
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
WorkingDirectory = cfg.home; WorkingDirectory = cfg.home;
Environment = "PYTHONPATH=${cfg.package}/lib/python2.7/site-packages:${pkgs.python27Packages.future}/lib/python2.7/site-packages";
# NOTE: call twistd directly with stdout logging for systemd # NOTE: call twistd directly with stdout logging for systemd
#ExecStart = "${cfg.package}/bin/buildbot-worker start --nodaemon ${cfg.buildbotDir}"; ExecStart = "${python.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}";
ExecStart = "${pkgs.python27Packages.twisted}/bin/twistd -n -l - -y ${cfg.buildbotDir}/buildbot.tac";
}; };
}; };

View File

@ -7,7 +7,7 @@
# to be set. # to be set.
# #
# For further information please consult the documentation in the # For further information please consult the documentation in the
# upstream repository at: https://github.com/aprilabank/journaldriver/ # upstream repository at: https://github.com/tazjin/journaldriver/
{ config, lib, pkgs, ...}: { config, lib, pkgs, ...}:

View File

@ -52,7 +52,7 @@ in
enable = mkOption { enable = mkOption {
type = types.bool; type = types.bool;
default = cfg.rspamd.enable; default = false;
description = "Whether to run the rmilter daemon."; description = "Whether to run the rmilter daemon.";
}; };

View File

@ -159,7 +159,7 @@ in
services.rspamd = { services.rspamd = {
enable = mkEnableOption "Whether to run the rspamd daemon."; enable = mkEnableOption "rspamd, the Rapid spam filtering system";
debug = mkOption { debug = mkOption {
type = types.bool; type = types.bool;

View File

@ -399,8 +399,8 @@ in
systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ]; systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
systemd.services.nix-daemon = systemd.services.nix-daemon =
{ path = [ nix pkgs.utillinux ] { path = [ nix pkgs.utillinux config.programs.ssh.package ]
++ optionals cfg.distributedBuilds [ config.programs.ssh.package pkgs.gzip ] ++ optionals cfg.distributedBuilds [ pkgs.gzip ]
++ optionals (!isNix20) [ pkgs.openssl.bin ]; ++ optionals (!isNix20) [ pkgs.openssl.bin ];
environment = cfg.envVars environment = cfg.envVars

View File

@ -40,6 +40,8 @@ in
systemd.services.nix-optimise = systemd.services.nix-optimise =
{ description = "Nix Store Optimiser"; { description = "Nix Store Optimiser";
# No point running it inside a nixos-container. It should be on the host instead.
unitConfig.ConditionVirtualization = "!container";
serviceConfig.ExecStart = "${config.nix.package}/bin/nix-store --optimise"; serviceConfig.ExecStart = "${config.nix.package}/bin/nix-store --optimise";
startAt = optionals cfg.automatic cfg.dates; startAt = optionals cfg.automatic cfg.dates;
}; };

View File

@ -5,7 +5,7 @@ with lib;
let let
cfg = config.services.redmine; cfg = config.services.redmine;
bundle = "${pkgs.redmine}/share/redmine/bin/bundle"; bundle = "${cfg.package}/share/redmine/bin/bundle";
databaseYml = pkgs.writeText "database.yml" '' databaseYml = pkgs.writeText "database.yml" ''
production: production:
@ -15,6 +15,7 @@ let
port: ${toString cfg.database.port} port: ${toString cfg.database.port}
username: ${cfg.database.user} username: ${cfg.database.user}
password: #dbpass# password: #dbpass#
${optionalString (cfg.database.socket != null) "socket: ${cfg.database.socket}"}
''; '';
configurationYml = pkgs.writeText "configuration.yml" '' configurationYml = pkgs.writeText "configuration.yml" ''
@ -29,6 +30,19 @@ let
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
unpackTheme = unpack "theme";
unpackPlugin = unpack "plugin";
unpack = id: (name: source:
pkgs.stdenv.mkDerivation {
name = "redmine-${id}-${name}";
buildInputs = [ pkgs.unzip ];
buildCommand = ''
mkdir -p $out
cd $out
unpackFile ${source}
'';
});
in in
{ {
@ -40,6 +54,14 @@ in
description = "Enable the Redmine service."; description = "Enable the Redmine service.";
}; };
package = mkOption {
type = types.package;
default = pkgs.redmine;
defaultText = "pkgs.redmine";
description = "Which Redmine package to use.";
example = "pkgs.redmine.override { ruby = pkgs.ruby_2_3; }";
};
user = mkOption { user = mkOption {
type = types.str; type = types.str;
default = "redmine"; default = "redmine";
@ -52,6 +74,12 @@ in
description = "Group under which Redmine is ran."; description = "Group under which Redmine is ran.";
}; };
port = mkOption {
type = types.int;
default = 3000;
description = "Port on which Redmine is ran.";
};
stateDir = mkOption { stateDir = mkOption {
type = types.str; type = types.str;
default = "/var/lib/redmine"; default = "/var/lib/redmine";
@ -66,6 +94,41 @@ in
See https://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration See https://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
''; '';
example = literalExample ''
email_delivery:
delivery_method: smtp
smtp_settings:
address: mail.example.com
port: 25
'';
};
themes = mkOption {
type = types.attrsOf types.path;
default = {};
description = "Set of themes.";
example = literalExample ''
{
dkuk-redmine_alex_skin = builtins.fetchurl {
url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip;
sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl";
};
}
'';
};
plugins = mkOption {
type = types.attrsOf types.path;
default = {};
description = "Set of plugins.";
example = literalExample ''
{
redmine_env_auth = builtins.fetchurl {
url = https://github.com/Intera/redmine_env_auth/archive/0.6.zip;
sha256 = "0yyr1yjd8gvvh832wdc8m3xfnhhxzk2pk3gm2psg5w9jdvd6skak";
};
}
'';
}; };
database = { database = {
@ -78,7 +141,7 @@ in
host = mkOption { host = mkOption {
type = types.str; type = types.str;
default = "127.0.0.1"; default = (if cfg.database.socket != null then "localhost" else "127.0.0.1");
description = "Database host address."; description = "Database host address.";
}; };
@ -119,6 +182,13 @@ in
<option>database.user</option>. <option>database.user</option>.
''; '';
}; };
socket = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/mysqld/mysqld.sock";
description = "Path to the unix socket file to use for authentication.";
};
}; };
}; };
}; };
@ -126,17 +196,20 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{ assertion = cfg.database.passwordFile != null || cfg.database.password != ""; { assertion = cfg.database.passwordFile != null || cfg.database.password != "" || cfg.database.socket != null;
message = "either services.redmine.database.passwordFile or services.redmine.database.password must be set"; message = "one of services.redmine.database.socket, services.redmine.database.passwordFile, or services.redmine.database.password must be set";
}
{ assertion = cfg.database.socket != null -> (cfg.database.type == "mysql2");
message = "Socket authentication is only available for the mysql2 database type";
} }
]; ];
environment.systemPackages = [ pkgs.redmine ]; environment.systemPackages = [ cfg.package ];
systemd.services.redmine = { systemd.services.redmine = {
after = [ "network.target" (if cfg.database.type == "mysql2" then "mysql.service" else "postgresql.service") ]; after = [ "network.target" (if cfg.database.type == "mysql2" then "mysql.service" else "postgresql.service") ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
environment.HOME = "${pkgs.redmine}/share/redmine"; environment.HOME = "${cfg.package}/share/redmine";
environment.RAILS_ENV = "production"; environment.RAILS_ENV = "production";
environment.RAILS_CACHE = "${cfg.stateDir}/cache"; environment.RAILS_CACHE = "${cfg.stateDir}/cache";
environment.REDMINE_LANG = "en"; environment.REDMINE_LANG = "en";
@ -151,43 +224,80 @@ in
subversion subversion
]; ];
preStart = '' preStart = ''
# start with a fresh config directory every time # ensure cache directory exists for db:migrate command
rm -rf ${cfg.stateDir}/config mkdir -p "${cfg.stateDir}/cache"
cp -r ${pkgs.redmine}/share/redmine/config.dist ${cfg.stateDir}/config
# create the basic state directory layout pkgs.redmine expects # create the basic directory layout the redmine package expects
mkdir -p /run/redmine mkdir -p /run/redmine/public
for i in config files log plugins tmp; do for i in config files log plugins tmp; do
mkdir -p ${cfg.stateDir}/$i mkdir -p "${cfg.stateDir}/$i"
ln -fs ${cfg.stateDir}/$i /run/redmine/$i ln -fs "${cfg.stateDir}/$i" /run/redmine/
done done
# ensure cache directory exists for db:migrate command for i in plugin_assets themes; do
mkdir -p ${cfg.stateDir}/cache mkdir -p "${cfg.stateDir}/public/$i"
ln -fs "${cfg.stateDir}/public/$i" /run/redmine/public/
done
# start with a fresh config directory
# the config directory is copied instead of linked as some mutable data is stored in there
rm -rf "${cfg.stateDir}/config/"*
cp -r ${cfg.package}/share/redmine/config.dist/* "${cfg.stateDir}/config/"
# link in the application configuration # link in the application configuration
ln -fs ${configurationYml} ${cfg.stateDir}/config/configuration.yml ln -fs ${configurationYml} "${cfg.stateDir}/config/configuration.yml"
chmod -R ug+rwX,o-rwx+x ${cfg.stateDir}/
# handle database.passwordFile # link in all user specified themes
rm -rf "${cfg.stateDir}/public/themes/"*
for theme in ${concatStringsSep " " (mapAttrsToList unpackTheme cfg.themes)}; do
ln -fs $theme/* "${cfg.stateDir}/public/themes"
done
# link in redmine provided themes
ln -sf ${cfg.package}/share/redmine/public/themes.dist/* "${cfg.stateDir}/public/themes/"
# link in all user specified plugins
rm -rf "${cfg.stateDir}/plugins/"*
for plugin in ${concatStringsSep " " (mapAttrsToList unpackPlugin cfg.plugins)}; do
ln -fs $plugin/* "${cfg.stateDir}/plugins/''${plugin##*-redmine-plugin-}"
done
# ensure correct permissions for most files
chmod -R ug+rwX,o-rwx+x "${cfg.stateDir}/"
# handle database.passwordFile & permissions
DBPASS=$(head -n1 ${cfg.database.passwordFile}) DBPASS=$(head -n1 ${cfg.database.passwordFile})
cp -f ${databaseYml} ${cfg.stateDir}/config/database.yml cp -f ${databaseYml} "${cfg.stateDir}/config/database.yml"
sed -e "s,#dbpass#,$DBPASS,g" -i ${cfg.stateDir}/config/database.yml sed -e "s,#dbpass#,$DBPASS,g" -i "${cfg.stateDir}/config/database.yml"
chmod 440 ${cfg.stateDir}/config/database.yml chmod 440 "${cfg.stateDir}/config/database.yml"
# generate a secret token if required # generate a secret token if required
if ! test -e "${cfg.stateDir}/config/initializers/secret_token.rb"; then if ! test -e "${cfg.stateDir}/config/initializers/secret_token.rb"; then
${bundle} exec rake generate_secret_token ${bundle} exec rake generate_secret_token
chmod 440 ${cfg.stateDir}/config/initializers/secret_token.rb chmod 440 "${cfg.stateDir}/config/initializers/secret_token.rb"
fi fi
# ensure everything is owned by ${cfg.user}
chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir}
${bundle} exec rake db:migrate # ensure everything is owned by ${cfg.user}
${bundle} exec rake redmine:load_default_data chown -R ${cfg.user}:${cfg.group} "${cfg.stateDir}"
# execute redmine required commands prior to starting the application
# NOTE: su required in case using mysql socket authentication
/run/wrappers/bin/su -s ${pkgs.bash}/bin/bash -m -l redmine -c '${bundle} exec rake db:migrate'
/run/wrappers/bin/su -s ${pkgs.bash}/bin/bash -m -l redmine -c '${bundle} exec rake redmine:load_default_data'
# log files don't exist until after first command has been executed
# correct ownership of files generated by calling exec rake ...
chown -R ${cfg.user}:${cfg.group} "${cfg.stateDir}/log"
''; '';
serviceConfig = { serviceConfig = {
@ -196,13 +306,13 @@ in
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
TimeoutSec = "300"; TimeoutSec = "300";
WorkingDirectory = "${pkgs.redmine}/share/redmine"; WorkingDirectory = "${cfg.package}/share/redmine";
ExecStart="${bundle} exec rails server webrick -e production -P ${cfg.stateDir}/redmine.pid"; ExecStart="${bundle} exec rails server webrick -e production -p ${toString cfg.port} -P '${cfg.stateDir}/redmine.pid'";
}; };
}; };
users.extraUsers = optionalAttrs (cfg.user == "redmine") (singleton users.users = optionalAttrs (cfg.user == "redmine") (singleton
{ name = "redmine"; { name = "redmine";
group = cfg.group; group = cfg.group;
home = cfg.stateDir; home = cfg.stateDir;
@ -210,7 +320,7 @@ in
uid = config.ids.uids.redmine; uid = config.ids.uids.redmine;
}); });
users.extraGroups = optionalAttrs (cfg.group == "redmine") (singleton users.groups = optionalAttrs (cfg.group == "redmine") (singleton
{ name = "redmine"; { name = "redmine";
gid = config.ids.gids.redmine; gid = config.ids.gids.redmine;
}); });

View File

@ -123,15 +123,13 @@ let
systemd.services."prometheus-${name}-exporter" = mkMerge ([{ systemd.services."prometheus-${name}-exporter" = mkMerge ([{
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
serviceConfig = { serviceConfig.Restart = mkDefault "always";
Restart = mkDefault "always"; serviceConfig.PrivateTmp = mkDefault true;
PrivateTmp = mkDefault true; serviceConfig.WorkingDirectory = mkDefault /tmp;
WorkingDirectory = mkDefault /tmp; } serviceOpts ] ++ optional (serviceOpts.serviceConfig.DynamicUser or false) {
} // mkIf (!(serviceOpts.serviceConfig.DynamicUser or false)) { serviceConfig.User = conf.user;
User = conf.user; serviceConfig.Group = conf.group;
Group = conf.group; });
};
} serviceOpts ]);
}; };
in in
{ {
@ -172,5 +170,8 @@ in
}) exporterOpts) }) exporterOpts)
); );
meta.doc = ./exporters.xml; meta = {
doc = ./exporters.xml;
maintainers = [ maintainers.willibutz ];
};
} }

View File

@ -69,6 +69,7 @@ in
path = [ pkgs.varnish ]; path = [ pkgs.varnish ];
serviceConfig = { serviceConfig = {
DynamicUser = true; DynamicUser = true;
RestartSec = mkDefault 1;
ExecStart = '' ExecStart = ''
${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \ ${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \

View File

@ -5,7 +5,7 @@ with lib;
{ {
options = { options = {
services.pptpd = { services.pptpd = {
enable = mkEnableOption "Whether pptpd should be run on startup."; enable = mkEnableOption "pptpd, the Point-to-Point Tunneling Protocol daemon";
serverIp = mkOption { serverIp = mkOption {
type = types.string; type = types.string;

View File

@ -5,7 +5,7 @@ with lib;
{ {
options = { options = {
services.xl2tpd = { services.xl2tpd = {
enable = mkEnableOption "Whether xl2tpd should be run on startup."; enable = mkEnableOption "xl2tpd, the Layer 2 Tunnelling Protocol Daemon";
serverIp = mkOption { serverIp = mkOption {
type = types.string; type = types.string;

View File

@ -36,7 +36,7 @@ in
services.xrdp = { services.xrdp = {
enable = mkEnableOption "Whether xrdp should be run on startup."; enable = mkEnableOption "xrdp, the Remote Desktop Protocol server";
package = mkOption { package = mkOption {
type = types.package; type = types.package;

View File

@ -250,7 +250,7 @@ in
drivers = mkOption { drivers = mkOption {
type = types.listOf types.path; type = types.listOf types.path;
default = []; default = [];
example = literalExample "[ pkgs.gutenprint pkgs.hplip pkgs.splix ]"; example = literalExample "with pkgs; [ gutenprint hplip splix cups-googlecloudprint ]";
description = '' description = ''
CUPS drivers to use. Drivers provided by CUPS, cups-filters, CUPS drivers to use. Drivers provided by CUPS, cups-filters,
Ghostscript and Samba are added unconditionally. If this list contains Ghostscript and Samba are added unconditionally. If this list contains

View File

@ -16,7 +16,7 @@ in
services.saslauthd = { services.saslauthd = {
enable = mkEnableOption "Whether to enable the Cyrus SASL authentication daemon."; enable = mkEnableOption "saslauthd, the Cyrus SASL authentication daemon";
package = mkOption { package = mkOption {
default = pkgs.cyrus_sasl.bin; default = pkgs.cyrus_sasl.bin;

View File

@ -114,6 +114,21 @@ in {
''; '';
}; };
poolConfig = mkOption {
type = types.lines;
default = ''
pm = dynamic
pm.max_children = 32
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500
'';
description = ''
Options for nextcloud's PHP pool. See the documentation on <literal>php-fpm.conf</literal> for details on configuration directives.
'';
};
config = { config = {
dbtype = mkOption { dbtype = mkOption {
type = types.enum [ "sqlite" "pgsql" "mysql" ]; type = types.enum [ "sqlite" "pgsql" "mysql" ];
@ -339,11 +354,7 @@ in {
listen.group = nginx listen.group = nginx
user = nextcloud user = nextcloud
group = nginx group = nginx
pm = dynamic ${cfg.poolConfig}
pm.max_children = 32
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
env[NEXTCLOUD_CONFIG_DIR] = ${cfg.home}/config env[NEXTCLOUD_CONFIG_DIR] = ${cfg.home}/config
env[PATH] = /run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin env[PATH] = /run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin
${phpAdminValues} ${phpAdminValues}

View File

@ -133,7 +133,6 @@ in {
fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell-fonts ]; fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell-fonts ];
services.xserver.displayManager.gdm.enable = mkDefault true;
services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ]; services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ];
services.xserver.displayManager.sessionCommands = '' services.xserver.displayManager.sessionCommands = ''

View File

@ -185,10 +185,8 @@ in
target = "X11/xkb"; target = "X11/xkb";
}; };
environment.variables = {
# Enable GTK applications to load SVG icons # Enable GTK applications to load SVG icons
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
};
fonts.fonts = with pkgs; [ noto-fonts hack-font ]; fonts.fonts = with pkgs; [ noto-fonts hack-font ];
fonts.fontconfig.defaultFonts = { fonts.fontconfig.defaultFonts = {

View File

@ -101,10 +101,11 @@ in
]; ];
environment.variables = { environment.variables = {
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ]; GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
}; };
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
services.xserver.desktopManager.session = [{ services.xserver.desktopManager.session = [{
name = "xfce"; name = "xfce";
bgSupport = true; bgSupport = true;

View File

@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.displayManager.startx;
in
{
###### interface
options = {
services.xserver.displayManager.startx = {
enable = mkOption {
default = false;
description = ''
Whether to enable the dummy "startx" pseudo-display manager,
which allows users to start X manually via the "startx" command
from a vt shell. The X server runs under the user's id, not as root.
The user must provide a ~/.xinintrc file containing session startup
commands, see startx(1). This is not autmatically generated
from the desktopManager and windowManager settings.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
services.xserver = {
exportConfiguration = true;
displayManager.job.execCmd = "";
displayManager.lightdm.enable = lib.mkForce false;
};
systemd.services.display-manager.enable = false;
environment.systemPackages = with pkgs; [ xorg.xinit ];
};
}

View File

@ -0,0 +1,45 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.gdk-pixbuf;
# Get packages to generate the cache for. We always include gdk_pixbuf.
effectivePackages = unique ([pkgs.gdk_pixbuf] ++ cfg.modulePackages);
# Generate the cache file by running gdk-pixbuf-query-loaders for each
# package and concatenating the results.
loadersCache = pkgs.runCommand "gdk-pixbuf-loaders.cache" {} ''
(
for package in ${concatStringsSep " " effectivePackages}; do
module_dir="$package/${pkgs.gdk_pixbuf.moduleDir}"
if [[ ! -d $module_dir ]]; then
echo "Warning (services.xserver.gdk-pixbuf): missing module directory $module_dir" 1>&2
continue
fi
GDK_PIXBUF_MODULEDIR="$module_dir" \
${pkgs.gdk_pixbuf.dev}/bin/gdk-pixbuf-query-loaders
done
) > "$out"
'';
in
{
options = {
services.xserver.gdk-pixbuf.modulePackages = mkOption {
type = types.listOf types.package;
default = [ ];
description = "Packages providing GDK-Pixbuf modules, for cache generation.";
};
};
# If there is any package configured in modulePackages, we generate the
# loaders.cache based on that and set the environment variable
# GDK_PIXBUF_MODULE_FILE to point to it.
config = mkIf (cfg.modulePackages != []) {
environment.variables = {
GDK_PIXBUF_MODULE_FILE = "${loadersCache}";
};
};
}

View File

@ -17,7 +17,7 @@ let
return 0 return 0
else else
local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g') local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g')
local dev=$(blkid --uuid $uuid) blkid --uuid $uuid >/dev/null
return $? return $?
fi fi
} }

View File

@ -251,9 +251,9 @@ let
postInstall = '' postInstall = ''
echo checking syntax echo checking syntax
# check both with bash # check both with bash
${pkgs.bash}/bin/sh -n $target ${pkgs.buildPackages.bash}/bin/sh -n $target
# and with ash shell, just in case # and with ash shell, just in case
${extraUtils}/bin/ash -n $target ${pkgs.buildPackages.busybox}/bin/ash -n $target
''; '';
inherit udevRules extraUtils modulesClosure; inherit udevRules extraUtils modulesClosure;

View File

@ -85,7 +85,8 @@ let
after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ]; after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ];
before = [ "network.target" "shutdown.target" ]; before = [ "network.target" "shutdown.target" ];
wants = [ "network.target" ]; wants = [ "network.target" ];
partOf = map (i: "network-addresses-${i.name}.service") interfaces; # exclude bridges from the partOf relationship to fix container networking bug #47210
partOf = map (i: "network-addresses-${i.name}.service") (filter (i: !(hasAttr i.name cfg.bridges)) interfaces);
conflicts = [ "shutdown.target" ]; conflicts = [ "shutdown.target" ];
wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target"; wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target";

View File

@ -25,7 +25,7 @@ in {
systemd.services.qemu-guest-agent = { systemd.services.qemu-guest-agent = {
description = "Run the QEMU Guest Agent"; description = "Run the QEMU Guest Agent";
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.kvm.ga}/bin/qemu-ga"; ExecStart = "${pkgs.qemu.ga}/bin/qemu-ga";
Restart = "always"; Restart = "always";
RestartSec = 0; RestartSec = 0;
}; };

View File

@ -12,7 +12,7 @@ in {
virtualbox = { virtualbox = {
baseImageSize = mkOption { baseImageSize = mkOption {
type = types.int; type = types.int;
default = 100 * 1024; default = 10 * 1024;
description = '' description = ''
The size of the VirtualBox base image in MiB. The size of the VirtualBox base image in MiB.
''; '';

View File

@ -5,7 +5,7 @@ let
in { in {
options = { options = {
services.xe-guest-utilities = { services.xe-guest-utilities = {
enable = mkEnableOption "Whether to enable the Xen guest utilities daemon."; enable = mkEnableOption "the Xen guest utilities daemon";
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -257,7 +257,7 @@ in rec {
tests.boot = callSubTests tests/boot.nix {}; tests.boot = callSubTests tests/boot.nix {};
tests.boot-stage1 = callTest tests/boot-stage1.nix {}; tests.boot-stage1 = callTest tests/boot-stage1.nix {};
tests.borgbackup = callTest tests/borgbackup.nix {}; tests.borgbackup = callTest tests/borgbackup.nix {};
tests.buildbot = callTest tests/buildbot.nix {}; tests.buildbot = callSubTests tests/buildbot.nix {};
tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {}; tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {};
tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {}; tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {};
tests.certmgr = callSubTests tests/certmgr.nix {}; tests.certmgr = callSubTests tests/certmgr.nix {};
@ -390,12 +390,14 @@ in rec {
tests.predictable-interface-names = callSubTests tests/predictable-interface-names.nix {}; tests.predictable-interface-names = callSubTests tests/predictable-interface-names.nix {};
tests.printing = callTest tests/printing.nix {}; tests.printing = callTest tests/printing.nix {};
tests.prometheus = callTest tests/prometheus.nix {}; tests.prometheus = callTest tests/prometheus.nix {};
tests.prometheus-exporters = callTest tests/prometheus-exporters.nix {};
tests.prosody = callTest tests/prosody.nix {}; tests.prosody = callTest tests/prosody.nix {};
tests.proxy = callTest tests/proxy.nix {}; tests.proxy = callTest tests/proxy.nix {};
tests.quagga = callTest tests/quagga.nix {}; tests.quagga = callTest tests/quagga.nix {};
tests.quake3 = callTest tests/quake3.nix {}; tests.quake3 = callTest tests/quake3.nix {};
tests.rabbitmq = callTest tests/rabbitmq.nix {}; tests.rabbitmq = callTest tests/rabbitmq.nix {};
tests.radicale = callTest tests/radicale.nix {}; tests.radicale = callTest tests/radicale.nix {};
tests.redmine = callTest tests/redmine.nix {};
tests.rspamd = callSubTests tests/rspamd.nix {}; tests.rspamd = callSubTests tests/rspamd.nix {};
tests.runInMachine = callTest tests/run-in-machine.nix {}; tests.runInMachine = callTest tests/run-in-machine.nix {};
tests.rxe = callTest tests/rxe.nix {}; tests.rxe = callTest tests/rxe.nix {};

View File

@ -1,13 +1,17 @@
# Test ensures buildbot master comes up correctly and workers can connect { system ? builtins.currentSystem }:
import ./make-test.nix ({ pkgs, ... } : { with import ../lib/testing.nix { inherit system; };
let
# Test ensures buildbot master comes up correctly and workers can connect
mkBuildbotTest = python: makeTest {
name = "buildbot"; name = "buildbot";
nodes = { nodes = {
bbmaster = { pkgs, ... }: { bbmaster = { pkgs, ... }: {
services.buildbot-master = { services.buildbot-master = {
enable = true; enable = true;
package = pkgs.buildbot-full; package = python.pkgs.buildbot-full;
# NOTE: use fake repo due to no internet in hydra ci # NOTE: use fake repo due to no internet in hydra ci
factorySteps = [ factorySteps = [
@ -19,7 +23,7 @@ import ./make-test.nix ({ pkgs, ... } : {
]; ];
}; };
networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ];
environment.systemPackages = with pkgs; [ git buildbot-full ]; environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-full ];
}; };
bbworker = { pkgs, ... }: { bbworker = { pkgs, ... }: {
@ -27,7 +31,7 @@ import ./make-test.nix ({ pkgs, ... } : {
enable = true; enable = true;
masterUrl = "bbmaster:9989"; masterUrl = "bbmaster:9989";
}; };
environment.systemPackages = with pkgs; [ git buildbot-worker ]; environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-worker ];
}; };
gitrepo = { pkgs, ... }: { gitrepo = { pkgs, ... }: {
@ -93,19 +97,21 @@ import ./make-test.nix ({ pkgs, ... } : {
# Test buildbot daemon mode # Test buildbot daemon mode
# NOTE: daemon mode tests disabled due to broken PYTHONPATH child inheritence $bbmaster->execute("buildbot create-master /tmp");
# $bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg");
#$bbmaster->execute("buildbot create-master /tmp"); $bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg");
#$bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); $bbmaster->execute("buildbot start /tmp");
#$bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); $bbworker->execute("nc -z bbmaster 8011");
#$bbmaster->execute("buildbot start /tmp"); $bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/;
#$bbworker->execute("nc -z bbmaster 8011"); $bbmaster->execute("buildbot stop /tmp");
#$bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; $bbworker->fail("nc -z bbmaster 8011");
#$bbmaster->execute("buildbot stop /tmp");
#$bbworker->fail("nc -z bbmaster 8011");
''; '';
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ];
}) };
in {
python2 = mkBuildbotTest pkgs.python2;
python3 = mkBuildbotTest pkgs.python3;
}

View File

@ -40,8 +40,7 @@ import ./make-test.nix ({ pkgs, lib, ... }:
subtest "CodiMD sqlite", sub { subtest "CodiMD sqlite", sub {
$codimdSqlite->waitForUnit("codimd.service"); $codimdSqlite->waitForUnit("codimd.service");
$codimdSqlite->waitForOpenPort(3000); $codimdSqlite->waitForOpenPort(3000);
$codimdSqlite->sleep(10); # avoid 503 during startup $codimdSqlite->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
$codimdSqlite->succeed("curl -sSf http://localhost:3000/new");
}; };
subtest "CodiMD postgres", sub { subtest "CodiMD postgres", sub {
@ -49,8 +48,7 @@ import ./make-test.nix ({ pkgs, lib, ... }:
$codimdPostgres->waitForUnit("codimd.service"); $codimdPostgres->waitForUnit("codimd.service");
$codimdPostgres->waitForOpenPort(5432); $codimdPostgres->waitForOpenPort(5432);
$codimdPostgres->waitForOpenPort(3000); $codimdPostgres->waitForOpenPort(3000);
$codimdPostgres->sleep(10); # avoid 503 during startup $codimdPostgres->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
$codimdPostgres->succeed("curl -sSf http://localhost:3000/new");
}; };
''; '';
}) })

View File

@ -0,0 +1,297 @@
import ./make-test.nix ({ lib, pkgs, ... }:
let
escape' = str: lib.replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str;
/*
* The attrset `exporterTests` contains one attribute
* for each exporter test. Each of these attributes
* is expected to be an attrset containing:
*
* `exporterConfig`:
* this attribute set contains config for the exporter itself
*
* `exporterTest`
* this attribute set contains test instructions
*
* `metricProvider` (optional)
* this attribute contains additional machine config
*
* Example:
* exporterTests.<exporterName> = {
* exporterConfig = {
* enable = true;
* };
* metricProvider = {
* services.<metricProvider>.enable = true;
* };
* exporterTest = ''
* waitForUnit("prometheus-<exporterName>-exporter.service");
* waitForOpenPort("1234");
* succeed("curl -sSf 'localhost:1234/metrics'");
* '';
* };
*
* # this would generate the following test config:
*
* nodes.<exporterName> = {
* services.prometheus.<exporterName> = {
* enable = true;
* };
* services.<metricProvider>.enable = true;
* };
*
* testScript = ''
* $<exporterName>->start();
* $<exporterName>->waitForUnit("prometheus-<exporterName>-exporter.service");
* $<exporterName>->waitForOpenPort("1234");
* $<exporterName>->succeed("curl -sSf 'localhost:1234/metrics'");
* $<exporterName>->shutdown();
* '';
*/
exporterTests = {
blackbox = {
exporterConfig = {
enable = true;
configFile = pkgs.writeText "config.yml" (builtins.toJSON {
modules.icmp_v6 = {
prober = "icmp";
icmp.preferred_ip_protocol = "ip6";
};
});
};
exporterTest = ''
waitForUnit("prometheus-blackbox-exporter.service");
waitForOpenPort(9115);
succeed("curl -sSf 'http://localhost:9115/probe?target=localhost&module=icmp_v6' | grep -q 'probe_success 1'");
'';
};
collectd = {
exporterConfig = {
enable = true;
extraFlags = [ "--web.collectd-push-path /collectd" ];
};
exporterTest =let postData = escape' ''
[{
"values":[23],
"dstypes":["gauge"],
"type":"gauge",
"interval":1000,
"host":"testhost",
"plugin":"testplugin",
"time":$(date +%s)
}]
''; in ''
waitForUnit("prometheus-collectd-exporter.service");
waitForOpenPort(9103);
succeed("curl -sSfH 'Content-Type: application/json' -X POST --data \"${postData}\" localhost:9103/collectd");
succeed("curl -sSf localhost:9103/metrics | grep -q 'collectd_testplugin_gauge{instance=\"testhost\"} 23'");
'';
};
dnsmasq = {
exporterConfig = {
enable = true;
leasesPath = "/var/lib/dnsmasq/dnsmasq.leases";
};
metricProvider = {
services.dnsmasq.enable = true;
};
exporterTest = ''
waitForUnit("prometheus-dnsmasq-exporter.service");
waitForOpenPort(9153);
succeed("curl -sSf http://localhost:9153/metrics | grep -q 'dnsmasq_leases 0'");
'';
};
dovecot = {
exporterConfig = {
enable = true;
scopes = [ "global" ];
socketPath = "/var/run/dovecot2/old-stats";
user = "root"; # <- don't use user root in production
};
metricProvider = {
services.dovecot2.enable = true;
};
exporterTest = ''
waitForUnit("prometheus-dovecot-exporter.service");
waitForOpenPort(9166);
succeed("curl -sSf http://localhost:9166/metrics | grep -q 'dovecot_up{scope=\"global\"} 1'");
'';
};
fritzbox = { # TODO add proper test case
exporterConfig = {
enable = true;
};
exporterTest = ''
waitForUnit("prometheus-fritzbox-exporter.service");
waitForOpenPort(9133);
succeed("curl -sSf http://localhost:9133/metrics | grep -q 'fritzbox_exporter_collect_errors 0'");
'';
};
json = {
exporterConfig = {
enable = true;
url = "http://localhost";
configFile = pkgs.writeText "json-exporter-conf.json" (builtins.toJSON [{
name = "json_test_metric";
path = "$.test";
}]);
};
metricProvider = {
systemd.services.prometheus-json-exporter.after = [ "nginx.service" ];
services.nginx = {
enable = true;
virtualHosts.localhost.locations."/".extraConfig = ''
return 200 "{\"test\":1}";
'';
};
};
exporterTest = ''
waitForUnit("nginx.service");
waitForOpenPort(80);
waitForUnit("prometheus-json-exporter.service");
waitForOpenPort(7979);
succeed("curl -sSf localhost:7979/metrics | grep -q 'json_test_metric 1'");
'';
};
nginx = {
exporterConfig = {
enable = true;
};
metricProvider = {
services.nginx = {
enable = true;
statusPage = true;
virtualHosts."/".extraConfig = "return 204;";
};
};
exporterTest = ''
waitForUnit("nginx.service")
waitForUnit("prometheus-nginx-exporter.service")
waitForOpenPort(9113)
succeed("curl -sSf http://localhost:9113/metrics | grep -q 'nginx_up 1'")
'';
};
node = {
exporterConfig = {
enable = true;
};
exporterTest = ''
waitForUnit("prometheus-node-exporter.service");
waitForOpenPort(9100);
succeed("curl -sSf http://localhost:9100/metrics | grep -q 'node_exporter_build_info{.\\+} 1'");
'';
};
postfix = {
exporterConfig = {
enable = true;
};
metricProvider = {
services.postfix.enable = true;
};
exporterTest = ''
waitForUnit("prometheus-postfix-exporter.service");
waitForOpenPort(9154);
succeed("curl -sSf http://localhost:9154/metrics | grep -q 'postfix_smtpd_connects_total 0'");
'';
};
snmp = {
exporterConfig = {
enable = true;
configuration.default = {
version = 2;
auth.community = "public";
};
};
exporterTest = ''
waitForUnit("prometheus-snmp-exporter.service");
waitForOpenPort(9116);
succeed("curl -sSf localhost:9116/metrics | grep -q 'snmp_request_errors_total 0'");
'';
};
surfboard = {
exporterConfig = {
enable = true;
modemAddress = "localhost";
};
metricProvider = {
systemd.services.prometheus-surfboard-exporter.after = [ "nginx.service" ];
services.nginx = {
enable = true;
virtualHosts.localhost.locations."/cgi-bin/status".extraConfig = ''
return 204;
'';
};
};
exporterTest = ''
waitForUnit("nginx.service");
waitForOpenPort(80);
waitForUnit("prometheus-surfboard-exporter.service");
waitForOpenPort(9239);
succeed("curl -sSf localhost:9239/metrics | grep -q 'surfboard_up 1'");
'';
};
varnish = {
exporterConfig = {
enable = true;
instance = "/var/spool/varnish/varnish";
group = "varnish";
};
metricProvider = {
systemd.services.prometheus-varnish-exporter.after = [
"varnish.service"
];
services.varnish = {
enable = true;
config = ''
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "80";
}
'';
};
};
exporterTest = ''
waitForUnit("prometheus-varnish-exporter.service");
waitForOpenPort(9131);
succeed("curl -sSf http://localhost:9131/metrics | grep -q 'varnish_up 1'");
'';
};
};
nodes = lib.mapAttrs (exporter: testConfig: lib.mkMerge [{
services.prometheus.exporters.${exporter} = testConfig.exporterConfig;
} testConfig.metricProvider or {}]) exporterTests;
testScript = lib.concatStrings (lib.mapAttrsToList (exporter: testConfig: (''
subtest "${exporter}", sub {
${"$"+exporter}->start();
${lib.concatStringsSep " " (map (line: ''
${"$"+exporter}->${line};
'') (lib.splitString "\n" (lib.removeSuffix "\n" testConfig.exporterTest)))}
${"$"+exporter}->shutdown();
};
'')) exporterTests);
in
{
name = "prometheus-exporters";
inherit nodes testScript;
meta = with lib.maintainers; {
maintainers = [ willibutz ];
};
})

40
nixos/tests/redmine.nix Normal file
View File

@ -0,0 +1,40 @@
import ./make-test.nix ({ pkgs, lib, ... }:
{
name = "redmine";
meta.maintainers = [ lib.maintainers.aanderse ];
machine =
{ config, pkgs, ... }:
{ services.mysql.enable = true;
services.mysql.package = pkgs.mariadb;
services.mysql.ensureDatabases = [ "redmine" ];
services.mysql.ensureUsers = [
{ name = "redmine";
ensurePermissions = { "redmine.*" = "ALL PRIVILEGES"; };
}
];
services.redmine.enable = true;
services.redmine.database.socket = "/run/mysqld/mysqld.sock";
services.redmine.plugins = {
redmine_env_auth = pkgs.fetchurl {
url = https://github.com/Intera/redmine_env_auth/archive/0.6.zip;
sha256 = "0yyr1yjd8gvvh832wdc8m3xfnhhxzk2pk3gm2psg5w9jdvd6skak";
};
};
services.redmine.themes = {
dkuk-redmine_alex_skin = pkgs.fetchurl {
url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip;
sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl";
};
};
};
testScript = ''
startAll;
$machine->waitForUnit('redmine.service');
$machine->waitForOpenPort('3000');
$machine->succeed("curl --fail http://localhost:3000/");
'';
})

View File

@ -3,13 +3,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nano-wallet-${version}"; name = "nano-wallet-${version}";
version = "16.1"; version = "16.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nanocurrency"; owner = "nanocurrency";
repo = "raiblocks"; repo = "raiblocks";
rev = "V${version}"; rev = "V${version}";
sha256 = "0sk9g4fv494a5w75vs5a3s5c139lxzz1svz0cn1hkhxqlmz8w081"; sha256 = "18zp4xl5iwwrnzrqzsygdrym5565v8dpfz0jxczw21896kw1i9i7";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "aeolus-${version}"; name = "aeolus-${version}";
version = "0.9.5"; version = "0.9.7";
src = fetchurl { src = fetchurl {
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
sha256 = "0wfp8ihldyq2dhdyy7ld7z0zzfvnwam1dvbxnpd9d6xgc4k3j4nv"; sha256 = "0lhbr95hmbfj8ynbcpawn7jzjbpvrkm6k2yda39yhqk1bzg38v2k";
}; };
buildInputs = [ buildInputs = [

View File

@ -7,12 +7,12 @@
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.2.2"; version = "2.3.0";
name = "audacity-${version}"; name = "audacity-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz"; url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
sha256 = "18q7i77ynihx7xp45lz2lv0k0wrh6736pcrivlpwrxjgbvyqx7km"; sha256 = "0pi7ksm8hfvwbn580z4kkc55sbaylrrr7v08s04dmdgfvil7y4ip";
}; };
preConfigure = /* we prefer system-wide libs */ '' preConfigure = /* we prefer system-wide libs */ ''

View File

@ -4,7 +4,7 @@
, gobjectIntrospection, wrapGAppsHook }: , gobjectIntrospection, wrapGAppsHook }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
version = "0.9.601"; version = "0.9.604";
name = "lollypop-${version}"; name = "lollypop-${version}";
format = "other"; format = "other";
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
url = "https://gitlab.gnome.org/World/lollypop"; url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
fetchSubmodules = true; fetchSubmodules = true;
sha256 = "029hyylwjsbwkw1v75nbkkmrncgz30y2qwdysmpz0xyb5q7x6zbj"; sha256 = "0pfljs5q0xzqll6dybslin4nr7w18bn1yi0xn79vh44zn3l0r8q4";
}; };
nativeBuildInputs = with python3.pkgs; [ nativeBuildInputs = with python3.pkgs; [

View File

@ -5,7 +5,7 @@
let let
version = "2.6"; version = "2.6";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "midisheetmusic"; name = "midisheetmusic-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/midisheetmusic/MidiSheetMusic-${version}-linux-src.tar.gz"; url = "mirror://sourceforge/midisheetmusic/MidiSheetMusic-${version}-linux-src.tar.gz";

View File

@ -29,11 +29,11 @@
# handle that. # handle that.
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "qmmp-1.2.3"; name = "qmmp-1.2.4";
src = fetchurl { src = fetchurl {
url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2"; url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2";
sha256 = "05lqmj22vr5ch1i0928d64ybdnn3qc66s9lgarx5s6x6ffr6589j"; sha256 = "0rmfd6h0186b6n4g079d8kshdmp3k5n8w06a1l41m4p3fgq08j92";
}; };
buildInputs = buildInputs =

View File

@ -126,6 +126,9 @@ stdenv.mkDerivation {
--prefix LD_LIBRARY_PATH : "$librarypath" \ --prefix LD_LIBRARY_PATH : "$librarypath" \
--prefix PATH : "${gnome3.zenity}/bin" --prefix PATH : "${gnome3.zenity}/bin"
# fix Icon line in the desktop file (#48062)
sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop"
# Desktop file # Desktop file
mkdir -p "$out/share/applications/" mkdir -p "$out/share/applications/"
cp "$out/share/spotify/spotify.desktop" "$out/share/applications/" cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"

View File

@ -5,11 +5,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "tetraproc-${version}"; name = "tetraproc-${version}";
version = "0.8.2"; version = "0.8.6";
src = fetchurl { src = fetchurl {
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
sha256 = "17y3vbm5f6h5cmh3yfxjgqz4xhfwpkla3lqfspnbm4ndlzmfpykv"; sha256 = "02155ljfwgvfgq9z258fb4z7jrz7qx022d054fj5gr0v007cv0r7";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -73,8 +73,8 @@ let
}; };
in stdenv.lib.mapAttrs common { in stdenv.lib.mapAttrs common {
atom = { atom = {
version = "1.31.0"; version = "1.31.2";
sha256 = "184vsj7qcpzwiq2v5kh8i21wfzhinhybxmr71y41sjqp78s2gy57"; sha256 = "1szx9p2nz1qzjpig0l8h4hj5mqwpjvkcynn8crh21drply4bpfr0";
}; };
atom-beta = { atom-beta = {

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "okteta-${version}"; name = "okteta-${version}";
version = "0.25.3"; version = "0.25.4";
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/okteta/${version}/src/${name}.tar.xz"; url = "mirror://kde/stable/okteta/${version}/src/${name}.tar.xz";
sha256 = "0mm6pmk7k9c581b12a3wl0ayhadvyymfzmscy9x32b391qy9inai"; sha256 = "0liar1xbns6mr6j320nyxqfii82i4ysp62hf3j6jg1112v874amf";
}; };
nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ]; nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ];

View File

@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }: { lib, fetchFromGitHub }:
rec { rec {
version = "8.1.0348"; version = "8.1.0450";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "vim"; owner = "vim";
repo = "vim"; repo = "vim";
rev = "v${version}"; rev = "v${version}";
sha256 = "0f18kpywnph708mvj1fpi06qb53nbhc26ngjh2kvfxwawn63k8ab"; sha256 = "1zhggpn4i704apfqn2kqr717kz9dvkjwnbmc3ydza621zjyrnxb2";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -2,7 +2,7 @@
gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret }: gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret }:
let let
version = "1.27.2"; version = "1.28.0";
channel = "stable"; channel = "stable";
plat = { plat = {
@ -12,9 +12,9 @@ let
}.${stdenv.hostPlatform.system}; }.${stdenv.hostPlatform.system};
sha256 = { sha256 = {
"i686-linux" = "33704d089b03c636e8c46d434068c97b66e5a9d323b991bd327067aa90e87afa"; "i686-linux" = "0f54py00lmw96x47nk823gwxxc9kr9haaa821ggi974ycr54af0y";
"x86_64-linux" = "11023c652dd89bde1b7fbc8a7dc04fd4f87df3bfe6952a1c0ad75ab861e3196d"; "x86_64-linux" = "07bbzm1159k2gkajj6z7dsr0kmadd5gx721w92r252i5hcwg5sx4";
"x86_64-darwin" = "d1f2d046775406e6f339883dab432fcaa149e763ccfcd017556a46e890de6476"; "x86_64-darwin" = "019cl2rswls3gwwa8y70cllc4jnd8xj0y2m9rvg2rz695snp6rcm";
}.${stdenv.hostPlatform.system}; }.${stdenv.hostPlatform.system};
archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz"; archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";

View File

@ -1,7 +1,7 @@
{ stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perl, { stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perl,
perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl,
libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui, hicolor-icon-theme, libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui, hicolor-icon-theme,
gtk-mac-integration }: gtk-mac-integration-gtk2 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "dia-${version}"; name = "dia-${version}";
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
[ gtk2 perlXMLParser libxml2 gettext python libxml2Python docbook5 [ gtk2 perlXMLParser libxml2 gettext python libxml2Python docbook5
libxslt docbook_xsl libart_lgpl hicolor-icon-theme ] libxslt docbook_xsl libart_lgpl hicolor-icon-theme ]
++ stdenv.lib.optional withGNOME libgnomeui ++ stdenv.lib.optional withGNOME libgnomeui
++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration; ++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration-gtk2;
nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool perl ]; nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool perl ];

View File

@ -28,7 +28,7 @@ in
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/airspy/airspyone_host; homepage = https://github.com/airspy/airspyone_host;
description = "Host tools and driver library for the AirSpy SDR"; description = "Host tools and driver library for the AirSpy SDR";
license = licenses.free; license = licenses.bsd3;
platforms = with platforms; linux ++ darwin; platforms = with platforms; linux ++ darwin;
maintainers = with maintainers; [ markuskowa ]; maintainers = with maintainers; [ markuskowa ];
}; };

View File

@ -5,13 +5,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "CopyQ-${version}"; name = "CopyQ-${version}";
version = "3.5.0"; version = "3.6.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hluk"; owner = "hluk";
repo = "CopyQ"; repo = "CopyQ";
rev = "v${version}"; rev = "v${version}";
sha256 = "0hzdv6rhjpq9yrfafnkc6d8m5pzw9qr520vsjf2gn1819gdybmr0"; sha256 = "0drhafnr1d595wa8zwvmgmrrqb86navdk4iw6ly6gmh0i800wz0z";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -1,38 +1,9 @@
{ stdenv, lib, fetchFromGitHub, python2 { stdenv, lib, fetchFromGitHub, python3
, libnotify ? null }: , libnotify ? null }:
let with python3.pkgs;
py = python2.override {
packageOverrides = self: super: {
google_api_python_client = super.google_api_python_client.overridePythonAttrs (oldAttrs: rec {
version = "1.5.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "1ggxk094vqr4ia6yq7qcpa74b4x5cjd5mj74rq0xx9wp2jkrxmig";
};
});
oauth2client = super.oauth2client.overridePythonAttrs (oldAttrs: rec { buildPythonApplication rec {
version = "1.4.12";
src = oldAttrs.src.override {
inherit version;
sha256 = "0phfk6s8bgpap5xihdk1xv2lakdk1pb3rg6hp2wsg94hxcxnrakl";
};
});
uritemplate = super.uritemplate.overridePythonAttrs (oldAttrs: rec {
version = "0.6";
src = oldAttrs.src.override {
inherit version;
sha256 = "1zapwg406vkwsirnzc6mwq9fac4az8brm6d9bp5xpgkyxc5263m3";
};
# there are no checks in this version
doCheck = false;
});
};
};
in with py.pkgs; buildPythonApplication rec {
version = "4.0.0a4"; version = "4.0.0a4";
name = "gcalcli-${version}"; name = "gcalcli-${version}";
@ -45,7 +16,6 @@ in with py.pkgs; buildPythonApplication rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
dateutil gflags httplib2 parsedatetime six vobject dateutil gflags httplib2 parsedatetime six vobject
# overridden
google_api_python_client oauth2client uritemplate google_api_python_client oauth2client uritemplate
] ++ lib.optional (!isPy3k) futures; ] ++ lib.optional (!isPy3k) futures;
@ -59,8 +29,8 @@ in with py.pkgs; buildPythonApplication rec {
doCheck = false; doCheck = false;
meta = with lib; { meta = with lib; {
homepage = https://github.com/insanum/gcalcli;
description = "CLI for Google Calendar"; description = "CLI for Google Calendar";
homepage = https://github.com/insanum/gcalcli;
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ nocoolnametom ]; maintainers = with maintainers; [ nocoolnametom ];
inherit version; inherit version;

View File

@ -5,17 +5,6 @@
let let
inherit (stdenv.lib) optional makeLibraryPath; inherit (stdenv.lib) optional makeLibraryPath;
# gl.xml
gl = fetchurl {
url = https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/56312cfe680e4be5ae61bbf1c628e420f8731718/xml/gl.xml;
sha256 = "1c45bcgaxiic5gmb3gkrd9qcvascvij97vz5y6fc3a2y7x3gjc5l";
};
# EGL 1.5
egl = fetchurl {
url = https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h;
sha256 = "0p0vs4siiya05cvbqq7cw3ci2zvvlfh8kycgm9k9cwvmrkj08349";
};
wrapperScript = writeScript "glava" '' wrapperScript = writeScript "glava" ''
#!${stdenv.shell} #!${stdenv.shell}
case "$1" in case "$1" in
@ -33,12 +22,12 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "glava-${version}"; name = "glava-${version}";
version = "1.5.1"; version = "1.5.5";
src = fetchgit { src = fetchgit {
url = "https://github.com/wacossusca34/glava.git"; url = "https://github.com/wacossusca34/glava.git";
rev = "v${version}"; rev = "v${version}";
sha256 = "1k8x0a0g2pm7ficsk4az9s7mjbm85a987apjg5c4y6iyldxgd6sb"; sha256 = "0mpbgllwz45wkax6pgvnh1pz2q4yvbzq2l8z8kff13wrsdvl8lh0";
}; };
buildInputs = [ buildInputs = [
@ -54,12 +43,8 @@ in
python3 python3
]; ];
patchPhase = '' preConfigure = ''
mkdir -p glad/include/KHR export CFLAGS="-march=native"
cp ${gl} glad/gl.xml
cp ${egl} glad/include/KHR/khrplatform.h
patchShebangs .
''; '';
makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1"; makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1";

View File

@ -1,7 +1,9 @@
{ stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3, { stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3,
pango, gobjectIntrospection, wrapGAppsHook, pango, gobjectIntrospection, wrapGAppsHook,
# Optional packages: # Optional packages:
enableOSM ? true, osm-gps-map enableOSM ? true, osm-gps-map,
enableGraphviz ? true, graphviz,
enableGhostscript ? true, ghostscript
}: }:
let let
@ -14,6 +16,11 @@ in buildPythonApplication rec {
buildInputs = [ intltool gtk3 gobjectIntrospection pango gnome3.gexiv2 ] buildInputs = [ intltool gtk3 gobjectIntrospection pango gnome3.gexiv2 ]
# Map support # Map support
++ stdenv.lib.optional enableOSM osm-gps-map ++ stdenv.lib.optional enableOSM osm-gps-map
# Graphviz support
++ stdenv.lib.optional enableGraphviz graphviz
# Ghostscript support
++ stdenv.lib.optional enableGhostscript ghostscript
; ;
src = fetchFromGitHub { src = fetchFromGitHub {
@ -53,5 +60,6 @@ in buildPythonApplication rec {
description = "Genealogy software"; description = "Genealogy software";
homepage = https://gramps-project.org; homepage = https://gramps-project.org;
license = licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ joncojonathan ];
}; };
} }

View File

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
name = "gutenberg-${version}"; name = "gutenberg-${version}";
version = "0.4.1"; version = "0.4.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Keats"; owner = "Keats";
repo = "gutenberg"; repo = "gutenberg";
rev = "v${version}"; rev = "v${version}";
sha256 = "0is7156aim2ad8xg2f5068crc4gfvm89x8gxa25vc25p0yr1bpla"; sha256 = "0kzxz26khk5rwb9mz0wi9r8y7r93w4n2dbq6v2qr07cy5h14pa6w";
}; };
cargoSha256 = "146vlr85n9d06am5ki76fh1vb5r8a4lzx5b7dmgi292kc3dsn41z"; cargoSha256 = "0n4ji06chybmcvg5yz6cnhzqh162zhh5xpbz374a796dwp1132m8";
nativeBuildInputs = [ cmake pkgconfig openssl ]; nativeBuildInputs = [ cmake pkgconfig openssl ];
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices cf-private ]; buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices cf-private ];

View File

@ -4,7 +4,7 @@
} : } :
let let
version = "18.06.0"; version = "18.10.0";
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "limesuite-${version}"; name = "limesuite-${version}";
@ -13,9 +13,11 @@ in stdenv.mkDerivation {
owner = "myriadrf"; owner = "myriadrf";
repo = "LimeSuite"; repo = "LimeSuite";
rev = "v${version}"; rev = "v${version}";
sha256 = "0j6mxlvij2k6ib1d9jwzvilmqgm1h0q7wy9sf8a6bvidwlphvy25"; sha256 = "0nbyvcdwvfvln1wic9qwb7y221v3jv454gp5v6ms9112a41zj46h";
}; };
enableParallelBuilding = true;
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ buildInputs = [
@ -36,10 +38,6 @@ in stdenv.mkDerivation {
mkdir -p $out/share/limesuite mkdir -p $out/share/limesuite
cp bin/Release/lms7suite_mcu/* $out/share/limesuite cp bin/Release/lms7suite_mcu/* $out/share/limesuite
cp bin/dualRXTX $out/bin
cp bin/basicRX $out/bin
cp bin/singleRX $out/bin
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,25 +1,31 @@
{ stdenv, fetchFromGitHub, wxGTK, libuuid, xercesc, zip , libXt, libXtst { stdenv, fetchFromGitHub, cmake, pkgconfig, zip, gettext, perl
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, yubikey-personalization , wxGTK31, libXi, libXt, libXtst, xercesc, xextproto
, libqrencode, libuuid, libyubikey, yubikey-personalization
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pwsafe-${version}"; pname = "pwsafe";
version = "0.99"; version = "1.06";
name = "${pname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pwsafe"; owner = "${pname}";
repo = "pwsafe"; repo = "${pname}";
rev = "${version}BETA"; rev = "${version}BETA";
sha256 = "1bkimz4g9v9kfjkqr3dqddh4jps7anzc1hgmirmmhwpac0xdp60g"; sha256 = "1q3xi7i4r3nmz3hc79lx8l15sr1nqhwbi3lrnfqr356nv6aaf03y";
}; };
makefile = "Makefile.linux"; nativeBuildInputs = [ cmake pkgconfig zip ];
makeFlags = "YBPERS_LIBPATH=${yubikey-personalization}/lib"; buildInputs = [
gettext perl libqrencode libuuid
buildFlags = "unicoderelease"; libXi libXt libXtst wxGTK31 xercesc xextproto
buildInputs = [ wxGTK libuuid gettext perl zip libyubikey yubikey-personalization
xercesc libXt libXtst libXi xextproto ];
pkgconfig libyubikey yubikey-personalization ]; cmakeFlags = [
"-DNO_GTEST=ON"
"-DCMAKE_CXX_FLAGS=-I${yubikey-personalization}/include/ykpers-1"
];
enableParallelBuilding = true;
postPatch = '' postPatch = ''
# Fix perl scripts used during the build. # Fix perl scripts used during the build.
@ -40,31 +46,7 @@ stdenv.mkDerivation rec {
done done
''; '';
installPhase = '' installFlags = [ "PREFIX=$(out)" ];
mkdir -p $out/bin \
$out/share/applications \
$out/share/pwsafe/xml \
$out/share/icons/hicolor/48x48/apps \
$out/share/doc/passwordsafe/help \
$out/share/man/man1 \
$out/share/locale
(cd help && make -f Makefile.linux)
cp help/help*.zip $out/share/doc/passwordsafe/help
(cd src/ui/wxWidgets/I18N && make mos)
cp -dr src/ui/wxWidgets/I18N/mos/* $out/share/locale/
# */
cp README.txt docs/ReleaseNotes.txt docs/ChangeLog.txt \
LICENSE install/copyright $out/share/doc/passwordsafe
cp src/ui/wxWidgets/GCCUnicodeRelease/pwsafe $out/bin/
cp install/graphics/pwsafe.png $out/share/icons/hicolor/48x48/apps
cp docs/pwsafe.1 $out/share/man/man1
cp xml/* $out/share/pwsafe/xml
# */
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A password database utility"; description = "A password database utility";
@ -77,8 +59,8 @@ stdenv.mkDerivation rec {
username/password combinations that you use. username/password combinations that you use.
''; '';
homepage = http://passwordsafe.sourceforge.net/; homepage = https://pwsafe.org/;
maintainers = with maintainers; [ pjones ]; maintainers = with maintainers; [ c0bw3b pjones ];
platforms = platforms.linux; platforms = platforms.linux;
license = licenses.artistic2; license = licenses.artistic2;
}; };

View File

@ -1,6 +1,6 @@
{ stdenv, fetchFromGitHub, makeWrapper, which, cmake, perl, perlPackages, { stdenv, fetchFromGitHub, makeWrapper, which, cmake, perl, perlPackages,
boost, tbb, wxGTK30, pkgconfig, gtk3, fetchurl, gtk2, libGLU, boost, tbb, wxGTK30, pkgconfig, gtk3, fetchurl, gtk2, libGLU,
glew, eigen, curl }: glew, eigen, curl, gtest, nlopt, pcre, xorg }:
let let
AlienWxWidgets = perlPackages.buildPerlPackage rec { AlienWxWidgets = perlPackages.buildPerlPackage rec {
name = "Alien-wxWidgets-0.69"; name = "Alien-wxWidgets-0.69";
@ -33,22 +33,28 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "slic3r-prusa-edition-${version}"; name = "slic3r-prusa-edition-${version}";
version = "1.40.1"; version = "1.41.0";
enableParallelBuilding = true; enableParallelBuilding = true;
buildInputs = [ nativeBuildInputs = [
cmake cmake
curl
perl
makeWrapper makeWrapper
];
buildInputs = [
curl
eigen eigen
glew glew
pcre
perl
tbb tbb
which which
Wx Wx
WxGLCanvas WxGLCanvas
] ++ (with perlPackages; [ xorg.libXdmcp
xorg.libpthreadstubs
] ++ checkInputs ++ (with perlPackages; [
boost boost
ClassXSAccessor ClassXSAccessor
EncodeLocale EncodeLocale
@ -72,8 +78,24 @@ stdenv.mkDerivation rec {
XMLSAX XMLSAX
]); ]);
checkInputs = [ gtest ];
# The build system uses custom logic - defined in
# xs/src/libnest2d/cmake_modules/FindNLopt.cmake in the package source -
# for finding the nlopt library, which doesn't pick up the package in the nix store.
# We need to set the path via the NLOPT environment variable instead.
NLOPT = "${nlopt}";
prePatch = '' prePatch = ''
# In nix ioctls.h isn't available from the standard kernel-headers package
# on other distributions. As the copy in glibc seems to be identical to the
# one in the kernel, we use that one instead.
sed -i 's|"/usr/include/asm-generic/ioctls.h"|<asm-generic/ioctls.h>|g' xs/src/libslic3r/GCodeSender.cpp sed -i 's|"/usr/include/asm-generic/ioctls.h"|<asm-generic/ioctls.h>|g' xs/src/libslic3r/GCodeSender.cpp
# PERL_VENDORARCH and PERL_VENDORLIB aren't set correctly by the build
# system, so we have to override them. Setting them as environment variables
# doesn't work though, so substituting the paths directly in CMakeLists.txt
# seems to be the easiest way.
sed -i "s|\''${PERL_VENDORARCH}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt sed -i "s|\''${PERL_VENDORARCH}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt
sed -i "s|\''${PERL_VENDORLIB}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt sed -i "s|\''${PERL_VENDORLIB}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt
''; '';
@ -92,7 +114,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "prusa3d"; owner = "prusa3d";
repo = "Slic3r"; repo = "Slic3r";
sha256 = "022mdz8824wg68qwgd49gnplw7wn84hqw113xh8l25v3j1jb9zmc"; sha256 = "1al60hrqbhl05dnsr99hzbmxmn26fyx19sc5zxv816x3q6px9n2d";
rev = "version_${version}"; rev = "version_${version}";
}; };
@ -100,7 +122,7 @@ stdenv.mkDerivation rec {
description = "G-code generator for 3D printer"; description = "G-code generator for 3D printer";
homepage = https://github.com/prusa3d/Slic3r; homepage = https://github.com/prusa3d/Slic3r;
license = licenses.agpl3; license = licenses.agpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ tweber ]; maintainers = with maintainers; [ tweber ];
broken = stdenv.hostPlatform.isAarch64;
}; };
} }

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xdgmenumaker-${version}"; name = "xdgmenumaker-${version}";
version = "1.4"; version = "1.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gapan"; owner = "gapan";
repo = "xdgmenumaker"; repo = "xdgmenumaker";
rev = version; rev = version;
sha256 = "0i909dk9chdsc7njp5llgm5xlag4lr0nkxkwl1g5lf8cvdjrawh2"; sha256 = "1vrsp5c1ah7p4dpwd6aqvinpwzd8crdimvyyr3lbm3c6cwpyjmif";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -98,11 +98,11 @@ let
flash = stdenv.mkDerivation rec { flash = stdenv.mkDerivation rec {
name = "flashplayer-ppapi-${version}"; name = "flashplayer-ppapi-${version}";
version = "31.0.0.108"; version = "31.0.0.122";
src = fetchzip { src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "0dcwyx0fp7wbsx0cyi7xpwq0nnvcvkzfgi6zyy75487820ssc4h1"; sha256 = "16cx92lq7zx8k22mfnsfjj09kyh3fi266qc5vvjz5b2rj53rmkdg";
stripRoot = false; stripRoot = false;
}; };

View File

@ -1,4 +1,4 @@
#!/bin/sh -e #!/bin/sh -e
cd "$(dirname "$0")" cd "$(dirname "$0")"
sp="$(nix-build -Q --no-out-link update.nix -A update)" sp="$(nix-build --builders "" -Q --no-out-link update.nix -A update)"
cat "$sp" > upstream-info.nix cat "$sp" > upstream-info.nix

View File

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory. # This file is autogenerated from update.sh in the same directory.
{ {
beta = { beta = {
sha256 = "0i3iz6c05ykqxbq58sx954nky0gd0schl7ik2r56p3jqsk8cfnhn"; sha256 = "16biicw86mnjrmjazfbml2pf4rykhbvsz854cyfnpjhcvmlh24jp";
sha256bin64 = "03k5y1nyzx26mxwxmdijkl2kj49vm5vhbxhakfxxjg3r1v0rsqrs"; sha256bin64 = "07jr1sqsxfdy3rymylkbpbgi79j9b2pax4igdzj943d0nbka84y5";
version = "69.0.3497.81"; version = "70.0.3538.35";
}; };
dev = { dev = {
sha256 = "1lx6dfd6w675b4kyrci8ikc8rfmjc1aqmm7bimxp3h4p97j5wml1"; sha256 = "0fmkhvvydinv5f543n7rrmsv99rf0skwwhlpmszvspx6y4wz9smv";
sha256bin64 = "0fsxj9h25glp3akw0x2rc488w5zr5v5yvl6ry7fy8w70fqgynffj"; sha256bin64 = "0plr8ph78kfg2dpyacjy3aw3msfif95fqpb8xx0n8whkkpbl9968";
version = "70.0.3538.9"; version = "71.0.3559.6";
}; };
stable = { stable = {
sha256 = "0i3iz6c05ykqxbq58sx954nky0gd0schl7ik2r56p3jqsk8cfnhn"; sha256 = "0dcyzsb70ssx5hd2b25ab3ydpqh7crhxab9zzi5gn99ywxh1afg3";
sha256bin64 = "1f3shb85jynxq37vjxxkkxrjayqgvpss1zws5i28x6i9nygfzay7"; sha256bin64 = "0w56k7hmdi9knjaw67kdmyz0fdkjmk2ldh2n4l1c6szkr66vq30q";
version = "69.0.3497.81"; version = "69.0.3497.100";
}; };
} }

View File

@ -73,7 +73,7 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-${version}"; name = "flashplayer-${version}";
version = "31.0.0.108"; version = "31.0.0.122";
src = fetchurl { src = fetchurl {
url = url =
@ -84,14 +84,14 @@ stdenv.mkDerivation rec {
sha256 = sha256 =
if debug then if debug then
if arch == "x86_64" then if arch == "x86_64" then
"1mn29ahxjf6pdy2zp2na14cz46jrl88f54kp3bs3cz75syyizyb6" "0mjyb8mk4av8cia34gmqi0n4nq0spiblgn18z6f4nkx12wgdka2c"
else else
"0inpj6bcsn5lh8gdv1wxpgipzrmpc553nhr68a55b2wff9fkv1ci" "07qgawd4xgy9690gbx0c6k97cp7lp04l70ccp4jd81y4xjsc9bq3"
else else
if arch == "x86_64" then if arch == "x86_64" then
"1dfgsl5jf8ja9f7wwkzj5bfz1v5rdsyf4qhg1shqqldadmyyha7p" "0264kcn0frgcl7zfd60ybs4r7x1p3f8nj496z264ax6qc390qr02"
else else
"0yiqwwqs3z9zzkfgqzjwqqdr2vaj1ia5xychs9fgxix3y4j934da"; "0w170wz920imca8wc7kggl2vldn9k7cqm2xwvx8yqqi1p42a1941";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -49,7 +49,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-standalone-${version}"; name = "flashplayer-standalone-${version}";
version = "31.0.0.108"; version = "31.0.0.122";
src = fetchurl { src = fetchurl {
url = url =
@ -59,9 +59,9 @@ stdenv.mkDerivation rec {
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_sa_linux.x86_64.tar.gz"; "https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_sa_linux.x86_64.tar.gz";
sha256 = sha256 =
if debug then if debug then
"0i047fvj3x9lx7x8bf7jl1ybf9xpmr6g77q0h7n2s8qvscsw0pmm" "1psd49bxn6w6kgcjhml44g5wb4za18m8apas8qyly4xcapdylias"
else else
"19wfs452ix57yfi4cy2din6mi5jky9hjzbdjny1bl8w32fy8xmm3"; "0g3h31pdxw91r3067zrkgyziwl18i5kidwx83y13ff4d17v999ss";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -1,50 +1,48 @@
{ stdenv, fetchurl, kubectl }: { stdenv, buildGoPackage, fetchFromGitHub }:
let
isLinux = stdenv.isLinux;
arch = if isLinux
then "linux-amd64"
else "darwin-amd64";
checksum = if isLinux
then "18bk4zqdxdrdcl34qay5mpzzywy9srmpz3mm91l0za6nhqapb902"
else "03xb73769awc6dpvz86nqm9fbgp3yrw30kf5lphf76klk2ii66sm";
pname = "helm";
version = "2.11.0";
in
stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl { buildGoPackage rec {
url = "https://kubernetes-helm.storage.googleapis.com/helm-v${version}-${arch}.tar.gz"; version = "2.11.0";
sha256 = checksum; name = "helm-${version}";
src = fetchFromGitHub {
owner = "helm";
repo = "helm";
rev = "v${version}";
sha256 = "1z810a6mxyrrw4i908dip8aqsj95c0kmv6xpb1wwhskg1zmf85wk";
}; };
preferLocalBuild = true; goPackagePath = "k8s.io/helm";
subPackages = [ "cmd/helm" "cmd/tiller" "cmd/rudder" ];
buildInputs = [ ]; goDeps = ./deps.nix;
propagatedBuildInputs = [ kubectl ]; # Thsese are the original flags from the helm makefile
buildFlagsArray = ''
phases = [ "buildPhase" "installPhase" ]; -ldflags=
-w
buildPhase = '' -s
mkdir -p $out/bin
''; '';
installPhase = '' preBuild = ''
tar -xvzf $src # This is a hack(?) to flatten the dependency tree the same way glide or dep would
cp ${arch}/helm $out/bin/${pname} # Otherwise you'll get errors like
chmod +x $out/bin/${pname} # have DeepCopyObject() "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime".Object
mkdir -p $out/share/bash-completion/completions # want DeepCopyObject() "k8s.io/apimachinery/pkg/runtime".Object
mkdir -p $out/share/zsh/site-functions rm -rf $NIX_BUILD_TOP/go/src/k8s.io/kubernetes/vendor
$out/bin/helm completion bash > $out/share/bash-completion/completions/helm rm -rf $NIX_BUILD_TOP/go/src/k8s.io/apiextensions-apiserver/vendor
$out/bin/helm completion zsh > $out/share/zsh/site-functions/_helm '';
postInstall = ''
mkdir -p $bin/share/bash-completion/completions
mkdir -p $bin/share/zsh/site-functions
$bin/bin/helm completion bash > $bin/share/bash-completion/completions/helm
$bin/bin/helm completion zsh > $bin/share/zsh/site-functions/_helm
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/kubernetes/helm; homepage = https://github.com/kubernetes/helm;
description = "A package manager for kubernetes"; description = "A package manager for kubernetes";
license = licenses.asl20; license = licenses.asl20;
maintainers = [ maintainers.rlupton20 ]; maintainers = [ maintainers.rlupton20 maintainers.edude03 ];
platforms = [ "x86_64-linux" ] ++ platforms.darwin;
}; };
} }

View File

@ -0,0 +1,840 @@
# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
[
{
goPackagePath = "cloud.google.com/go";
fetch = {
type = "git";
url = "https://code.googlesource.com/gocloud";
rev = "3b1ae45394a234c385be014e9a488f2bb6eef821";
sha256 = "0alb495ql6s02kb6lxcbnlkdcmhixyl8zv11sgrkhsk1bckzh119";
};
}
{
goPackagePath = "github.com/Azure/go-ansiterm";
fetch = {
type = "git";
url = "https://github.com/Azure/go-ansiterm";
rev = "19f72df4d05d31cbe1c56bfc8045c96babff6c7e";
sha256 = "0663w5m5qlidpj17s5pqp6rhl0phw7vypf104n04dvdy5nd418ix";
};
}
{
goPackagePath = "github.com/Azure/go-autorest";
fetch = {
type = "git";
url = "https://github.com/Azure/go-autorest";
rev = "1ff28809256a84bb6966640ff3d0371af82ccba4";
sha256 = "0sxvj2j1833bqwxvhq3wq3jgq73rnb81pnzvl0x3y1m0hzpaf2zv";
};
}
{
goPackagePath = "github.com/BurntSushi/toml";
fetch = {
type = "git";
url = "https://github.com/BurntSushi/toml";
rev = "b26d9c308763d68093482582cea63d69be07a0f0";
sha256 = "0k7v2i1d2d6si8gswn83qb84czhhia53v2wdy33yz9ppdidxk0ry";
};
}
{
goPackagePath = "github.com/MakeNowJust/heredoc";
fetch = {
type = "git";
url = "https://github.com/MakeNowJust/heredoc";
rev = "bb23615498cded5e105af4ce27de75b089cbe851";
sha256 = "17m780i9afj3sbmcrgwgzarfly4x9376w56qblkqnzdkv6vps22i";
};
}
{
goPackagePath = "github.com/Masterminds/semver";
fetch = {
type = "git";
url = "https://github.com/Masterminds/semver";
rev = "517734cc7d6470c0d07130e40fd40bdeb9bcd3fd";
sha256 = "1625b5sxpmlz60jw67j1ljfcc09d4lhxg3z6gc4am8s2rrdgwij6";
};
}
{
goPackagePath = "github.com/Masterminds/sprig";
fetch = {
type = "git";
url = "https://github.com/Masterminds/sprig";
rev = "15f9564e7e9cf0da02a48e0d25f12a7b83559aa6";
sha256 = "1k5pfx9hxzb70kh73a009ikr3vqlq0jvzvbyvxz9x7a7yc4r5b14";
};
}
{
goPackagePath = "github.com/Masterminds/vcs";
fetch = {
type = "git";
url = "https://github.com/Masterminds/vcs";
rev = "3084677c2c188840777bff30054f2b553729d329";
sha256 = "1062m73h0pp5d0574lf6px4jsjgywnsbkw50inxx3zal5r185ydm";
};
}
{
goPackagePath = "github.com/PuerkitoBio/purell";
fetch = {
type = "git";
url = "https://github.com/PuerkitoBio/purell";
rev = "8a290539e2e8629dbc4e6bad948158f790ec31f4";
sha256 = "1qhsy1nm96b9kb63svkvkqmmw15xg6irwcysisxdgzk64adfwqv1";
};
}
{
goPackagePath = "github.com/PuerkitoBio/urlesc";
fetch = {
type = "git";
url = "https://github.com/PuerkitoBio/urlesc";
rev = "5bd2802263f21d8788851d5305584c82a5c75d7e";
sha256 = "15y5r3asvm7196m3nza5xvdvlc2k11p6lfs6hi917hl7r9vgi6mp";
};
}
{
goPackagePath = "github.com/aokoli/goutils";
fetch = {
type = "git";
url = "https://github.com/aokoli/goutils";
rev = "9c37978a95bd5c709a15883b6242714ea6709e64";
sha256 = "1c51qgk4pjc8c776h7589c3d14791h86f1yj3ykg4q7vlcf9xrnr";
};
}
{
goPackagePath = "github.com/asaskevich/govalidator";
fetch = {
type = "git";
url = "https://github.com/asaskevich/govalidator";
rev = "7664702784775e51966f0885f5cd27435916517b";
sha256 = "1lmynw9vkgrxv7nh60wdywv0nx4gjlkiar433wydhpc2h3m5q968";
};
}
{
goPackagePath = "github.com/beorn7/perks";
fetch = {
type = "git";
url = "https://github.com/beorn7/perks";
rev = "3ac7bf7a47d159a033b107610db8a1b6575507a4";
sha256 = "1qc3l4r818xpvrhshh1sisc5lvl9479qspcfcdbivdyh0apah83r";
};
}
{
goPackagePath = "github.com/chai2010/gettext-go";
fetch = {
type = "git";
url = "https://github.com/chai2010/gettext-go";
rev = "bf70f2a70fb1b1f36d90d671a72795984eab0fcb";
sha256 = "0bwjwvjl7zqm7kxram1rzz0ri3h897kiin13ljy9hx3fzz1i9lml";
};
}
{
goPackagePath = "github.com/cpuguy83/go-md2man";
fetch = {
type = "git";
url = "https://github.com/cpuguy83/go-md2man";
rev = "71acacd42f85e5e82f70a55327789582a5200a90";
sha256 = "0hmkrq4gdzb6mwllmh4p1y7vrz7hyr8xqagpk9nyr5dhygvnnq2v";
};
}
{
goPackagePath = "github.com/cyphar/filepath-securejoin";
fetch = {
type = "git";
url = "https://github.com/cyphar/filepath-securejoin";
rev = "a261ee33d7a517f054effbf451841abaafe3e0fd";
sha256 = "0id32zjb92wm569m29nfrzz5mw9z1glr3klayr6j134pp4h1sgq4";
};
}
{
goPackagePath = "github.com/davecgh/go-spew";
fetch = {
type = "git";
url = "https://github.com/davecgh/go-spew";
rev = "782f4967f2dc4564575ca782fe2d04090b5faca8";
sha256 = "1ypijjawqc0xgmgim42260ibcyclfgfizicz5cbvndw4plqfsswk";
};
}
{
goPackagePath = "github.com/dgrijalva/jwt-go";
fetch = {
type = "git";
url = "https://github.com/dgrijalva/jwt-go";
rev = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e";
sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
};
}
{
goPackagePath = "github.com/docker/distribution";
fetch = {
type = "git";
url = "https://github.com/docker/distribution";
rev = "edc3ab29cdff8694dd6feb85cfeb4b5f1b38ed9c";
sha256 = "1nqjaq1q6fs3c0avpb02sib0a906xfbk3m74hk2mqjdbyx9y8b4m";
};
}
{
goPackagePath = "github.com/docker/docker";
fetch = {
type = "git";
url = "https://github.com/docker/docker";
rev = "4f3616fb1c112e206b88cb7a9922bf49067a7756";
sha256 = "0zmsqm1lkwggfqgy2rw34g4g2jlvr6mvcsh65fmpdb30l65iaqzf";
};
}
{
goPackagePath = "github.com/docker/go-connections";
fetch = {
type = "git";
url = "https://github.com/docker/go-connections";
rev = "3ede32e2033de7505e6500d6c868c2b9ed9f169d";
sha256 = "0v1pkr8apwmhyzbjfriwdrs1ihlk6pw7izm57r24mf9jdmg3fyb0";
};
}
{
goPackagePath = "github.com/docker/go-units";
fetch = {
type = "git";
url = "https://github.com/docker/go-units";
rev = "9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1";
sha256 = "1sqwvcszxqpv77xf2d8fxvryxphdwj9v8f93231wpnk9kpilhyii";
};
}
{
goPackagePath = "github.com/docker/spdystream";
fetch = {
type = "git";
url = "https://github.com/docker/spdystream";
rev = "449fdfce4d962303d702fec724ef0ad181c92528";
sha256 = "1412cpiis971iq1kxrirzirhj2708ispjh0x0dh879b66x8507sl";
};
}
{
goPackagePath = "github.com/evanphx/json-patch";
fetch = {
type = "git";
url = "https://github.com/evanphx/json-patch";
rev = "94e38aa1586e8a6c8a75770bddf5ff84c48a106b";
sha256 = "1c9gzc3gb76lm5famc0345y90is1lyffn39bmdr0xk19462f8av5";
};
}
{
goPackagePath = "github.com/exponent-io/jsonpath";
fetch = {
type = "git";
url = "https://github.com/exponent-io/jsonpath";
rev = "d6023ce2651d8eafb5c75bb0c7167536102ec9f5";
sha256 = "1qkzaxsjs7yg1672sk67nr119j7jc4751yzgii0j3nbipjv321kc";
};
}
{
goPackagePath = "github.com/fatih/camelcase";
fetch = {
type = "git";
url = "https://github.com/fatih/camelcase";
rev = "f6a740d52f961c60348ebb109adde9f4635d7540";
sha256 = "15vb86adns1izvbzjw0lmmzrwlarhbxw5qalhx10vzzdx73wh4ai";
};
}
{
goPackagePath = "github.com/ghodss/yaml";
fetch = {
type = "git";
url = "https://github.com/ghodss/yaml";
rev = "73d445a93680fa1a78ae23a5839bad48f32ba1ee";
sha256 = "0pg53ky4sy3sp9j4n7vgf1p3gw4nbckwqfldcmmi9rf13kjh0mr7";
};
}
{
goPackagePath = "github.com/go-openapi/jsonpointer";
fetch = {
type = "git";
url = "https://github.com/go-openapi/jsonpointer";
rev = "46af16f9f7b149af66e5d1bd010e3574dc06de98";
sha256 = "0w0fphmdycjzbsm1vppdcjc9aqinkcdzcq3pxikdvdqh5p791gsc";
};
}
{
goPackagePath = "github.com/go-openapi/jsonreference";
fetch = {
type = "git";
url = "https://github.com/go-openapi/jsonreference";
rev = "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272";
sha256 = "1fh4xcl9ijww4bdq656sx981d57w2c9zx5148jsxlsg4bsvxmwis";
};
}
{
goPackagePath = "github.com/go-openapi/spec";
fetch = {
type = "git";
url = "https://github.com/go-openapi/spec";
rev = "1de3e0542de65ad8d75452a595886fdd0befb363";
sha256 = "13i9y71fk9vr2abvpsk04k55il32ly3fjinvl1zlamh9mi2mdzf4";
};
}
{
goPackagePath = "github.com/go-openapi/swag";
fetch = {
type = "git";
url = "https://github.com/go-openapi/swag";
rev = "f3f9494671f93fcff853e3c6e9e948b3eb71e590";
sha256 = "13lqn4xqy9vma9aqsjb0fzfzi0q8l6dmg65sjxqdxf3q6gzkvmjy";
};
}
{
goPackagePath = "github.com/gobwas/glob";
fetch = {
type = "git";
url = "https://github.com/gobwas/glob";
rev = "5ccd90ef52e1e632236f7326478d4faa74f99438";
sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z";
};
}
{
goPackagePath = "github.com/gogo/protobuf";
fetch = {
type = "git";
url = "https://github.com/gogo/protobuf";
rev = "c0656edd0d9eab7c66d1eb0c568f9039345796f7";
sha256 = "0b943dhx571lhgcs3rqzy0092mi2x5mwy2kl7g8rryhy3r5rzrz9";
};
}
{
goPackagePath = "github.com/golang/glog";
fetch = {
type = "git";
url = "https://github.com/golang/glog";
rev = "44145f04b68cf362d9c4df2182967c2275eaefed";
sha256 = "1k7sf6qmpgm0iw81gx2dwggf9di6lgw0n54mni7862hihwfrb5rq";
};
}
{
goPackagePath = "github.com/golang/groupcache";
fetch = {
type = "git";
url = "https://github.com/golang/groupcache";
rev = "02826c3e79038b59d737d3b1c0a1d937f71a4433";
sha256 = "0w46bsllddfij66nrg8jbfjsr54birvfww8a2fj9fmgyig5syn2x";
};
}
{
goPackagePath = "github.com/golang/protobuf";
fetch = {
type = "git";
url = "https://github.com/golang/protobuf";
rev = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9";
sha256 = "1ch3czyzq5abl6zm1l0dfsi09xj43ql9jcbmbhfhxz954pw03v3v";
};
}
{
goPackagePath = "github.com/google/btree";
fetch = {
type = "git";
url = "https://github.com/google/btree";
rev = "7d79101e329e5a3adf994758c578dab82b90c017";
sha256 = "1c1hsy5s2pfawg3l9954jmqmy4yc2zp3f7i87m00km2yqgb8xpd0";
};
}
{
goPackagePath = "github.com/google/gofuzz";
fetch = {
type = "git";
url = "https://github.com/google/gofuzz";
rev = "44d81051d367757e1c7c6a5a86423ece9afcf63c";
sha256 = "0ivq2sl2fv8x0xxrcys27c42s8yq7irgl7lp6l0im9i7ky63nk0i";
};
}
{
goPackagePath = "github.com/google/uuid";
fetch = {
type = "git";
url = "https://github.com/google/uuid";
rev = "064e2069ce9c359c118179501254f67d7d37ba24";
sha256 = "1b1ibx3rbiv7xwa9kz4b4zpp1fza5cjnn8v6749b4vrkjjmp3rqb";
};
}
{
goPackagePath = "github.com/googleapis/gnostic";
fetch = {
type = "git";
url = "https://github.com/googleapis/gnostic";
rev = "0c5108395e2debce0d731cf0287ddf7242066aba";
sha256 = "0jf3cp5clli88gpjf24r6wxbkvngnc1kf59d4cgjczsn2wasvsfc";
};
}
{
goPackagePath = "github.com/gophercloud/gophercloud";
fetch = {
type = "git";
url = "https://github.com/gophercloud/gophercloud";
rev = "781450b3c4fcb4f5182bcc5133adb4b2e4a09d1d";
sha256 = "0xvapk94p1259k8arvwyvhwvcnzma9vdg12g750cgz2ghkzvfhff";
};
}
{
goPackagePath = "github.com/gosuri/uitable";
fetch = {
type = "git";
url = "https://github.com/gosuri/uitable";
rev = "36ee7e946282a3fb1cfecd476ddc9b35d8847e42";
sha256 = "1ff68fv9g1df91fwbrcq83ar429gb4fi2vsd22zjmhvmbqx2zkil";
};
}
{
goPackagePath = "github.com/gregjones/httpcache";
fetch = {
type = "git";
url = "https://github.com/gregjones/httpcache";
rev = "787624de3eb7bd915c329cba748687a3b22666a6";
sha256 = "1zqlg9pkj7r6fqw7wv3ywvbz3bh0hvzifs2scgcraj812q5189w5";
};
}
{
goPackagePath = "github.com/grpc-ecosystem/go-grpc-prometheus";
fetch = {
type = "git";
url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
rev = "0c1b191dbfe51efdabe3c14b9f6f3b96429e0722";
sha256 = "0d7vybd4yy9a9clk03578xdpyhifxsy3qv6iiglrrnblbmpgksjc";
};
}
{
goPackagePath = "github.com/hashicorp/golang-lru";
fetch = {
type = "git";
url = "https://github.com/hashicorp/golang-lru";
rev = "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4";
sha256 = "1z3h4aca31l3qs0inqr5l49vrlycpjm7vq1l9nh1mp0mb2ij0kmp";
};
}
{
goPackagePath = "github.com/huandu/xstrings";
fetch = {
type = "git";
url = "https://github.com/huandu/xstrings";
rev = "3959339b333561bf62a38b424fd41517c2c90f40";
sha256 = "0f1jyd80grpr88gwhljx2x0xgsyzw07807n4z4axxxlybh5f0nh1";
};
}
{
goPackagePath = "github.com/imdario/mergo";
fetch = {
type = "git";
url = "https://github.com/imdario/mergo";
rev = "6633656539c1639d9d78127b7d47c622b5d7b6dc";
sha256 = "1fffbq1l17i0gynmvcxypl7d9h4v81g5vlimiph5bfgf4sp4db7g";
};
}
{
goPackagePath = "github.com/inconshreveable/mousetrap";
fetch = {
type = "git";
url = "https://github.com/inconshreveable/mousetrap";
rev = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
};
}
{
goPackagePath = "github.com/json-iterator/go";
fetch = {
type = "git";
url = "https://github.com/json-iterator/go";
rev = "f2b4162afba35581b6d4a50d3b8f34e33c144682";
sha256 = "0siqfghsm2lkdwinvg8x5gls3p76rq3cdm59c1r4x0b2mdfhnvcd";
};
}
{
goPackagePath = "github.com/mailru/easyjson";
fetch = {
type = "git";
url = "https://github.com/mailru/easyjson";
rev = "2f5df55504ebc322e4d52d34df6a1f5b503bf26d";
sha256 = "0d9m8kyhbawa452vnwn255xxnh6pkp3im0d2310rw1k14nh3yh1p";
};
}
{
goPackagePath = "github.com/mattn/go-runewidth";
fetch = {
type = "git";
url = "https://github.com/mattn/go-runewidth";
rev = "d6bea18f789704b5f83375793155289da36a3c7f";
sha256 = "1hnigpn7rjbwd1ircxkyx9hvi0xmxr32b2jdy2jzw6b3jmcnz1fs";
};
}
{
goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
fetch = {
type = "git";
url = "https://github.com/matttproud/golang_protobuf_extensions";
rev = "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a";
sha256 = "0ajg41h6402big484drvm72wvid1af2sffw0qkzbmpy04lq68ahj";
};
}
{
goPackagePath = "github.com/mitchellh/go-wordwrap";
fetch = {
type = "git";
url = "https://github.com/mitchellh/go-wordwrap";
rev = "ad45545899c7b13c020ea92b2072220eefad42b8";
sha256 = "0ny1ddngvwfj3njn7pmqnf3l903lw73ynddw15x8ymp7hidv27v9";
};
}
{
goPackagePath = "github.com/modern-go/concurrent";
fetch = {
type = "git";
url = "https://github.com/modern-go/concurrent";
rev = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
};
}
{
goPackagePath = "github.com/modern-go/reflect2";
fetch = {
type = "git";
url = "https://github.com/modern-go/reflect2";
rev = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
};
}
{
goPackagePath = "github.com/opencontainers/go-digest";
fetch = {
type = "git";
url = "https://github.com/opencontainers/go-digest";
rev = "a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb";
sha256 = "1paz3na2xkhi10p5bk7f7gbh5yykfgr9f9i2gcc13rb461yq6fmg";
};
}
{
goPackagePath = "github.com/opencontainers/image-spec";
fetch = {
type = "git";
url = "https://github.com/opencontainers/image-spec";
rev = "372ad780f63454fbbbbcc7cf80e5b90245c13e13";
sha256 = "0wajddbm49bfybkab9midilg18zvdvvsffwhkq7bpp7inj4jnsvs";
};
}
{
goPackagePath = "github.com/petar/GoLLRB";
fetch = {
type = "git";
url = "https://github.com/petar/GoLLRB";
rev = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4";
sha256 = "01xp3lcamqkvl91jg6ly202gdsgf64j39rkrcqxi6v4pbrcv7hz0";
};
}
{
goPackagePath = "github.com/peterbourgon/diskv";
fetch = {
type = "git";
url = "https://github.com/peterbourgon/diskv";
rev = "5f041e8faa004a95c88a202771f4cc3e991971e6";
sha256 = "1mxpa5aad08x30qcbffzk80g9540wvbca4blc1r2qyzl65b8929b";
};
}
{
goPackagePath = "github.com/pkg/errors";
fetch = {
type = "git";
url = "https://github.com/pkg/errors";
rev = "645ef00459ed84a119197bfb8d8205042c6df63d";
sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
};
}
{
goPackagePath = "github.com/pmezard/go-difflib";
fetch = {
type = "git";
url = "https://github.com/pmezard/go-difflib";
rev = "d8ed2627bdf02c080bf22230dbb337003b7aba2d";
sha256 = "0w1jp4k4zbnrxh3jvh8fgbjgqpf2hg31pbj8fb32kh26px9ldpbs";
};
}
{
goPackagePath = "github.com/prometheus/client_golang";
fetch = {
type = "git";
url = "https://github.com/prometheus/client_golang";
rev = "c5b7fccd204277076155f10851dad72b76a49317";
sha256 = "1xqny3147g12n4j03kxm8s9mvdbs3ln6i56c655mybrn9jjy48kd";
};
}
{
goPackagePath = "github.com/prometheus/client_model";
fetch = {
type = "git";
url = "https://github.com/prometheus/client_model";
rev = "fa8ad6fec33561be4280a8f0514318c79d7f6cb6";
sha256 = "11a7v1fjzhhwsl128znjcf5v7v6129xjgkdpym2lial4lac1dhm9";
};
}
{
goPackagePath = "github.com/prometheus/common";
fetch = {
type = "git";
url = "https://github.com/prometheus/common";
rev = "13ba4ddd0caa9c28ca7b7bffe1dfa9ed8d5ef207";
sha256 = "0i6mpcnsawi7f00rfmjfjq8llaplyzq4xrkrawlcgfd762p5hnp8";
};
}
{
goPackagePath = "github.com/prometheus/procfs";
fetch = {
type = "git";
url = "https://github.com/prometheus/procfs";
rev = "65c1f6f8f0fc1e2185eb9863a3bc751496404259";
sha256 = "0jfzmr8642hr04naim1maa3wklxvcxklykri2z7k4ayizc974lkq";
};
}
{
goPackagePath = "github.com/russross/blackfriday";
fetch = {
type = "git";
url = "https://github.com/russross/blackfriday";
rev = "300106c228d52c8941d4b3de6054a6062a86dda3";
sha256 = "1bcqwb9lk2sijn5q3kqp7sadhh0ysbxlj5bxjspk9yp5bp733cbh";
};
}
{
goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
fetch = {
type = "git";
url = "https://github.com/shurcooL/sanitized_anchor_name";
rev = "10ef21a441db47d8b13ebcc5fd2310f636973c77";
sha256 = "1cnbzcf47cn796rcjpph1s64qrabhkv5dn9sbynsy7m9zdwr5f01";
};
}
{
goPackagePath = "github.com/sirupsen/logrus";
fetch = {
type = "git";
url = "https://github.com/sirupsen/logrus";
rev = "89742aefa4b206dcf400792f3bd35b542998eb3b";
sha256 = "0hk7fabx59msg2y0iik6xvfp80s73ybrwlcshbm9ds91iqbkcxi6";
};
}
{
goPackagePath = "github.com/spf13/cobra";
fetch = {
type = "git";
url = "https://github.com/spf13/cobra";
rev = "c439c4fa093711d42e1b01acb1235b52004753c1";
sha256 = "14v5vhb180yzaknxnm8j4n9jai58b0y2nzrqzpdq7bj9slsga1vd";
};
}
{
goPackagePath = "github.com/spf13/pflag";
fetch = {
type = "git";
url = "https://github.com/spf13/pflag";
rev = "583c0c0531f06d5278b7d917446061adc344b5cd";
sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
};
}
{
goPackagePath = "github.com/stretchr/testify";
fetch = {
type = "git";
url = "https://github.com/stretchr/testify";
rev = "e3a8ff8ce36581f87a15341206f205b1da467059";
sha256 = "179k26lcgafkbjylbhgj2f5pnh52bmv19rr1w95gca944blw8yga";
};
}
{
goPackagePath = "github.com/technosophos/moniker";
fetch = {
type = "git";
url = "https://github.com/technosophos/moniker";
rev = "a5dbd03a2245d554160e3ae6bfdcf969fe58b431";
sha256 = "1z273gvbwr09lcxwd10wyvxmxjln93r952sr1w9hqxcgc1f8l3vl";
};
}
{
goPackagePath = "golang.org/x/crypto";
fetch = {
type = "git";
url = "https://go.googlesource.com/crypto";
rev = "49796115aa4b964c318aad4f3084fdb41e9aa067";
sha256 = "0pcq2drkzsw585xi6rda8imd7a139prrmvgmv8nz0zgzk6g4dy59";
};
}
{
goPackagePath = "golang.org/x/net";
fetch = {
type = "git";
url = "https://go.googlesource.com/net";
rev = "1c05540f6879653db88113bc4a2b70aec4bd491f";
sha256 = "0h8yqb0vcqgllgydrf9d3rzp83w8wlr8f0nm6r1rwf2qg30pq1pd";
};
}
{
goPackagePath = "golang.org/x/oauth2";
fetch = {
type = "git";
url = "https://go.googlesource.com/oauth2";
rev = "a6bd8cefa1811bd24b86f8902872e4e8225f74c4";
sha256 = "151in8qcf5y97ziavl6b03vgw4r87zqx5kg4vjhjszjbh60cfswp";
};
}
{
goPackagePath = "golang.org/x/sys";
fetch = {
type = "git";
url = "https://go.googlesource.com/sys";
rev = "43eea11bc92608addb41b8a406b0407495c106f6";
sha256 = "0k9wy278f5753d130p8asva2g573vi6wviwkxwwnpxni118knq1l";
};
}
{
goPackagePath = "golang.org/x/text";
fetch = {
type = "git";
url = "https://go.googlesource.com/text";
rev = "b19bf474d317b857955b12035d2c5acb57ce8b01";
sha256 = "0wc8csaafp0ps9jb2hdk8d6xpyw1axhk1np73h0z17x09zk3ylcr";
};
}
{
goPackagePath = "golang.org/x/time";
fetch = {
type = "git";
url = "https://go.googlesource.com/time";
rev = "f51c12702a4d776e4c1fa9b0fabab841babae631";
sha256 = "07wc6g2fvafkr6djsscm0jpbpl4135khhb6kpyx1953hi5d1jvyy";
};
}
{
goPackagePath = "google.golang.org/appengine";
fetch = {
type = "git";
url = "https://github.com/golang/appengine";
rev = "12d5545dc1cfa6047a286d5e853841b6471f4c19";
sha256 = "1bv6cjakhi6j3s1bqb3n45qrmvf20qkhwxllvi94jag4i7hd91w8";
};
}
{
goPackagePath = "google.golang.org/genproto";
fetch = {
type = "git";
url = "https://github.com/google/go-genproto";
rev = "09f6ed296fc66555a25fe4ce95173148778dfa85";
sha256 = "06x5wr7vjsnvv35rpv7jaklilksqbzsbqk8bxababw8vr6avfwki";
};
}
{
goPackagePath = "google.golang.org/grpc";
fetch = {
type = "git";
url = "https://github.com/grpc/grpc-go";
rev = "5ffe3083946d5603a0578721101dc8165b1d5b5f";
sha256 = "1ij3sy49xfihwpcpiwd68mlfkrk375kdh6r6jlqka18zalxgpaan";
};
}
{
goPackagePath = "gopkg.in/inf.v0";
fetch = {
type = "git";
url = "https://github.com/go-inf/inf";
rev = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4";
sha256 = "0rf3vwyb8aqnac9x9d6ax7z5526c45a16yjm2pvkijr6qgqz8b82";
};
}
{
goPackagePath = "gopkg.in/square/go-jose.v2";
fetch = {
type = "git";
url = "https://github.com/square/go-jose";
rev = "f8f38de21b4dcd69d0413faf231983f5fd6634b1";
sha256 = "1bjrs3xq3m2ckfds0l4wqf81311ymm9agipmkllbvkadac156dsa";
};
}
{
goPackagePath = "gopkg.in/yaml.v2";
fetch = {
type = "git";
url = "https://github.com/go-yaml/yaml";
rev = "670d4cfef0544295bc27a114dbac37980d83185a";
sha256 = "182x97q4826cpzybkrl8icyx1n6l1z0kspmbz33fh901v10b6322";
};
}
{
goPackagePath = "k8s.io/api";
fetch = {
type = "git";
url = "https://github.com/kubernetes/api";
rev = "2d6f90ab1293a1fb871cf149423ebb72aa7423aa";
sha256 = "1cwrwdm104xd3608b1a5mw6a19w45532p647xdwnyn62rw2f08jx";
};
}
{
goPackagePath = "k8s.io/apiextensions-apiserver";
fetch = {
type = "git";
url = "https://github.com/kubernetes/apiextensions-apiserver";
rev = "898b0eda132e1aeac43a459785144ee4bf9b0a2e";
sha256 = "1zn4i4wfmk3y36n6mqcidgsp4aqzwy5w9749zjl2bfbwzpk81bcp";
};
}
{
goPackagePath = "k8s.io/apimachinery";
fetch = {
type = "git";
url = "https://github.com/kubernetes/apimachinery";
rev = "103fd098999dc9c0c88536f5c9ad2e5da39373ae";
sha256 = "04navnpm59d75dhlz07rmay7m2izrf4m0i9xklxzqg7mlk9g20jc";
};
}
{
goPackagePath = "k8s.io/apiserver";
fetch = {
type = "git";
url = "https://github.com/kubernetes/apiserver";
rev = "8b122ec9e3bbab91a262d17a39325e69349dc44d";
sha256 = "0qfxjypa10s16sll2a75kn2ddjddr2xsa5rsiaxar3gs5pqvq1h5";
};
}
{
goPackagePath = "k8s.io/client-go";
fetch = {
type = "git";
url = "https://github.com/kubernetes/client-go";
rev = "59698c7d9724b0f95f9dc9e7f7dfdcc3dfeceb82";
sha256 = "0f069d1msdb2x4yvwv0wa3hzanl97csg4hsp1pycxpnqck6qx6qh";
};
}
{
goPackagePath = "k8s.io/kube-openapi";
fetch = {
type = "git";
url = "https://github.com/kubernetes/kube-openapi";
rev = "91cfa479c814065e420cee7ed227db0f63a5854e";
sha256 = "0l9yvc7gfa8i4snpv1d13vy03dplzp2jh47rqr3fhiihcz2wx4s7";
};
}
{
goPackagePath = "k8s.io/kubernetes";
fetch = {
type = "git";
url = "https://github.com/kubernetes/kubernetes";
rev = "2e809eed16445fff9dcbfc56e9936cf76ccbdadc";
sha256 = "13fzcbjfc5c35gy66nbn1ms63b8bj3g8z7wja0p8dd3yj9lcj68h";
};
}
{
goPackagePath = "k8s.io/utils";
fetch = {
type = "git";
url = "https://github.com/kubernetes/utils";
rev = "258e2a2fa64568210fbd6267cf1d8fd87c3cb86e";
sha256 = "1mbw3q03sflrdgj6l7q3frqzb5f78n0m0gzjm228sy1wnm4c3760";
};
}
{
goPackagePath = "vbom.ml/util";
fetch = {
type = "git";
url = "https://github.com/fvbommel/util";
rev = "db5cfe13f5cc80a4990d98e2e1b0707a4d1a5394";
sha256 = "1k9c3ihhkrcmhd26pwd62mp2ll7icr2q65i5pkymnfnhhv40p682";
};
}
]

View File

@ -1,6 +1,6 @@
{ lib, buildGoPackage, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }: { lib, buildGoPackage, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
let version = "0.19.0"; in let version = "0.40.1"; in
buildGoPackage { buildGoPackage {
name = "helmfile-${version}"; name = "helmfile-${version}";
@ -9,13 +9,18 @@ buildGoPackage {
owner = "roboll"; owner = "roboll";
repo = "helmfile"; repo = "helmfile";
rev = "v${version}"; rev = "v${version}";
sha256 = "0wjzzaygdnnvyi5a78bhmz2sxc4gykdl00h78dkgvj7aaw05s9yd"; sha256 = "02ir10070rpayv9s53anldwjy5ggl268shgf085d188wl6vshaiv";
}; };
goPackagePath = "github.com/roboll/helmfile"; goPackagePath = "github.com/roboll/helmfile";
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildFlagsArray = ''
-ldflags=
-X main.Version=${version}
'';
postInstall = '' postInstall = ''
wrapProgram $bin/bin/helmfile \ wrapProgram $bin/bin/helmfile \
--prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]} --prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]}

View File

@ -15,13 +15,13 @@ with lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "kubernetes-${version}"; name = "kubernetes-${version}";
version = "1.12.0"; version = "1.12.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubernetes"; owner = "kubernetes";
repo = "kubernetes"; repo = "kubernetes";
rev = "v${version}"; rev = "v${version}";
sha256 = "0bnfhrli9xqf7ygfq5i5p6nsgv7ic57b5b705zbqsxrc24pvsy4s"; sha256 = "1gm0v5p008w9i4k94ddjdyfqfsbx7a6ngmh81p155599hifm32zc";
}; };
buildInputs = [ removeReferencesTo makeWrapper which go_1_10 rsync go-bindata ]; buildInputs = [ removeReferencesTo makeWrapper which go_1_10 rsync go-bindata ];

View File

@ -14,7 +14,7 @@ let
in buildGoPackage rec { in buildGoPackage rec {
pname = "minikube"; pname = "minikube";
name = "${pname}-${version}"; name = "${pname}-${version}";
version = "0.29.0"; version = "0.30.0";
kubernetesVersion = "1.11.2"; kubernetesVersion = "1.11.2";
@ -24,7 +24,7 @@ in buildGoPackage rec {
owner = "kubernetes"; owner = "kubernetes";
repo = "minikube"; repo = "minikube";
rev = "v${version}"; rev = "v${version}";
sha256 = "09px8pxml7xrnfhyjvlhf1hw7zdj9sw47a0fv5wj5aard54lhs1l"; sha256 = "02jxwh8qrvjn31rzjwx23908nd1i592drfdykxbc5b6a62fwp02z";
}; };
buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet; buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet;

View File

@ -22,6 +22,7 @@ let
}; };
in in
{ {
gandi = callPackage ./gandi {};
ibm = callPackage ./ibm {}; ibm = callPackage ./ibm {};
libvirt = callPackage ./libvirt {}; libvirt = callPackage ./libvirt {};
} // lib.mapAttrs (n: v: toDrv v) list } // lib.mapAttrs (n: v: toDrv v) list

View File

@ -0,0 +1,26 @@
{ stdenv, fetchFromGitHub, buildGoPackage }:
buildGoPackage rec {
name = "terraform-provider-gandi-${version}";
version = "1.0.0";
goPackagePath = "github.com/tiramiseb/terraform-provider-gandi";
goDeps = ./deps.nix;
src = fetchFromGitHub {
owner = "tiramiseb";
repo = "terraform-provider-gandi";
rev = "v${version}";
sha256 = "0byydpqsimvnk11bh9iz8zlxbsmsk65w55pvkp18vjzqrhf4kyfv";
};
# Terraform allow checking the provider versions, but this breaks
# if the versions are not provided via file paths.
postBuild = "mv go/bin/terraform-provider-gandi{,_v${version}}";
meta = with stdenv.lib; {
description = "Terraform provider for the Gandi LiveDNS service.";
homepage = "https://github.com/tiramiseb/terraform-provider-gandi";
license = licenses.mpl20;
maintainers = with maintainers; [ manveru ];
};
}

View File

@ -0,0 +1,21 @@
# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
[
{
goPackagePath = "github.com/hashicorp/terraform";
fetch = {
type = "git";
url = "https://github.com/hashicorp/terraform";
rev = "27b720113ed5143a870ec151b3b7c9d955a09bc0";
sha256 = "1f0hwdf2z68p0ll3pgrx949h09q52gcfaxap0zz52m7px98sfab4";
};
}
{
goPackagePath = "github.com/tiramiseb/go-gandi-livedns";
fetch = {
type = "git";
url = "https://github.com/tiramiseb/go-gandi-livedns";
rev = "4773a84f8ee7365ed21edc6cd0602aaf93e94e59";
sha256 = "1i8s7yclrkhf974vs2splh5symzk0ym54px0bc216bq4ifzkwkqc";
};
}
]

View File

@ -36,11 +36,11 @@ with python'.pkgs;
buildPythonApplication rec { buildPythonApplication rec {
pname = "FlexGet"; pname = "FlexGet";
version = "2.14.21"; version = "2.15.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "08z0pf1g5xp3760da48v9h9hja2j8cgrwkgim156drk259bf5vm2"; sha256 = "0c0qyafm01j94m9vky6x4k6j6g3nygzhgm79fb25brc2fyydkm3c";
}; };
postPatch = '' postPatch = ''

View File

@ -2,13 +2,14 @@
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "bitlbee-discord-2017-12-27"; name = "bitlbee-discord-${version}";
version = "0.4.1";
src = fetchFromGitHub { src = fetchFromGitHub {
rev = "6a03db169ad44fee55609ecd16e19f3c0f99a182"; rev = version;
owner = "sm00th"; owner = "sm00th";
repo = "bitlbee-discord"; repo = "bitlbee-discord";
sha256 = "1ci9a12c6zg8d6i9f95pq6dal79cp4klmmsyj8ag2gin90kl3x95"; sha256 = "1n3xw5mcmg7224r09gbm39bd6h2158dwl6jx21290636b4345f4c";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ autoreconfHook pkgconfig ];

View File

@ -13,13 +13,13 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "dino-unstable-2018-09-05"; name = "dino-unstable-2018-09-21";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dino"; owner = "dino";
repo = "dino"; repo = "dino";
rev = "79e0aee5fdb90830fad748fdfae717cb5fbf91f9"; rev = "6b7ef800f54e781a618425236ba8d4ed2f2fef9c";
sha256 = "1sfh729fg6c5ds3rcma13paqnvv58jln34s93j74jnca19wgn7k5"; sha256 = "1si815b6y06lridj88hws0dgq54w9jfam9sqbrq3cfcvmhc38ysk";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View File

@ -20,13 +20,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nheko-${version}"; name = "nheko-${version}";
version = "0.6.1"; version = "0.6.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mujx"; owner = "mujx";
repo = "nheko"; repo = "nheko";
rev = "v${version}"; rev = "v${version}";
sha256 = "00jigca7kcqwm57qalz7ifz9p6v7p3pnamjvpkxjjix2rm9wmg2q"; sha256 = "014k68mmw3ys7ldgj96kkr1i1lyv2nk89wndkqznsizcr3097fn5";
}; };
# If, on Darwin, you encounter the error # If, on Darwin, you encounter the error
@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ ekleog fpletz ]; maintainers = with maintainers; [ ekleog fpletz ];
platforms = platforms.unix; platforms = platforms.unix;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
knownVulnerabilities = [ "No longer maintained" ];
}; };
} }

View File

@ -4,8 +4,8 @@ let
mkTelegram = args: qt5.callPackage (import ./generic.nix args) { }; mkTelegram = args: qt5.callPackage (import ./generic.nix args) { };
stableVersion = { stableVersion = {
stable = true; stable = true;
version = "1.4.0"; version = "1.4.2";
sha256Hash = "1zlsvbk9vgsqwplcswh2q0mqjdqf5md1043paab02wy3qg2x37d8"; sha256Hash = "025qld597b6x7wbf1y1qpcsz0brpf3qsqj650mq9fpps1yi1vfk7";
# svn log svn://svn.archlinux.org/community/telegram-desktop/trunk # svn log svn://svn.archlinux.org/community/telegram-desktop/trunk
archPatchesRevision = "388730"; archPatchesRevision = "388730";
archPatchesHash = "1gvisz36bc6bl4zcpjyyk0a2dl6ixp65an8wgm2lkc9mhkl783q7"; archPatchesHash = "1gvisz36bc6bl4zcpjyyk0a2dl6ixp65an8wgm2lkc9mhkl783q7";

View File

@ -6,7 +6,7 @@ with stdenv.lib;
let let
bits = "x86_64"; bits = "x86_64";
version = "3.14.10"; version = "4.3.0";
desktopItem = makeDesktopItem rec { desktopItem = makeDesktopItem rec {
name = "Wavebox"; name = "Wavebox";
@ -23,7 +23,7 @@ in stdenv.mkDerivation rec {
name = "wavebox-${version}"; name = "wavebox-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/wavebox/waveboxapp/releases/download/v${version}/${tarball}"; url = "https://github.com/wavebox/waveboxapp/releases/download/v${version}/${tarball}";
sha256 = "06ce349f561c6122b2d326e9a1363fb358e263c81a7d1d08723ec567235bbd74"; sha256 = "0kdg5q9rv8nxlg5jhmdfy5vv7gkdswzhy49af29d3zf57z69187c";
}; };
# don't remove runtime deps # don't remove runtime deps

View File

@ -1,36 +1,31 @@
{ stdenv, fetchFromGitHub, cmake, pkgconfig, gnome3, gmime3, webkitgtk { stdenv, fetchFromGitHub, cmake, pkgconfig, gnome3, gmime3, webkitgtk222x
, libsass, notmuch, boost, wrapGAppsHook, glib-networking, protobuf, vim_configurable , libsass, notmuch, boost, wrapGAppsHook, glib-networking, protobuf, vim_configurable
, makeWrapper, python3, python3Packages , makeWrapper, python3, python3Packages
, vim ? vim_configurable.override { , vim ? vim_configurable.override {
features = "normal"; features = "normal";
gui = "auto"; gui = "auto";
} }
, ronn
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "astroid-${version}"; name = "astroid-${version}";
version = "0.13"; version = "0.14";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "astroidmail"; owner = "astroidmail";
repo = "astroid"; repo = "astroid";
rev = "v${version}"; rev = "v${version}";
sha256 = "105x5g44hng3fi03h67j3an53088148jbq8726nmcp0zs0cy9gac"; sha256 = "1wkv1icsx3g3gq485dnvcdhr9srrjgz4ws1i1krcw9n61bj7gxh8";
}; };
nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ]; nativeBuildInputs = [ cmake ronn pkgconfig wrapGAppsHook ];
buildInputs = [ gnome3.gtkmm gmime3 webkitgtk libsass gnome3.libpeas buildInputs = [ gnome3.gtkmm gmime3 webkitgtk222x libsass gnome3.libpeas
python3 python3Packages.pygobject3 python3 python3Packages.pygobject3
notmuch boost gnome3.gsettings-desktop-schemas gnome3.defaultIconTheme notmuch boost gnome3.gsettings-desktop-schemas gnome3.defaultIconTheme
glib-networking protobuf ] ++ (if vim == null then [] else [ vim ]); glib-networking protobuf ] ++ (if vim == null then [] else [ vim ]);
patches = [
# TODO: remove when https://github.com/astroidmail/astroid/pull/531
# is released
./run_tests.diff
];
postPatch = '' postPatch = ''
sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
sed -i "s~ -geom 10x10~~g" src/config.cc sed -i "s~ -geom 10x10~~g" src/config.cc

View File

@ -1,10 +0,0 @@
diff --git a/tests/run_test.sh b/tests/run_test.sh
index f2ea7d7..927c61d 100755
--- a/tests/run_test.sh
+++ b/tests/run_test.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
#
# Set up environment and run test specified on command line

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, ncurses }: { stdenv, fetchurl, fetchpatch, ncurses }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.7.4"; version = "0.7.4";
@ -9,6 +9,19 @@ stdenv.mkDerivation rec {
sha256 = "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"; sha256 = "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61";
}; };
patches = [
# Fixes an ugly bug of graphs scrolling to the side, corrupting the view.
# There is an upstream fix, but not a new upstream release that includes it.
# Other distributions like Gentoo also patch this as a result; see:
# https://github.com/rolandriegel/nload/issues/3#issuecomment-427579143
# TODO Remove when https://github.com/rolandriegel/nload/issues/3 is merged and available
(fetchpatch {
url = "https://github.com/rolandriegel/nload/commit/8a93886e0fb33a81b8fe32e88ee106a581fedd34.patch";
name = "nload-0.7.4-Eliminate-flicker-on-some-terminals.patch";
sha256 = "10yppy5l50wzpcvagsqkbyf1rcan6aj30am4rw8hmkgnbidf4zbq";
})
];
buildInputs = [ ncurses ]; buildInputs = [ ncurses ];
meta = { meta = {

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pjsip-${version}"; name = "pjsip-${version}";
version = "2.7.2"; version = "2.8";
src = fetchurl { src = fetchurl {
url = "http://www.pjsip.org/release/${version}/pjproject-${version}.tar.bz2"; url = "http://www.pjsip.org/release/${version}/pjproject-${version}.tar.bz2";
sha256 = "0wiph6g51wanzwjjrpwsz63amgvly8g08jz033gnwqmppa584b4w"; sha256 = "0ybg0113rp3fk49rm2v0pcgqb28h3dv1pdy9594w2ggiz7bhngah";
}; };
buildInputs = [ openssl libsamplerate alsaLib ]; buildInputs = [ openssl libsamplerate alsaLib ];

View File

@ -9,13 +9,13 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "resilio-sync-${version}"; name = "resilio-sync-${version}";
version = "2.6.0"; version = "2.6.1";
src = fetchurl { src = fetchurl {
url = "https://download-cdn.resilio.com/${version}/linux-${arch}/resilio-sync_${arch}.tar.gz"; url = "https://download-cdn.resilio.com/${version}/linux-${arch}/resilio-sync_${arch}.tar.gz";
sha256 = { sha256 = {
"x86_64-linux" = "0041axi9carspkfaxvyirfvsa29zz55al01x90nh93nzxvpvywsz"; "x86_64-linux" = "02wbllrj80kqpyywfr05fsqpgwrv2i8smr3gfdpn7ni9b8hkj0ji";
"i686-linux" = "1ar36lp4f6a1z9i82g3gpak4q4ny09faqxdd59q1pvfzq25ypdhs"; "i686-linux" = "02zhh6gfds6miznbx30ghzihhm330mh5xnm42mxj8j29aqlzgd95";
}.${stdenv.hostPlatform.system}; }.${stdenv.hostPlatform.system};
}; };

View File

@ -7,8 +7,8 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
srcVersion = "oct18a"; srcVersion = "oct18b";
version = "20181001_a"; version = "20181001_b";
name = "gildas-${version}"; name = "gildas-${version}";
src = fetchurl { src = fetchurl {
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
# source code of the previous release to a different directory # source code of the previous release to a different directory
urls = [ "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.gz" urls = [ "http://www.iram.fr/~gildas/dist/gildas-src-${srcVersion}.tar.gz"
"http://www.iram.fr/~gildas/dist/archive/gildas/gildas-src-${srcVersion}.tar.gz" ]; "http://www.iram.fr/~gildas/dist/archive/gildas/gildas-src-${srcVersion}.tar.gz" ];
sha256 = "091941a74kaw3xqsmqda7bj972cafi8ppj2c5xq0mca2c075dyfx"; sha256 = "1q54q7y4zdax9vr28pvmy5g34kyr92jr3v1rkpjw7lxjafyqwy27";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -1,82 +0,0 @@
# - coqide compilation can be disabled by setting lablgtk to null;
# - The csdp program used for the Micromega tactic is statically referenced.
# However, coq can build without csdp by setting it to null.
# In this case some Micromega tactics will search the user's path for the csdp program and will fail if it is not found.
{ stdenv, lib, make, fetchurl
, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null }:
assert lib.versionOlder ocaml.version "4";
let
version = "8.3pl4";
buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
idePatch = if buildIde then ''
substituteInPlace scripts/coqmktop.ml --replace \
"\"-I\"; \"+lablgtk2\"" \
"\"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)\"; \"-I\"; \"$(echo "${lablgtk}"/lib/ocaml/*/site-lib/stublibs)\""
'' else "";
csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.search_exe_in_path \"csdp\"" "Some \"${csdp}/bin/csdp\""
'' else "";
in
stdenv.mkDerivation {
name = "coq-${version}";
src = fetchurl {
url = "https://coq.inria.fr/V${version}/files/coq-${version}.tar.gz";
sha256 = "17d3lmchmqir1rawnr52g78srg4wkd7clzpzfsivxc4y1zp6rwkr";
};
buildInputs = [ make ocaml findlib camlp5 ncurses lablgtk ];
prefixKey = "-prefix ";
preConfigure = ''
configureFlagsArray=(
-opt
-camldir ${ocaml}/bin
-camlp5dir $(ocamlfind query camlp5)
${ideFlags}
)
'';
buildFlags = "world"; # Debug with "world VERBOSE=1";
patches = [ ./configure.8.3.patch ];
postPatch = ''
UNAME=$(type -tp uname)
RM=$(type -tp rm)
substituteInPlace configure --replace "/bin/uname" "$UNAME"
substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
${idePatch}
${csdpPatch}
'';
# This post install step is needed to build ssrcoqide from the ssreflect package
# It could be made optional, but I see little harm in including it in the default
# distribution -- roconnor
# This will likely no longer be necessary for coq >= 8.4. -- roconnor
postInstall = if buildIde then ''
cp ide/*.cmi ide/ide.*a $out/lib/coq/ide/
'' else "";
meta = with stdenv.lib; {
description = "Coq proof assistant";
longDescription = ''
Coq is a formal proof management system. It provides a formal language
to write mathematical definitions, executable algorithms and theorems
together with an environment for semi-interactive development of
machine-checked proofs.
'';
homepage = http://coq.inria.fr;
license = licenses.lgpl21;
branch = "8.3";
maintainers = with maintainers; [ roconnor vbgl ];
platforms = with platforms; linux;
};
}

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,6 @@ let
"8.8.2" = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd"; "8.8.2" = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd";
}."${version}"; }."${version}";
coq-version = builtins.substring 0 3 version; coq-version = builtins.substring 0 3 version;
camlp5 = ocamlPackages.camlp5_strict;
ideFlags = if buildIde then "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; ideFlags = if buildIde then "-lablgtkdir ${ocamlPackages.lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
csdpPatch = if csdp != null then '' csdpPatch = if csdp != null then ''
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp" substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
@ -37,8 +36,8 @@ self = stdenv.mkDerivation {
name = "coq-${version}"; name = "coq-${version}";
passthru = { passthru = {
inherit coq-version camlp5; inherit coq-version;
inherit (ocamlPackages) ocaml findlib num; inherit (ocamlPackages) ocaml camlp5 findlib num;
emacsBufferSetup = pkgs: '' emacsBufferSetup = pkgs: ''
; Propagate coq paths to children ; Propagate coq paths to children
(inherit-local-permanent coq-prog-name "${self}/bin/coqtop") (inherit-local-permanent coq-prog-name "${self}/bin/coqtop")
@ -93,7 +92,7 @@ self = stdenv.mkDerivation {
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ ocamlPackages.ocaml ocamlPackages.findlib camlp5 ncurses ocamlPackages.num ] buildInputs = [ ncurses ] ++ (with ocamlPackages; [ ocaml findlib camlp5 num ])
++ stdenv.lib.optional buildIde ocamlPackages.lablgtk; ++ stdenv.lib.optional buildIde ocamlPackages.lablgtk;
postPatch = '' postPatch = ''

View File

@ -1,19 +0,0 @@
diff --git a/Makefile.build b/Makefile.build
index 2963a3d..876479c 100644
--- a/Makefile.build
+++ b/Makefile.build
@@ -101,13 +101,8 @@ BYTEFLAGS=$(CAMLDEBUG) $(USERFLAGS)
OPTFLAGS=$(CAMLDEBUGOPT) $(CAMLTIMEPROF) $(USERFLAGS)
DEPFLAGS= $(LOCALINCLUDES) -I ide -I ide/utils
-ifeq ($(ARCH),Darwin)
-LINKMETADATA=-ccopt "-sectcreate __TEXT __info_plist config/Info-$(notdir $@).plist"
-CODESIGN=codesign -s -
-else
LINKMETADATA=
CODESIGN=true
-endif
define bestocaml
$(if $(OPT),\

View File

@ -1,65 +0,0 @@
{stdenv, fetchurl, ocaml, findlib, gdome2, ocaml_expat, gmetadom, ocaml_http, lablgtk, ocaml_mysql, ocamlnet, ulex08, camlzip, ocaml_pcre, automake, autoconf }:
let
version = "0.99.1pre130312";
pname = "matita";
in
stdenv.mkDerivation {
name = "${pname}-${version}";
src = fetchurl {
url = "http://matita.cs.unibo.it/sources/${pname}_130312.tar.gz";
sha256 = "13mjvvldv53dcdid6wmc6g8yn98xca26xq2rgq2jg700lqsni59s";
};
sourceRoot="${pname}-${version}";
unpackPhase = ''
mkdir $sourceRoot
tar -xvzf $src -C $sourceRoot
echo "source root is $sourceRoot"
'';
prePatch = ''
autoreconf -fvi
'';
buildInputs = [ocaml findlib gdome2 ocaml_expat gmetadom ocaml_http lablgtk ocaml_mysql ocamlnet ulex08 camlzip ocaml_pcre automake autoconf];
postPatch = ''
BASH=$(type -tp bash)
substituteInPlace components/Makefile --replace "SHELL=/bin/bash" "SHELL=$BASH"
substituteInPlace matita/Makefile --replace "SHELL=/bin/bash" "SHELL=$BASH"
substituteInPlace configure --replace "ulex08" "ulex"
substituteInPlace components/METAS/meta.helm-content_pres.src --replace "ulex08" "ulex"
substituteInPlace components/content_pres/Makefile --replace "ulex08" "ulex"
substituteInPlace components/METAS/meta.helm-grafite_parser.src --replace "ulex08" "ulex"
substituteInPlace components/grafite_parser/Makefile --replace "ulex08" "ulex"
substituteInPlace configure --replace "zip" "camlzip"
substituteInPlace components/METAS/meta.helm-getter.src --replace "zip" "camlzip"
substituteInPlace components/METAS/meta.helm-xml.src --replace "zip" "camlzip"
'';
patches = [ ./configure_130312.patch ];
preConfigure = ''
# Setup for findlib.
OCAMLPATH=$(pwd)/components/METAS:$OCAMLPATH
RTDIR=$out/share/matita
export configureFlags="--with-runtime-dir=$RTDIR"
'';
postInstall = ''
mkdir -p $out/bin
ln -vs $RTDIR/matita $RTDIR/matitac $RTDIR/matitaclean $RTDIR/matitadep $RTDIR/matitawiki $out/bin
'';
meta = {
homepage = http://matita.cs.unibo.it/;
description = "Matita is an experimental, interactive theorem prover";
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.roconnor ];
broken = true;
};
}

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