Merge master into staging
This commit is contained in:
commit
6f5142e48e
@ -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)))
|
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@ -20,7 +20,7 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license.
|
||||
(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:
|
||||
|
||||
|
@ -966,5 +966,766 @@ lib.attrsets.mapAttrsToList (name: value: "${name}=${value}")
|
||||
itself to attribute sets. Also, the first argument of the argument function
|
||||
is a <emphasis>list</emphasis> of the names of the containing attributes.
|
||||
</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>
|
||||
|
@ -186,7 +186,7 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
|
||||
`toolz` package.
|
||||
|
||||
```nix
|
||||
{ # ...
|
||||
{ lib, buildPythonPackage, fetchPypi }:
|
||||
|
||||
toolz = buildPythonPackage rec {
|
||||
pname = "toolz";
|
||||
@ -199,8 +199,8 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/pytoolz/toolz/";
|
||||
meta = with lib; {
|
||||
homepage = https://github.com/pytoolz/toolz;
|
||||
description = "List processing tools and functional utilities";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ fridh ];
|
||||
@ -267,12 +267,13 @@ that we introduced with the `let` expression.
|
||||
|
||||
#### Handling dependencies
|
||||
|
||||
Our example, `toolz`, does not have any dependencies on other Python
|
||||
packages or system libraries. According to the manual, `buildPythonPackage`
|
||||
uses the arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If something is
|
||||
exclusively a build-time dependency, then the dependency should be included as a
|
||||
`buildInput`, but if it is (also) a runtime dependency, then it should be added
|
||||
to `propagatedBuildInputs`. Test dependencies are considered build-time dependencies.
|
||||
Our example, `toolz`, does not have any dependencies on other Python packages or
|
||||
system libraries. According to the manual, `buildPythonPackage` uses the
|
||||
arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If
|
||||
something is exclusively a build-time dependency, then the dependency should be
|
||||
included as a `buildInput`, but if it is (also) a runtime dependency, then it
|
||||
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
|
||||
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 ];
|
||||
propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ];
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
homepage = https://github.com/ContinuumIO/datashape;
|
||||
description = "A data description language";
|
||||
license = licenses.bsd2;
|
||||
@ -326,7 +327,7 @@ when building the bindings and are therefore added as `buildInputs`.
|
||||
|
||||
buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ];
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "Pythonic binding for the libxml2 and libxslt libraries";
|
||||
homepage = https://lxml.de;
|
||||
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"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
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 ];
|
||||
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`,
|
||||
and in this case the `python35` interpreter is automatically used.
|
||||
|
||||
|
||||
|
||||
## Reference
|
||||
|
||||
### Interpreters
|
||||
@ -549,31 +548,31 @@ The `buildPythonPackage` function is implemented in
|
||||
|
||||
The following is an example:
|
||||
```nix
|
||||
{ lib, buildPythonPackage, fetchPypi, hypothesis, setuptools_scm, attrs, py, setuptools, six, pluggy }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
version = "3.3.1";
|
||||
pname = "pytest";
|
||||
|
||||
preCheck = ''
|
||||
# don't test bash builtins
|
||||
rm testing/test_argcomplete.py
|
||||
'';
|
||||
version = "3.3.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# don't test bash builtins
|
||||
rm testing/test_argcomplete.py
|
||||
'';
|
||||
|
||||
checkInputs = [ hypothesis ];
|
||||
buildInputs = [ setuptools_scm ];
|
||||
propagatedBuildInputs = [ attrs py setuptools six pluggy ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
meta = with lib; {
|
||||
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
|
||||
description = "Framework for writing tests";
|
||||
};
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
A distinction is made between applications and libraries, however, sometimes a
|
||||
|
@ -196,7 +196,7 @@ rec {
|
||||
newScope = scope: newScope (self // scope);
|
||||
callPackage = self.newScope {};
|
||||
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));
|
||||
overrideScope' = g: makeScope newScope (lib.fixedPoints.extends g f);
|
||||
packages = f;
|
||||
|
@ -28,7 +28,7 @@ rec {
|
||||
};
|
||||
|
||||
armv7l-hf-multiplatform = rec {
|
||||
config = "armv7a-unknown-linux-gnueabihf";
|
||||
config = "armv7l-unknown-linux-gnueabihf";
|
||||
platform = platforms.armv7l-hf-multiplatform;
|
||||
};
|
||||
|
||||
|
@ -194,7 +194,10 @@ rec {
|
||||
# separator between the values).
|
||||
separatedString = sep: mkOptionType rec {
|
||||
name = "separatedString";
|
||||
description = "string";
|
||||
description = if sep == ""
|
||||
then "Concatenated string" # for types.string.
|
||||
else "strings concatenated with ${builtins.toJSON sep}"
|
||||
;
|
||||
check = isString;
|
||||
merge = loc: defs: concatStringsSep sep (getValues defs);
|
||||
functor = (defaultFunctor name) // {
|
||||
|
@ -520,6 +520,11 @@
|
||||
github = "bgamari";
|
||||
name = "Ben Gamari";
|
||||
};
|
||||
bhall = {
|
||||
email = "brendan.j.hall@bath.edu";
|
||||
github = "brendan-hall";
|
||||
name = "Brendan Hall";
|
||||
};
|
||||
bhipple = {
|
||||
email = "bhipple@protonmail.com";
|
||||
github = "bhipple";
|
||||
@ -1195,6 +1200,11 @@
|
||||
github = "eduarrrd";
|
||||
name = "Eduard Bachmakov";
|
||||
};
|
||||
edude03 = {
|
||||
email = "michael@melenion.com";
|
||||
github = "edude03";
|
||||
name = "Michael Francis";
|
||||
};
|
||||
edwtjo = {
|
||||
email = "ed@cflags.cc";
|
||||
github = "edwtjo";
|
||||
@ -2148,6 +2158,11 @@
|
||||
github = "kiloreux";
|
||||
name = "Kiloreux Emperex";
|
||||
};
|
||||
kimburgess = {
|
||||
email = "kim@acaprojects.com";
|
||||
github = "kimburgess";
|
||||
name = "Kim Burgess";
|
||||
};
|
||||
kini = {
|
||||
email = "keshav.kini@gmail.com";
|
||||
github = "kini";
|
||||
@ -3125,6 +3140,11 @@
|
||||
github = "pacien";
|
||||
name = "Pacien Tran-Girard";
|
||||
};
|
||||
paddygord = {
|
||||
email = "pgpatrickgordon@gmail.com";
|
||||
github = "paddygord";
|
||||
name = "Patrick Gordon";
|
||||
};
|
||||
paholg = {
|
||||
email = "paho@paholg.com";
|
||||
github = "paholg";
|
||||
|
@ -115,10 +115,17 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Add a <emphasis>swap</emphasis> partition. The size required will vary
|
||||
according to needs, here a 8GiB one is created. The space left in front
|
||||
(512MiB) will be used by the boot partition.
|
||||
<screen language="commands"># parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB</screen>
|
||||
Add the <emphasis>root</emphasis> partition. This will fill the disk
|
||||
except for the end part, where the swap will live, and the space left in
|
||||
front (512MiB) which will be used by the boot partition.
|
||||
<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>
|
||||
<para>
|
||||
The swap partition size rules are no different than for other Linux
|
||||
@ -127,20 +134,13 @@
|
||||
</note>
|
||||
</para>
|
||||
</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>
|
||||
<para>
|
||||
Finally, the <emphasis>boot</emphasis> partition. NixOS by default uses
|
||||
the ESP (EFI system partition) as its <emphasis>/boot</emphasis>
|
||||
partition. It uses the initially reserved 512MiB at the start of the
|
||||
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>
|
||||
</para>
|
||||
</listitem>
|
||||
@ -177,9 +177,16 @@
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
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 1M 8GiB</screen>
|
||||
Add the <emphasis>root</emphasis> partition. This will fill the the disk
|
||||
except for the end part, where the swap will live.
|
||||
<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>
|
||||
<para>
|
||||
The swap partition size rules are no different than for other Linux
|
||||
@ -188,13 +195,6 @@
|
||||
</note>
|
||||
</para>
|
||||
</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>
|
||||
</para>
|
||||
|
||||
@ -486,17 +486,17 @@ $ nix-env -i w3m</screen>
|
||||
<title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (MBR)</title>
|
||||
<screen language="commands">
|
||||
# parted /dev/sda -- mklabel msdos
|
||||
# parted /dev/sda -- mkpart primary linux-swap 1M 8GiB
|
||||
# parted /dev/sda -- mkpart primary 8GiB -1s</screen>
|
||||
# parted /dev/sda -- mkpart primary 1MiB -8GiB
|
||||
# parted /dev/sda -- mkpart primary linux-swap -8GiB 100%</screen>
|
||||
</example>
|
||||
|
||||
<example xml:id="ex-partition-scheme-UEFI">
|
||||
<title>Example partition schemes for NixOS on <filename>/dev/sda</filename> (UEFI)</title>
|
||||
<screen language="commands">
|
||||
# parted /dev/sda -- mklabel gpt
|
||||
# parted /dev/sda -- mkpart primary linux-swap 512MiB 8.5GiB
|
||||
# parted /dev/sda -- mkpart primary 8.5GiB -1MiB
|
||||
# parted /dev/sda -- mkpart ESP fat32 1M 512MiB
|
||||
# parted /dev/sda -- mkpart primary 512MiB -8GiB
|
||||
# parted /dev/sda -- mkpart primary linux-swap -8GiB 100%
|
||||
# parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB
|
||||
# parted /dev/sda -- set 3 boot on</screen>
|
||||
</example>
|
||||
|
||||
|
@ -113,6 +113,15 @@
|
||||
(i.e. <literal>users.users.yourusername.extraGroups = ["video"];</literal>).
|
||||
</para>
|
||||
</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>
|
||||
</section>
|
||||
|
||||
|
@ -79,7 +79,7 @@ in {
|
||||
|
||||
options = {
|
||||
krb5 = {
|
||||
enable = mkEnableOption "Whether to enable Kerberos V.";
|
||||
enable = mkEnableOption "building krb5.conf, configuration file for Kerberos V";
|
||||
|
||||
kerberos = mkOption {
|
||||
type = types.package;
|
||||
|
@ -140,7 +140,7 @@ in
|
||||
if [ -x $out/bin/glib-compile-schemas -a -w $out/share/glib-2.0/schemas ]; then
|
||||
$out/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
||||
fi
|
||||
|
||||
|
||||
${config.environment.extraSetup}
|
||||
'';
|
||||
};
|
||||
|
@ -24,11 +24,11 @@ with lib;
|
||||
|
||||
environment.extraSetup = ''
|
||||
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
|
||||
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
@ -166,7 +166,7 @@ in
|
||||
if [ -w $out/share/info ]; then
|
||||
shopt -s nullglob
|
||||
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
|
||||
fi
|
||||
'';
|
||||
|
@ -735,12 +735,14 @@
|
||||
./services/x11/display-managers/lightdm.nix
|
||||
./services/x11/display-managers/sddm.nix
|
||||
./services/x11/display-managers/slim.nix
|
||||
./services/x11/display-managers/startx.nix
|
||||
./services/x11/display-managers/xpra.nix
|
||||
./services/x11/fractalart.nix
|
||||
./services/x11/hardware/libinput.nix
|
||||
./services/x11/hardware/multitouch.nix
|
||||
./services/x11/hardware/synaptics.nix
|
||||
./services/x11/hardware/wacom.nix
|
||||
./services/x11/gdk-pixbuf.nix
|
||||
./services/x11/redshift.nix
|
||||
./services/x11/urxvtd.nix
|
||||
./services/x11/window-managers/awesome.nix
|
||||
|
@ -9,7 +9,7 @@ let
|
||||
cfg = config.programs.fish;
|
||||
|
||||
fishAliases = concatStringsSep "\n" (
|
||||
mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases
|
||||
mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}") cfg.shellAliases
|
||||
);
|
||||
|
||||
in
|
||||
|
@ -6,8 +6,12 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.buildbot-master;
|
||||
|
||||
python = cfg.package.pythonModule;
|
||||
|
||||
escapeStr = s: escape ["'"] s;
|
||||
masterCfg = if cfg.masterCfg == null then pkgs.writeText "master.cfg" ''
|
||||
|
||||
defaultMasterCfg = pkgs.writeText "master.cfg" ''
|
||||
from buildbot.plugins import *
|
||||
factory = util.BuildFactory()
|
||||
c = BuildmasterConfig = dict(
|
||||
@ -27,8 +31,28 @@ let
|
||||
factory.addStep(step)
|
||||
|
||||
${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 {
|
||||
options = {
|
||||
@ -66,9 +90,9 @@ in {
|
||||
};
|
||||
|
||||
masterCfg = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
type = types.path;
|
||||
description = "Optionally pass master.cfg path. Other options in this configuration will be ignored.";
|
||||
default = null;
|
||||
default = defaultMasterCfg;
|
||||
example = "/etc/nixos/buildbot/master.cfg";
|
||||
};
|
||||
|
||||
@ -175,18 +199,25 @@ in {
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.buildbot-full;
|
||||
defaultText = "pkgs.buildbot-full";
|
||||
default = pkgs.pythonPackages.buildbot-full;
|
||||
defaultText = "pkgs.pythonPackages.buildbot-full";
|
||||
description = "Package to use for buildbot.";
|
||||
example = literalExample "pkgs.buildbot-full";
|
||||
example = literalExample "pkgs.python3Packages.buildbot-full";
|
||||
};
|
||||
|
||||
packages = mkOption {
|
||||
default = with pkgs; [ python27Packages.twisted git ];
|
||||
default = [ pkgs.git ];
|
||||
example = literalExample "[ pkgs.git ]";
|
||||
type = types.listOf types.package;
|
||||
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.";
|
||||
after = [ "network-online.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 = ''
|
||||
env > envvars
|
||||
mkdir -vp ${cfg.buildbotDir}
|
||||
ln -sfv ${masterCfg} ${cfg.buildbotDir}/master.cfg
|
||||
rm -fv $cfg.buildbotDir}/buildbot.tac
|
||||
${cfg.package}/bin/buildbot create-master ${cfg.buildbotDir}
|
||||
mkdir -vp "${cfg.buildbotDir}"
|
||||
# Link the tac file so buildbot command line tools recognize the directory
|
||||
ln -sf "${tacFile}" "${cfg.buildbotDir}/buildbot.tac"
|
||||
${cfg.package}/bin/buildbot create-master --db "${cfg.dbUrl}" "${cfg.buildbotDir}"
|
||||
rm -f buildbot.tac.new master.cfg.sample
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
@ -225,12 +257,11 @@ in {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
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 ];
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,40 @@ with lib;
|
||||
let
|
||||
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 {
|
||||
options = {
|
||||
services.buildbot-worker = {
|
||||
@ -59,6 +93,23 @@ in {
|
||||
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 {
|
||||
default = "localhost:9989";
|
||||
type = types.str;
|
||||
@ -67,23 +118,24 @@ in {
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.buildbot-worker;
|
||||
defaultText = "pkgs.buildbot-worker";
|
||||
default = pkgs.pythonPackages.buildbot-worker;
|
||||
defaultText = "pkgs.pythonPackages.buildbot-worker";
|
||||
description = "Package to use for buildbot worker.";
|
||||
example = literalExample "pkgs.buildbot-worker";
|
||||
example = literalExample "pkgs.python3Packages.buildbot-worker";
|
||||
};
|
||||
|
||||
packages = mkOption {
|
||||
default = with pkgs; [ python27Packages.twisted git ];
|
||||
default = with pkgs; [ git ];
|
||||
example = literalExample "[ pkgs.git ]";
|
||||
type = types.listOf types.package;
|
||||
description = "Packages to add to PATH for the buildbot process.";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass);
|
||||
|
||||
users.groups = optional (cfg.group == "bbworker") {
|
||||
name = "bbworker";
|
||||
};
|
||||
@ -104,11 +156,16 @@ in {
|
||||
after = [ "network.target" "buildbot-master.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = cfg.packages;
|
||||
environment.PYTHONPATH = "${python.withPackages (p: [ cfg.package ])}/${python.sitePackages}";
|
||||
|
||||
preStart = ''
|
||||
mkdir -vp ${cfg.buildbotDir}
|
||||
rm -fv $cfg.buildbotDir}/buildbot.tac
|
||||
${cfg.package}/bin/buildbot-worker create-worker ${cfg.buildbotDir} ${cfg.masterUrl} ${cfg.workerUser} ${cfg.workerPass}
|
||||
mkdir -vp "${cfg.buildbotDir}/info"
|
||||
${optionalString (cfg.hostMessage != null) ''
|
||||
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 = {
|
||||
@ -116,11 +173,9 @@ in {
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
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
|
||||
#ExecStart = "${cfg.package}/bin/buildbot-worker start --nodaemon ${cfg.buildbotDir}";
|
||||
ExecStart = "${pkgs.python27Packages.twisted}/bin/twistd -n -l - -y ${cfg.buildbotDir}/buildbot.tac";
|
||||
ExecStart = "${python.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -7,7 +7,7 @@
|
||||
# to be set.
|
||||
#
|
||||
# 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, ...}:
|
||||
|
||||
|
@ -52,7 +52,7 @@ in
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.rspamd.enable;
|
||||
default = false;
|
||||
description = "Whether to run the rmilter daemon.";
|
||||
};
|
||||
|
||||
|
@ -159,7 +159,7 @@ in
|
||||
|
||||
services.rspamd = {
|
||||
|
||||
enable = mkEnableOption "Whether to run the rspamd daemon.";
|
||||
enable = mkEnableOption "rspamd, the Rapid spam filtering system";
|
||||
|
||||
debug = mkOption {
|
||||
type = types.bool;
|
||||
|
@ -399,8 +399,8 @@ in
|
||||
systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
|
||||
|
||||
systemd.services.nix-daemon =
|
||||
{ path = [ nix pkgs.utillinux ]
|
||||
++ optionals cfg.distributedBuilds [ config.programs.ssh.package pkgs.gzip ]
|
||||
{ path = [ nix pkgs.utillinux config.programs.ssh.package ]
|
||||
++ optionals cfg.distributedBuilds [ pkgs.gzip ]
|
||||
++ optionals (!isNix20) [ pkgs.openssl.bin ];
|
||||
|
||||
environment = cfg.envVars
|
||||
|
@ -40,6 +40,8 @@ in
|
||||
|
||||
systemd.services.nix-optimise =
|
||||
{ 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";
|
||||
startAt = optionals cfg.automatic cfg.dates;
|
||||
};
|
||||
|
@ -5,7 +5,7 @@ with lib;
|
||||
let
|
||||
cfg = config.services.redmine;
|
||||
|
||||
bundle = "${pkgs.redmine}/share/redmine/bin/bundle";
|
||||
bundle = "${cfg.package}/share/redmine/bin/bundle";
|
||||
|
||||
databaseYml = pkgs.writeText "database.yml" ''
|
||||
production:
|
||||
@ -15,6 +15,7 @@ let
|
||||
port: ${toString cfg.database.port}
|
||||
username: ${cfg.database.user}
|
||||
password: #dbpass#
|
||||
${optionalString (cfg.database.socket != null) "socket: ${cfg.database.socket}"}
|
||||
'';
|
||||
|
||||
configurationYml = pkgs.writeText "configuration.yml" ''
|
||||
@ -29,6 +30,19 @@ let
|
||||
${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
|
||||
|
||||
{
|
||||
@ -40,6 +54,14 @@ in
|
||||
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 {
|
||||
type = types.str;
|
||||
default = "redmine";
|
||||
@ -52,6 +74,12 @@ in
|
||||
description = "Group under which Redmine is ran.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 3000;
|
||||
description = "Port on which Redmine is ran.";
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/redmine";
|
||||
@ -66,6 +94,41 @@ in
|
||||
|
||||
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 = {
|
||||
@ -78,7 +141,7 @@ in
|
||||
|
||||
host = mkOption {
|
||||
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.";
|
||||
};
|
||||
|
||||
@ -119,6 +182,13 @@ in
|
||||
<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 {
|
||||
|
||||
assertions = [
|
||||
{ assertion = cfg.database.passwordFile != null || cfg.database.password != "";
|
||||
message = "either services.redmine.database.passwordFile or services.redmine.database.password must be set";
|
||||
{ assertion = cfg.database.passwordFile != null || cfg.database.password != "" || cfg.database.socket != null;
|
||||
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 = {
|
||||
after = [ "network.target" (if cfg.database.type == "mysql2" then "mysql.service" else "postgresql.service") ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment.HOME = "${pkgs.redmine}/share/redmine";
|
||||
environment.HOME = "${cfg.package}/share/redmine";
|
||||
environment.RAILS_ENV = "production";
|
||||
environment.RAILS_CACHE = "${cfg.stateDir}/cache";
|
||||
environment.REDMINE_LANG = "en";
|
||||
@ -151,43 +224,80 @@ in
|
||||
subversion
|
||||
];
|
||||
preStart = ''
|
||||
# start with a fresh config directory every time
|
||||
rm -rf ${cfg.stateDir}/config
|
||||
cp -r ${pkgs.redmine}/share/redmine/config.dist ${cfg.stateDir}/config
|
||||
# ensure cache directory exists for db:migrate command
|
||||
mkdir -p "${cfg.stateDir}/cache"
|
||||
|
||||
# create the basic state directory layout pkgs.redmine expects
|
||||
mkdir -p /run/redmine
|
||||
# create the basic directory layout the redmine package expects
|
||||
mkdir -p /run/redmine/public
|
||||
|
||||
for i in config files log plugins tmp; do
|
||||
mkdir -p ${cfg.stateDir}/$i
|
||||
ln -fs ${cfg.stateDir}/$i /run/redmine/$i
|
||||
mkdir -p "${cfg.stateDir}/$i"
|
||||
ln -fs "${cfg.stateDir}/$i" /run/redmine/
|
||||
done
|
||||
|
||||
# ensure cache directory exists for db:migrate command
|
||||
mkdir -p ${cfg.stateDir}/cache
|
||||
for i in plugin_assets themes; do
|
||||
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
|
||||
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})
|
||||
cp -f ${databaseYml} ${cfg.stateDir}/config/database.yml
|
||||
sed -e "s,#dbpass#,$DBPASS,g" -i ${cfg.stateDir}/config/database.yml
|
||||
chmod 440 ${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"
|
||||
chmod 440 "${cfg.stateDir}/config/database.yml"
|
||||
|
||||
|
||||
# generate a secret token if required
|
||||
if ! test -e "${cfg.stateDir}/config/initializers/secret_token.rb"; then
|
||||
${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
|
||||
|
||||
# ensure everything is owned by ${cfg.user}
|
||||
chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir}
|
||||
|
||||
${bundle} exec rake db:migrate
|
||||
${bundle} exec rake redmine:load_default_data
|
||||
# ensure everything is owned by ${cfg.user}
|
||||
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 = {
|
||||
@ -196,13 +306,13 @@ in
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
TimeoutSec = "300";
|
||||
WorkingDirectory = "${pkgs.redmine}/share/redmine";
|
||||
ExecStart="${bundle} exec rails server webrick -e production -P ${cfg.stateDir}/redmine.pid";
|
||||
WorkingDirectory = "${cfg.package}/share/redmine";
|
||||
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";
|
||||
group = cfg.group;
|
||||
home = cfg.stateDir;
|
||||
@ -210,7 +320,7 @@ in
|
||||
uid = config.ids.uids.redmine;
|
||||
});
|
||||
|
||||
users.extraGroups = optionalAttrs (cfg.group == "redmine") (singleton
|
||||
users.groups = optionalAttrs (cfg.group == "redmine") (singleton
|
||||
{ name = "redmine";
|
||||
gid = config.ids.gids.redmine;
|
||||
});
|
||||
|
@ -123,15 +123,13 @@ let
|
||||
systemd.services."prometheus-${name}-exporter" = mkMerge ([{
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
Restart = mkDefault "always";
|
||||
PrivateTmp = mkDefault true;
|
||||
WorkingDirectory = mkDefault /tmp;
|
||||
} // mkIf (!(serviceOpts.serviceConfig.DynamicUser or false)) {
|
||||
User = conf.user;
|
||||
Group = conf.group;
|
||||
};
|
||||
} serviceOpts ]);
|
||||
serviceConfig.Restart = mkDefault "always";
|
||||
serviceConfig.PrivateTmp = mkDefault true;
|
||||
serviceConfig.WorkingDirectory = mkDefault /tmp;
|
||||
} serviceOpts ] ++ optional (serviceOpts.serviceConfig.DynamicUser or false) {
|
||||
serviceConfig.User = conf.user;
|
||||
serviceConfig.Group = conf.group;
|
||||
});
|
||||
};
|
||||
in
|
||||
{
|
||||
@ -172,5 +170,8 @@ in
|
||||
}) exporterOpts)
|
||||
);
|
||||
|
||||
meta.doc = ./exporters.xml;
|
||||
meta = {
|
||||
doc = ./exporters.xml;
|
||||
maintainers = [ maintainers.willibutz ];
|
||||
};
|
||||
}
|
||||
|
@ -69,6 +69,7 @@ in
|
||||
path = [ pkgs.varnish ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
RestartSec = mkDefault 1;
|
||||
ExecStart = ''
|
||||
${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \
|
||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
||||
|
@ -5,7 +5,7 @@ with lib;
|
||||
{
|
||||
options = {
|
||||
services.pptpd = {
|
||||
enable = mkEnableOption "Whether pptpd should be run on startup.";
|
||||
enable = mkEnableOption "pptpd, the Point-to-Point Tunneling Protocol daemon";
|
||||
|
||||
serverIp = mkOption {
|
||||
type = types.string;
|
||||
|
@ -5,7 +5,7 @@ with lib;
|
||||
{
|
||||
options = {
|
||||
services.xl2tpd = {
|
||||
enable = mkEnableOption "Whether xl2tpd should be run on startup.";
|
||||
enable = mkEnableOption "xl2tpd, the Layer 2 Tunnelling Protocol Daemon";
|
||||
|
||||
serverIp = mkOption {
|
||||
type = types.string;
|
||||
|
@ -36,7 +36,7 @@ in
|
||||
|
||||
services.xrdp = {
|
||||
|
||||
enable = mkEnableOption "Whether xrdp should be run on startup.";
|
||||
enable = mkEnableOption "xrdp, the Remote Desktop Protocol server";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
|
@ -250,7 +250,7 @@ in
|
||||
drivers = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
example = literalExample "[ pkgs.gutenprint pkgs.hplip pkgs.splix ]";
|
||||
example = literalExample "with pkgs; [ gutenprint hplip splix cups-googlecloudprint ]";
|
||||
description = ''
|
||||
CUPS drivers to use. Drivers provided by CUPS, cups-filters,
|
||||
Ghostscript and Samba are added unconditionally. If this list contains
|
||||
|
@ -16,7 +16,7 @@ in
|
||||
|
||||
services.saslauthd = {
|
||||
|
||||
enable = mkEnableOption "Whether to enable the Cyrus SASL authentication daemon.";
|
||||
enable = mkEnableOption "saslauthd, the Cyrus SASL authentication daemon";
|
||||
|
||||
package = mkOption {
|
||||
default = pkgs.cyrus_sasl.bin;
|
||||
|
@ -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 = {
|
||||
dbtype = mkOption {
|
||||
type = types.enum [ "sqlite" "pgsql" "mysql" ];
|
||||
@ -339,11 +354,7 @@ in {
|
||||
listen.group = nginx
|
||||
user = nextcloud
|
||||
group = nginx
|
||||
pm = dynamic
|
||||
pm.max_children = 32
|
||||
pm.start_servers = 2
|
||||
pm.min_spare_servers = 2
|
||||
pm.max_spare_servers = 4
|
||||
${cfg.poolConfig}
|
||||
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
|
||||
${phpAdminValues}
|
||||
|
@ -133,7 +133,6 @@ in {
|
||||
|
||||
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.sessionCommands = ''
|
||||
|
@ -185,10 +185,8 @@ in
|
||||
target = "X11/xkb";
|
||||
};
|
||||
|
||||
environment.variables = {
|
||||
# Enable GTK applications to load SVG icons
|
||||
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
|
||||
};
|
||||
# Enable GTK applications to load SVG icons
|
||||
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||
|
||||
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
|
||||
fonts.fontconfig.defaultFonts = {
|
||||
|
@ -101,10 +101,11 @@ in
|
||||
];
|
||||
|
||||
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" ];
|
||||
};
|
||||
|
||||
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||
|
||||
services.xserver.desktopManager.session = [{
|
||||
name = "xfce";
|
||||
bgSupport = true;
|
||||
|
44
nixos/modules/services/x11/display-managers/startx.nix
Normal file
44
nixos/modules/services/x11/display-managers/startx.nix
Normal 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 ];
|
||||
};
|
||||
|
||||
}
|
45
nixos/modules/services/x11/gdk-pixbuf.nix
Normal file
45
nixos/modules/services/x11/gdk-pixbuf.nix
Normal 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}";
|
||||
};
|
||||
};
|
||||
}
|
@ -7,19 +7,19 @@ let
|
||||
|
||||
commonFunctions = ''
|
||||
die() {
|
||||
echo "$@" >&2
|
||||
exit 1
|
||||
echo "$@" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
dev_exist() {
|
||||
local target="$1"
|
||||
if [ -e $target ]; then
|
||||
return 0
|
||||
else
|
||||
local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g')
|
||||
local dev=$(blkid --uuid $uuid)
|
||||
return $?
|
||||
fi
|
||||
local target="$1"
|
||||
if [ -e $target ]; then
|
||||
return 0
|
||||
else
|
||||
local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g')
|
||||
blkid --uuid $uuid >/dev/null
|
||||
return $?
|
||||
fi
|
||||
}
|
||||
|
||||
wait_target() {
|
||||
@ -51,30 +51,30 @@ let
|
||||
}
|
||||
|
||||
wait_yubikey() {
|
||||
local secs="''${1:-10}"
|
||||
local secs="''${1:-10}"
|
||||
|
||||
ykinfo -v 1>/dev/null 2>&1
|
||||
if [ $? != 0 ]; then
|
||||
echo -n "Waiting $secs seconds for Yubikey to appear..."
|
||||
local success=false
|
||||
for try in $(seq $secs); do
|
||||
echo -n .
|
||||
sleep 1
|
||||
ykinfo -v 1>/dev/null 2>&1
|
||||
if [ $? == 0 ]; then
|
||||
success=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $success == true ]; then
|
||||
echo " - success";
|
||||
return 0
|
||||
else
|
||||
echo " - failure";
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
ykinfo -v 1>/dev/null 2>&1
|
||||
if [ $? != 0 ]; then
|
||||
echo -n "Waiting $secs seconds for Yubikey to appear..."
|
||||
local success=false
|
||||
for try in $(seq $secs); do
|
||||
echo -n .
|
||||
sleep 1
|
||||
ykinfo -v 1>/dev/null 2>&1
|
||||
if [ $? == 0 ]; then
|
||||
success=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ $success == true ]; then
|
||||
echo " - success";
|
||||
return 0
|
||||
else
|
||||
echo " - failure";
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
'';
|
||||
|
||||
|
@ -251,9 +251,9 @@ let
|
||||
postInstall = ''
|
||||
echo checking syntax
|
||||
# check both with bash
|
||||
${pkgs.bash}/bin/sh -n $target
|
||||
${pkgs.buildPackages.bash}/bin/sh -n $target
|
||||
# and with ash shell, just in case
|
||||
${extraUtils}/bin/ash -n $target
|
||||
${pkgs.buildPackages.busybox}/bin/ash -n $target
|
||||
'';
|
||||
|
||||
inherit udevRules extraUtils modulesClosure;
|
||||
|
@ -85,7 +85,8 @@ let
|
||||
after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ];
|
||||
before = [ "network.target" "shutdown.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" ];
|
||||
wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target";
|
||||
|
||||
|
@ -25,7 +25,7 @@ in {
|
||||
systemd.services.qemu-guest-agent = {
|
||||
description = "Run the QEMU Guest Agent";
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.kvm.ga}/bin/qemu-ga";
|
||||
ExecStart = "${pkgs.qemu.ga}/bin/qemu-ga";
|
||||
Restart = "always";
|
||||
RestartSec = 0;
|
||||
};
|
||||
|
@ -12,7 +12,7 @@ in {
|
||||
virtualbox = {
|
||||
baseImageSize = mkOption {
|
||||
type = types.int;
|
||||
default = 100 * 1024;
|
||||
default = 10 * 1024;
|
||||
description = ''
|
||||
The size of the VirtualBox base image in MiB.
|
||||
'';
|
||||
|
@ -5,7 +5,7 @@ let
|
||||
in {
|
||||
options = {
|
||||
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 {
|
||||
|
@ -257,7 +257,7 @@ in rec {
|
||||
tests.boot = callSubTests tests/boot.nix {};
|
||||
tests.boot-stage1 = callTest tests/boot-stage1.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.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {};
|
||||
tests.certmgr = callSubTests tests/certmgr.nix {};
|
||||
@ -390,12 +390,14 @@ in rec {
|
||||
tests.predictable-interface-names = callSubTests tests/predictable-interface-names.nix {};
|
||||
tests.printing = callTest tests/printing.nix {};
|
||||
tests.prometheus = callTest tests/prometheus.nix {};
|
||||
tests.prometheus-exporters = callTest tests/prometheus-exporters.nix {};
|
||||
tests.prosody = callTest tests/prosody.nix {};
|
||||
tests.proxy = callTest tests/proxy.nix {};
|
||||
tests.quagga = callTest tests/quagga.nix {};
|
||||
tests.quake3 = callTest tests/quake3.nix {};
|
||||
tests.rabbitmq = callTest tests/rabbitmq.nix {};
|
||||
tests.radicale = callTest tests/radicale.nix {};
|
||||
tests.redmine = callTest tests/redmine.nix {};
|
||||
tests.rspamd = callSubTests tests/rspamd.nix {};
|
||||
tests.runInMachine = callTest tests/run-in-machine.nix {};
|
||||
tests.rxe = callTest tests/rxe.nix {};
|
||||
|
@ -1,111 +1,117 @@
|
||||
# Test ensures buildbot master comes up correctly and workers can connect
|
||||
{ system ? builtins.currentSystem }:
|
||||
|
||||
import ./make-test.nix ({ pkgs, ... } : {
|
||||
name = "buildbot";
|
||||
with import ../lib/testing.nix { inherit system; };
|
||||
|
||||
nodes = {
|
||||
bbmaster = { pkgs, ... }: {
|
||||
services.buildbot-master = {
|
||||
enable = true;
|
||||
package = pkgs.buildbot-full;
|
||||
let
|
||||
# Test ensures buildbot master comes up correctly and workers can connect
|
||||
mkBuildbotTest = python: makeTest {
|
||||
name = "buildbot";
|
||||
|
||||
# NOTE: use fake repo due to no internet in hydra ci
|
||||
factorySteps = [
|
||||
"steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')"
|
||||
"steps.ShellCommand(command=['bash', 'fakerepo.sh'])"
|
||||
];
|
||||
changeSource = [
|
||||
"changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)"
|
||||
];
|
||||
nodes = {
|
||||
bbmaster = { pkgs, ... }: {
|
||||
services.buildbot-master = {
|
||||
enable = true;
|
||||
package = python.pkgs.buildbot-full;
|
||||
|
||||
# NOTE: use fake repo due to no internet in hydra ci
|
||||
factorySteps = [
|
||||
"steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')"
|
||||
"steps.ShellCommand(command=['bash', 'fakerepo.sh'])"
|
||||
];
|
||||
changeSource = [
|
||||
"changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)"
|
||||
];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ];
|
||||
environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-full ];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ];
|
||||
environment.systemPackages = with pkgs; [ git buildbot-full ];
|
||||
};
|
||||
|
||||
bbworker = { pkgs, ... }: {
|
||||
services.buildbot-worker = {
|
||||
enable = true;
|
||||
masterUrl = "bbmaster:9989";
|
||||
bbworker = { pkgs, ... }: {
|
||||
services.buildbot-worker = {
|
||||
enable = true;
|
||||
masterUrl = "bbmaster:9989";
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-worker ];
|
||||
};
|
||||
|
||||
gitrepo = { pkgs, ... }: {
|
||||
services.openssh.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 22 9418 ];
|
||||
environment.systemPackages = with pkgs; [ git ];
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ git buildbot-worker ];
|
||||
};
|
||||
|
||||
gitrepo = { pkgs, ... }: {
|
||||
services.openssh.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 22 9418 ];
|
||||
environment.systemPackages = with pkgs; [ git ];
|
||||
};
|
||||
testScript = ''
|
||||
#Start up and populate fake repo
|
||||
$gitrepo->waitForUnit("multi-user.target");
|
||||
print($gitrepo->execute(" \
|
||||
git config --global user.name 'Nobody Fakeuser' && \
|
||||
git config --global user.email 'nobody\@fakerepo.com' && \
|
||||
rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \
|
||||
mkdir -pv /srv/repos/fakerepo ~/.ssh && \
|
||||
ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \
|
||||
cat ~/.ssh/known_hosts && \
|
||||
cd /srv/repos/fakerepo && \
|
||||
git init && \
|
||||
echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \
|
||||
cat fakerepo.sh && \
|
||||
touch .git/git-daemon-export-ok && \
|
||||
git add fakerepo.sh .git/git-daemon-export-ok && \
|
||||
git commit -m fakerepo && \
|
||||
git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \
|
||||
"));
|
||||
|
||||
# Test gitrepo
|
||||
$bbmaster->waitForUnit("network-online.target");
|
||||
#$bbmaster->execute("nc -z gitrepo 9418");
|
||||
print($bbmaster->execute(" \
|
||||
rm -rfv /tmp/fakerepo && \
|
||||
git clone git://gitrepo/fakerepo /tmp/fakerepo && \
|
||||
pwd && \
|
||||
ls -la && \
|
||||
ls -la /tmp/fakerepo \
|
||||
"));
|
||||
|
||||
# Test start master and connect worker
|
||||
$bbmaster->waitForUnit("buildbot-master.service");
|
||||
$bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/;
|
||||
$bbworker->waitForUnit("network-online.target");
|
||||
$bbworker->execute("nc -z bbmaster 8010");
|
||||
$bbworker->execute("nc -z bbmaster 9989");
|
||||
$bbworker->waitForUnit("buildbot-worker.service");
|
||||
print($bbworker->execute("ls -la /home/bbworker/worker"));
|
||||
|
||||
|
||||
# Test stop buildbot master and worker
|
||||
print($bbmaster->execute(" \
|
||||
systemctl -l --no-pager status buildbot-master && \
|
||||
systemctl stop buildbot-master \
|
||||
"));
|
||||
$bbworker->fail("nc -z bbmaster 8010");
|
||||
$bbworker->fail("nc -z bbmaster 9989");
|
||||
print($bbworker->execute(" \
|
||||
systemctl -l --no-pager status buildbot-worker && \
|
||||
systemctl stop buildbot-worker && \
|
||||
ls -la /home/bbworker/worker \
|
||||
"));
|
||||
|
||||
|
||||
# Test buildbot daemon mode
|
||||
$bbmaster->execute("buildbot create-master /tmp");
|
||||
$bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg");
|
||||
$bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg");
|
||||
$bbmaster->execute("buildbot start /tmp");
|
||||
$bbworker->execute("nc -z bbmaster 8011");
|
||||
$bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/;
|
||||
$bbmaster->execute("buildbot stop /tmp");
|
||||
$bbworker->fail("nc -z bbmaster 8011");
|
||||
|
||||
'';
|
||||
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ];
|
||||
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
#Start up and populate fake repo
|
||||
$gitrepo->waitForUnit("multi-user.target");
|
||||
print($gitrepo->execute(" \
|
||||
git config --global user.name 'Nobody Fakeuser' && \
|
||||
git config --global user.email 'nobody\@fakerepo.com' && \
|
||||
rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \
|
||||
mkdir -pv /srv/repos/fakerepo ~/.ssh && \
|
||||
ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \
|
||||
cat ~/.ssh/known_hosts && \
|
||||
cd /srv/repos/fakerepo && \
|
||||
git init && \
|
||||
echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \
|
||||
cat fakerepo.sh && \
|
||||
touch .git/git-daemon-export-ok && \
|
||||
git add fakerepo.sh .git/git-daemon-export-ok && \
|
||||
git commit -m fakerepo && \
|
||||
git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \
|
||||
"));
|
||||
|
||||
# Test gitrepo
|
||||
$bbmaster->waitForUnit("network-online.target");
|
||||
#$bbmaster->execute("nc -z gitrepo 9418");
|
||||
print($bbmaster->execute(" \
|
||||
rm -rfv /tmp/fakerepo && \
|
||||
git clone git://gitrepo/fakerepo /tmp/fakerepo && \
|
||||
pwd && \
|
||||
ls -la && \
|
||||
ls -la /tmp/fakerepo \
|
||||
"));
|
||||
|
||||
# Test start master and connect worker
|
||||
$bbmaster->waitForUnit("buildbot-master.service");
|
||||
$bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/;
|
||||
$bbworker->waitForUnit("network-online.target");
|
||||
$bbworker->execute("nc -z bbmaster 8010");
|
||||
$bbworker->execute("nc -z bbmaster 9989");
|
||||
$bbworker->waitForUnit("buildbot-worker.service");
|
||||
print($bbworker->execute("ls -la /home/bbworker/worker"));
|
||||
|
||||
|
||||
# Test stop buildbot master and worker
|
||||
print($bbmaster->execute(" \
|
||||
systemctl -l --no-pager status buildbot-master && \
|
||||
systemctl stop buildbot-master \
|
||||
"));
|
||||
$bbworker->fail("nc -z bbmaster 8010");
|
||||
$bbworker->fail("nc -z bbmaster 9989");
|
||||
print($bbworker->execute(" \
|
||||
systemctl -l --no-pager status buildbot-worker && \
|
||||
systemctl stop buildbot-worker && \
|
||||
ls -la /home/bbworker/worker \
|
||||
"));
|
||||
|
||||
|
||||
# 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("sed -i 's/8010/8011/' /tmp/master.cfg");
|
||||
#$bbmaster->execute("buildbot start /tmp");
|
||||
#$bbworker->execute("nc -z bbmaster 8011");
|
||||
#$bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/;
|
||||
#$bbmaster->execute("buildbot stop /tmp");
|
||||
#$bbworker->fail("nc -z bbmaster 8011");
|
||||
|
||||
'';
|
||||
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ];
|
||||
|
||||
})
|
||||
in {
|
||||
python2 = mkBuildbotTest pkgs.python2;
|
||||
python3 = mkBuildbotTest pkgs.python3;
|
||||
}
|
||||
|
@ -40,8 +40,7 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
||||
subtest "CodiMD sqlite", sub {
|
||||
$codimdSqlite->waitForUnit("codimd.service");
|
||||
$codimdSqlite->waitForOpenPort(3000);
|
||||
$codimdSqlite->sleep(10); # avoid 503 during startup
|
||||
$codimdSqlite->succeed("curl -sSf http://localhost:3000/new");
|
||||
$codimdSqlite->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
||||
};
|
||||
|
||||
subtest "CodiMD postgres", sub {
|
||||
@ -49,8 +48,7 @@ import ./make-test.nix ({ pkgs, lib, ... }:
|
||||
$codimdPostgres->waitForUnit("codimd.service");
|
||||
$codimdPostgres->waitForOpenPort(5432);
|
||||
$codimdPostgres->waitForOpenPort(3000);
|
||||
$codimdPostgres->sleep(10); # avoid 503 during startup
|
||||
$codimdPostgres->succeed("curl -sSf http://localhost:3000/new");
|
||||
$codimdPostgres->waitUntilSucceeds("curl -sSf http://localhost:3000/new");
|
||||
};
|
||||
'';
|
||||
})
|
||||
|
297
nixos/tests/prometheus-exporters.nix
Normal file
297
nixos/tests/prometheus-exporters.nix
Normal 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
40
nixos/tests/redmine.nix
Normal 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/");
|
||||
'';
|
||||
})
|
@ -3,13 +3,13 @@
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = "nano-wallet-${version}";
|
||||
version = "16.1";
|
||||
version = "16.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nanocurrency";
|
||||
repo = "raiblocks";
|
||||
rev = "V${version}";
|
||||
sha256 = "0sk9g4fv494a5w75vs5a3s5c139lxzz1svz0cn1hkhxqlmz8w081";
|
||||
sha256 = "18zp4xl5iwwrnzrqzsygdrym5565v8dpfz0jxczw21896kw1i9i7";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "aeolus-${version}";
|
||||
version = "0.9.5";
|
||||
version = "0.9.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
|
||||
sha256 = "0wfp8ihldyq2dhdyy7ld7z0zzfvnwam1dvbxnpd9d6xgc4k3j4nv";
|
||||
sha256 = "0lhbr95hmbfj8ynbcpawn7jzjbpvrkm6k2yda39yhqk1bzg38v2k";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -7,12 +7,12 @@
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.2.2";
|
||||
version = "2.3.0";
|
||||
name = "audacity-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
|
||||
sha256 = "18q7i77ynihx7xp45lz2lv0k0wrh6736pcrivlpwrxjgbvyqx7km";
|
||||
sha256 = "0pi7ksm8hfvwbn580z4kkc55sbaylrrr7v08s04dmdgfvil7y4ip";
|
||||
};
|
||||
|
||||
preConfigure = /* we prefer system-wide libs */ ''
|
||||
|
@ -4,7 +4,7 @@
|
||||
, gobjectIntrospection, wrapGAppsHook }:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
version = "0.9.601";
|
||||
version = "0.9.604";
|
||||
name = "lollypop-${version}";
|
||||
|
||||
format = "other";
|
||||
@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
url = "https://gitlab.gnome.org/World/lollypop";
|
||||
rev = "refs/tags/${version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "029hyylwjsbwkw1v75nbkkmrncgz30y2qwdysmpz0xyb5q7x6zbj";
|
||||
sha256 = "0pfljs5q0xzqll6dybslin4nr7w18bn1yi0xn79vh44zn3l0r8q4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3.pkgs; [
|
||||
|
@ -5,7 +5,7 @@
|
||||
let
|
||||
version = "2.6";
|
||||
in stdenv.mkDerivation {
|
||||
name = "midisheetmusic";
|
||||
name = "midisheetmusic-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/midisheetmusic/MidiSheetMusic-${version}-linux-src.tar.gz";
|
||||
|
@ -29,11 +29,11 @@
|
||||
# handle that.
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "qmmp-1.2.3";
|
||||
name = "qmmp-1.2.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2";
|
||||
sha256 = "05lqmj22vr5ch1i0928d64ybdnn3qc66s9lgarx5s6x6ffr6589j";
|
||||
sha256 = "0rmfd6h0186b6n4g079d8kshdmp3k5n8w06a1l41m4p3fgq08j92";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
@ -126,6 +126,9 @@ stdenv.mkDerivation {
|
||||
--prefix LD_LIBRARY_PATH : "$librarypath" \
|
||||
--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
|
||||
mkdir -p "$out/share/applications/"
|
||||
cp "$out/share/spotify/spotify.desktop" "$out/share/applications/"
|
||||
|
@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "tetraproc-${version}";
|
||||
version = "0.8.2";
|
||||
version = "0.8.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
|
||||
sha256 = "17y3vbm5f6h5cmh3yfxjgqz4xhfwpkla3lqfspnbm4ndlzmfpykv";
|
||||
sha256 = "02155ljfwgvfgq9z258fb4z7jrz7qx022d054fj5gr0v007cv0r7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -73,8 +73,8 @@ let
|
||||
};
|
||||
in stdenv.lib.mapAttrs common {
|
||||
atom = {
|
||||
version = "1.31.0";
|
||||
sha256 = "184vsj7qcpzwiq2v5kh8i21wfzhinhybxmr71y41sjqp78s2gy57";
|
||||
version = "1.31.2";
|
||||
sha256 = "1szx9p2nz1qzjpig0l8h4hj5mqwpjvkcynn8crh21drply4bpfr0";
|
||||
};
|
||||
|
||||
atom-beta = {
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "okteta-${version}";
|
||||
version = "0.25.3";
|
||||
version = "0.25.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/okteta/${version}/src/${name}.tar.xz";
|
||||
sha256 = "0mm6pmk7k9c581b12a3wl0ayhadvyymfzmscy9x32b391qy9inai";
|
||||
sha256 = "0liar1xbns6mr6j320nyxqfii82i4ysp62hf3j6jg1112v874amf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ];
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "8.1.0348";
|
||||
version = "8.1.0450";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
sha256 = "0f18kpywnph708mvj1fpi06qb53nbhc26ngjh2kvfxwawn63k8ab";
|
||||
sha256 = "1zhggpn4i704apfqn2kqr717kz9dvkjwnbmc3ydza621zjyrnxb2";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -2,7 +2,7 @@
|
||||
gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret }:
|
||||
|
||||
let
|
||||
version = "1.27.2";
|
||||
version = "1.28.0";
|
||||
channel = "stable";
|
||||
|
||||
plat = {
|
||||
@ -12,9 +12,9 @@ let
|
||||
}.${stdenv.hostPlatform.system};
|
||||
|
||||
sha256 = {
|
||||
"i686-linux" = "33704d089b03c636e8c46d434068c97b66e5a9d323b991bd327067aa90e87afa";
|
||||
"x86_64-linux" = "11023c652dd89bde1b7fbc8a7dc04fd4f87df3bfe6952a1c0ad75ab861e3196d";
|
||||
"x86_64-darwin" = "d1f2d046775406e6f339883dab432fcaa149e763ccfcd017556a46e890de6476";
|
||||
"i686-linux" = "0f54py00lmw96x47nk823gwxxc9kr9haaa821ggi974ycr54af0y";
|
||||
"x86_64-linux" = "07bbzm1159k2gkajj6z7dsr0kmadd5gx721w92r252i5hcwg5sx4";
|
||||
"x86_64-darwin" = "019cl2rswls3gwwa8y70cllc4jnd8xj0y2m9rvg2rz695snp6rcm";
|
||||
}.${stdenv.hostPlatform.system};
|
||||
|
||||
archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz";
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perl,
|
||||
perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl,
|
||||
libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui, hicolor-icon-theme,
|
||||
gtk-mac-integration }:
|
||||
gtk-mac-integration-gtk2 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dia-${version}";
|
||||
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||
[ gtk2 perlXMLParser libxml2 gettext python libxml2Python docbook5
|
||||
libxslt docbook_xsl libart_lgpl hicolor-icon-theme ]
|
||||
++ 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 ];
|
||||
|
||||
|
@ -28,7 +28,7 @@ in
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/airspy/airspyone_host;
|
||||
description = "Host tools and driver library for the AirSpy SDR";
|
||||
license = licenses.free;
|
||||
license = licenses.bsd3;
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
maintainers = with maintainers; [ markuskowa ];
|
||||
};
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "CopyQ-${version}";
|
||||
version = "3.5.0";
|
||||
version = "3.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hluk";
|
||||
repo = "CopyQ";
|
||||
rev = "v${version}";
|
||||
sha256 = "0hzdv6rhjpq9yrfafnkc6d8m5pzw9qr520vsjf2gn1819gdybmr0";
|
||||
sha256 = "0drhafnr1d595wa8zwvmgmrrqb86navdk4iw6ly6gmh0i800wz0z";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -1,38 +1,9 @@
|
||||
{ stdenv, lib, fetchFromGitHub, python2
|
||||
{ stdenv, lib, fetchFromGitHub, python3
|
||||
, libnotify ? null }:
|
||||
|
||||
let
|
||||
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";
|
||||
};
|
||||
});
|
||||
with python3.pkgs;
|
||||
|
||||
oauth2client = super.oauth2client.overridePythonAttrs (oldAttrs: 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 {
|
||||
buildPythonApplication rec {
|
||||
version = "4.0.0a4";
|
||||
name = "gcalcli-${version}";
|
||||
|
||||
@ -45,7 +16,6 @@ in with py.pkgs; buildPythonApplication rec {
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dateutil gflags httplib2 parsedatetime six vobject
|
||||
# overridden
|
||||
google_api_python_client oauth2client uritemplate
|
||||
] ++ lib.optional (!isPy3k) futures;
|
||||
|
||||
@ -59,8 +29,8 @@ in with py.pkgs; buildPythonApplication rec {
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = https://github.com/insanum/gcalcli;
|
||||
description = "CLI for Google Calendar";
|
||||
homepage = https://github.com/insanum/gcalcli;
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ nocoolnametom ];
|
||||
inherit version;
|
||||
|
@ -5,17 +5,6 @@
|
||||
let
|
||||
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" ''
|
||||
#!${stdenv.shell}
|
||||
case "$1" in
|
||||
@ -33,12 +22,12 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "glava-${version}";
|
||||
version = "1.5.1";
|
||||
version = "1.5.5";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/wacossusca34/glava.git";
|
||||
rev = "v${version}";
|
||||
sha256 = "1k8x0a0g2pm7ficsk4az9s7mjbm85a987apjg5c4y6iyldxgd6sb";
|
||||
sha256 = "0mpbgllwz45wkax6pgvnh1pz2q4yvbzq2l8z8kff13wrsdvl8lh0";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@ -54,12 +43,8 @@ in
|
||||
python3
|
||||
];
|
||||
|
||||
patchPhase = ''
|
||||
mkdir -p glad/include/KHR
|
||||
|
||||
cp ${gl} glad/gl.xml
|
||||
cp ${egl} glad/include/KHR/khrplatform.h
|
||||
patchShebangs .
|
||||
preConfigure = ''
|
||||
export CFLAGS="-march=native"
|
||||
'';
|
||||
|
||||
makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1";
|
||||
|
@ -1,7 +1,9 @@
|
||||
{ stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3,
|
||||
pango, gobjectIntrospection, wrapGAppsHook,
|
||||
# Optional packages:
|
||||
enableOSM ? true, osm-gps-map
|
||||
enableOSM ? true, osm-gps-map,
|
||||
enableGraphviz ? true, graphviz,
|
||||
enableGhostscript ? true, ghostscript
|
||||
}:
|
||||
|
||||
let
|
||||
@ -14,6 +16,11 @@ in buildPythonApplication rec {
|
||||
buildInputs = [ intltool gtk3 gobjectIntrospection pango gnome3.gexiv2 ]
|
||||
# Map support
|
||||
++ stdenv.lib.optional enableOSM osm-gps-map
|
||||
# Graphviz support
|
||||
++ stdenv.lib.optional enableGraphviz graphviz
|
||||
# Ghostscript support
|
||||
++ stdenv.lib.optional enableGhostscript ghostscript
|
||||
|
||||
;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -53,5 +60,6 @@ in buildPythonApplication rec {
|
||||
description = "Genealogy software";
|
||||
homepage = https://gramps-project.org;
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ joncojonathan ];
|
||||
};
|
||||
}
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
name = "gutenberg-${version}";
|
||||
version = "0.4.1";
|
||||
version = "0.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Keats";
|
||||
repo = "gutenberg";
|
||||
rev = "v${version}";
|
||||
sha256 = "0is7156aim2ad8xg2f5068crc4gfvm89x8gxa25vc25p0yr1bpla";
|
||||
sha256 = "0kzxz26khk5rwb9mz0wi9r8y7r93w4n2dbq6v2qr07cy5h14pa6w";
|
||||
};
|
||||
|
||||
cargoSha256 = "146vlr85n9d06am5ki76fh1vb5r8a4lzx5b7dmgi292kc3dsn41z";
|
||||
cargoSha256 = "0n4ji06chybmcvg5yz6cnhzqh162zhh5xpbz374a796dwp1132m8";
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig openssl ];
|
||||
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices cf-private ];
|
||||
|
@ -4,7 +4,7 @@
|
||||
} :
|
||||
|
||||
let
|
||||
version = "18.06.0";
|
||||
version = "18.10.0";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
name = "limesuite-${version}";
|
||||
@ -13,9 +13,11 @@ in stdenv.mkDerivation {
|
||||
owner = "myriadrf";
|
||||
repo = "LimeSuite";
|
||||
rev = "v${version}";
|
||||
sha256 = "0j6mxlvij2k6ib1d9jwzvilmqgm1h0q7wy9sf8a6bvidwlphvy25";
|
||||
sha256 = "0nbyvcdwvfvln1wic9qwb7y221v3jv454gp5v6ms9112a41zj46h";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
@ -36,10 +38,6 @@ in stdenv.mkDerivation {
|
||||
|
||||
mkdir -p $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; {
|
||||
|
@ -1,25 +1,31 @@
|
||||
{ stdenv, fetchFromGitHub, wxGTK, libuuid, xercesc, zip , libXt, libXtst
|
||||
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, yubikey-personalization
|
||||
{ stdenv, fetchFromGitHub, cmake, pkgconfig, zip, gettext, perl
|
||||
, wxGTK31, libXi, libXt, libXtst, xercesc, xextproto
|
||||
, libqrencode, libuuid, libyubikey, yubikey-personalization
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pwsafe-${version}";
|
||||
version = "0.99";
|
||||
pname = "pwsafe";
|
||||
version = "1.06";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pwsafe";
|
||||
repo = "pwsafe";
|
||||
owner = "${pname}";
|
||||
repo = "${pname}";
|
||||
rev = "${version}BETA";
|
||||
sha256 = "1bkimz4g9v9kfjkqr3dqddh4jps7anzc1hgmirmmhwpac0xdp60g";
|
||||
sha256 = "1q3xi7i4r3nmz3hc79lx8l15sr1nqhwbi3lrnfqr356nv6aaf03y";
|
||||
};
|
||||
|
||||
makefile = "Makefile.linux";
|
||||
makeFlags = "YBPERS_LIBPATH=${yubikey-personalization}/lib";
|
||||
|
||||
buildFlags = "unicoderelease";
|
||||
buildInputs = [ wxGTK libuuid gettext perl zip
|
||||
xercesc libXt libXtst libXi xextproto
|
||||
pkgconfig libyubikey yubikey-personalization ];
|
||||
nativeBuildInputs = [ cmake pkgconfig zip ];
|
||||
buildInputs = [
|
||||
gettext perl libqrencode libuuid
|
||||
libXi libXt libXtst wxGTK31 xercesc xextproto
|
||||
libyubikey yubikey-personalization
|
||||
];
|
||||
cmakeFlags = [
|
||||
"-DNO_GTEST=ON"
|
||||
"-DCMAKE_CXX_FLAGS=-I${yubikey-personalization}/include/ykpers-1"
|
||||
];
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postPatch = ''
|
||||
# Fix perl scripts used during the build.
|
||||
@ -40,31 +46,7 @@ stdenv.mkDerivation rec {
|
||||
done
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
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
|
||||
# */
|
||||
'';
|
||||
installFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A password database utility";
|
||||
@ -77,8 +59,8 @@ stdenv.mkDerivation rec {
|
||||
username/password combinations that you use.
|
||||
'';
|
||||
|
||||
homepage = http://passwordsafe.sourceforge.net/;
|
||||
maintainers = with maintainers; [ pjones ];
|
||||
homepage = https://pwsafe.org/;
|
||||
maintainers = with maintainers; [ c0bw3b pjones ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.artistic2;
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ stdenv, fetchFromGitHub, makeWrapper, which, cmake, perl, perlPackages,
|
||||
boost, tbb, wxGTK30, pkgconfig, gtk3, fetchurl, gtk2, libGLU,
|
||||
glew, eigen, curl }:
|
||||
glew, eigen, curl, gtest, nlopt, pcre, xorg }:
|
||||
let
|
||||
AlienWxWidgets = perlPackages.buildPerlPackage rec {
|
||||
name = "Alien-wxWidgets-0.69";
|
||||
@ -33,22 +33,28 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "slic3r-prusa-edition-${version}";
|
||||
version = "1.40.1";
|
||||
version = "1.41.0";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
buildInputs = [
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
curl
|
||||
perl
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
curl
|
||||
eigen
|
||||
glew
|
||||
pcre
|
||||
perl
|
||||
tbb
|
||||
which
|
||||
Wx
|
||||
WxGLCanvas
|
||||
] ++ (with perlPackages; [
|
||||
xorg.libXdmcp
|
||||
xorg.libpthreadstubs
|
||||
] ++ checkInputs ++ (with perlPackages; [
|
||||
boost
|
||||
ClassXSAccessor
|
||||
EncodeLocale
|
||||
@ -72,8 +78,24 @@ stdenv.mkDerivation rec {
|
||||
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 = ''
|
||||
# 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
|
||||
|
||||
# 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_VENDORLIB}|$out/lib/slic3r-prusa3d|g" xs/CMakeLists.txt
|
||||
'';
|
||||
@ -92,7 +114,7 @@ stdenv.mkDerivation rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "prusa3d";
|
||||
repo = "Slic3r";
|
||||
sha256 = "022mdz8824wg68qwgd49gnplw7wn84hqw113xh8l25v3j1jb9zmc";
|
||||
sha256 = "1al60hrqbhl05dnsr99hzbmxmn26fyx19sc5zxv816x3q6px9n2d";
|
||||
rev = "version_${version}";
|
||||
};
|
||||
|
||||
@ -100,7 +122,7 @@ stdenv.mkDerivation rec {
|
||||
description = "G-code generator for 3D printer";
|
||||
homepage = https://github.com/prusa3d/Slic3r;
|
||||
license = licenses.agpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ tweber ];
|
||||
broken = stdenv.hostPlatform.isAarch64;
|
||||
};
|
||||
}
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "xdgmenumaker-${version}";
|
||||
version = "1.4";
|
||||
version = "1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gapan";
|
||||
repo = "xdgmenumaker";
|
||||
rev = version;
|
||||
sha256 = "0i909dk9chdsc7njp5llgm5xlag4lr0nkxkwl1g5lf8cvdjrawh2";
|
||||
sha256 = "1vrsp5c1ah7p4dpwd6aqvinpwzd8crdimvyyr3lbm3c6cwpyjmif";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -98,11 +98,11 @@ let
|
||||
|
||||
flash = stdenv.mkDerivation rec {
|
||||
name = "flashplayer-ppapi-${version}";
|
||||
version = "31.0.0.108";
|
||||
version = "31.0.0.122";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||
sha256 = "0dcwyx0fp7wbsx0cyi7xpwq0nnvcvkzfgi6zyy75487820ssc4h1";
|
||||
sha256 = "16cx92lq7zx8k22mfnsfjj09kyh3fi266qc5vvjz5b2rj53rmkdg";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh -e
|
||||
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
|
||||
|
@ -1,18 +1,18 @@
|
||||
# This file is autogenerated from update.sh in the same directory.
|
||||
{
|
||||
beta = {
|
||||
sha256 = "0i3iz6c05ykqxbq58sx954nky0gd0schl7ik2r56p3jqsk8cfnhn";
|
||||
sha256bin64 = "03k5y1nyzx26mxwxmdijkl2kj49vm5vhbxhakfxxjg3r1v0rsqrs";
|
||||
version = "69.0.3497.81";
|
||||
sha256 = "16biicw86mnjrmjazfbml2pf4rykhbvsz854cyfnpjhcvmlh24jp";
|
||||
sha256bin64 = "07jr1sqsxfdy3rymylkbpbgi79j9b2pax4igdzj943d0nbka84y5";
|
||||
version = "70.0.3538.35";
|
||||
};
|
||||
dev = {
|
||||
sha256 = "1lx6dfd6w675b4kyrci8ikc8rfmjc1aqmm7bimxp3h4p97j5wml1";
|
||||
sha256bin64 = "0fsxj9h25glp3akw0x2rc488w5zr5v5yvl6ry7fy8w70fqgynffj";
|
||||
version = "70.0.3538.9";
|
||||
sha256 = "0fmkhvvydinv5f543n7rrmsv99rf0skwwhlpmszvspx6y4wz9smv";
|
||||
sha256bin64 = "0plr8ph78kfg2dpyacjy3aw3msfif95fqpb8xx0n8whkkpbl9968";
|
||||
version = "71.0.3559.6";
|
||||
};
|
||||
stable = {
|
||||
sha256 = "0i3iz6c05ykqxbq58sx954nky0gd0schl7ik2r56p3jqsk8cfnhn";
|
||||
sha256bin64 = "1f3shb85jynxq37vjxxkkxrjayqgvpss1zws5i28x6i9nygfzay7";
|
||||
version = "69.0.3497.81";
|
||||
sha256 = "0dcyzsb70ssx5hd2b25ab3ydpqh7crhxab9zzi5gn99ywxh1afg3";
|
||||
sha256bin64 = "0w56k7hmdi9knjaw67kdmyz0fdkjmk2ldh2n4l1c6szkr66vq30q";
|
||||
version = "69.0.3497.100";
|
||||
};
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "flashplayer-${version}";
|
||||
version = "31.0.0.108";
|
||||
version = "31.0.0.122";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@ -84,14 +84,14 @@ stdenv.mkDerivation rec {
|
||||
sha256 =
|
||||
if debug then
|
||||
if arch == "x86_64" then
|
||||
"1mn29ahxjf6pdy2zp2na14cz46jrl88f54kp3bs3cz75syyizyb6"
|
||||
"0mjyb8mk4av8cia34gmqi0n4nq0spiblgn18z6f4nkx12wgdka2c"
|
||||
else
|
||||
"0inpj6bcsn5lh8gdv1wxpgipzrmpc553nhr68a55b2wff9fkv1ci"
|
||||
"07qgawd4xgy9690gbx0c6k97cp7lp04l70ccp4jd81y4xjsc9bq3"
|
||||
else
|
||||
if arch == "x86_64" then
|
||||
"1dfgsl5jf8ja9f7wwkzj5bfz1v5rdsyf4qhg1shqqldadmyyha7p"
|
||||
"0264kcn0frgcl7zfd60ybs4r7x1p3f8nj496z264ax6qc390qr02"
|
||||
else
|
||||
"0yiqwwqs3z9zzkfgqzjwqqdr2vaj1ia5xychs9fgxix3y4j934da";
|
||||
"0w170wz920imca8wc7kggl2vldn9k7cqm2xwvx8yqqi1p42a1941";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "flashplayer-standalone-${version}";
|
||||
version = "31.0.0.108";
|
||||
version = "31.0.0.122";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@ -59,9 +59,9 @@ stdenv.mkDerivation rec {
|
||||
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_sa_linux.x86_64.tar.gz";
|
||||
sha256 =
|
||||
if debug then
|
||||
"0i047fvj3x9lx7x8bf7jl1ybf9xpmr6g77q0h7n2s8qvscsw0pmm"
|
||||
"1psd49bxn6w6kgcjhml44g5wb4za18m8apas8qyly4xcapdylias"
|
||||
else
|
||||
"19wfs452ix57yfi4cy2din6mi5jky9hjzbdjny1bl8w32fy8xmm3";
|
||||
"0g3h31pdxw91r3067zrkgyziwl18i5kidwx83y13ff4d17v999ss";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
@ -1,50 +1,48 @@
|
||||
{ stdenv, fetchurl, kubectl }:
|
||||
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}";
|
||||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://kubernetes-helm.storage.googleapis.com/helm-v${version}-${arch}.tar.gz";
|
||||
sha256 = checksum;
|
||||
buildGoPackage rec {
|
||||
version = "2.11.0";
|
||||
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 ];
|
||||
|
||||
phases = [ "buildPhase" "installPhase" ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p $out/bin
|
||||
# Thsese are the original flags from the helm makefile
|
||||
buildFlagsArray = ''
|
||||
-ldflags=
|
||||
-w
|
||||
-s
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
tar -xvzf $src
|
||||
cp ${arch}/helm $out/bin/${pname}
|
||||
chmod +x $out/bin/${pname}
|
||||
mkdir -p $out/share/bash-completion/completions
|
||||
mkdir -p $out/share/zsh/site-functions
|
||||
$out/bin/helm completion bash > $out/share/bash-completion/completions/helm
|
||||
$out/bin/helm completion zsh > $out/share/zsh/site-functions/_helm
|
||||
preBuild = ''
|
||||
# This is a hack(?) to flatten the dependency tree the same way glide or dep would
|
||||
# Otherwise you'll get errors like
|
||||
# have DeepCopyObject() "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime".Object
|
||||
# want DeepCopyObject() "k8s.io/apimachinery/pkg/runtime".Object
|
||||
rm -rf $NIX_BUILD_TOP/go/src/k8s.io/kubernetes/vendor
|
||||
rm -rf $NIX_BUILD_TOP/go/src/k8s.io/apiextensions-apiserver/vendor
|
||||
'';
|
||||
|
||||
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; {
|
||||
homepage = https://github.com/kubernetes/helm;
|
||||
description = "A package manager for kubernetes";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.rlupton20 ];
|
||||
platforms = [ "x86_64-linux" ] ++ platforms.darwin;
|
||||
maintainers = [ maintainers.rlupton20 maintainers.edude03 ];
|
||||
};
|
||||
}
|
||||
|
840
pkgs/applications/networking/cluster/helm/deps.nix
generated
Normal file
840
pkgs/applications/networking/cluster/helm/deps.nix
generated
Normal 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";
|
||||
};
|
||||
}
|
||||
]
|
@ -1,6 +1,6 @@
|
||||
{ lib, buildGoPackage, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
|
||||
|
||||
let version = "0.19.0"; in
|
||||
let version = "0.40.1"; in
|
||||
|
||||
buildGoPackage {
|
||||
name = "helmfile-${version}";
|
||||
@ -9,13 +9,18 @@ buildGoPackage {
|
||||
owner = "roboll";
|
||||
repo = "helmfile";
|
||||
rev = "v${version}";
|
||||
sha256 = "0wjzzaygdnnvyi5a78bhmz2sxc4gykdl00h78dkgvj7aaw05s9yd";
|
||||
sha256 = "02ir10070rpayv9s53anldwjy5ggl268shgf085d188wl6vshaiv";
|
||||
};
|
||||
|
||||
goPackagePath = "github.com/roboll/helmfile";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildFlagsArray = ''
|
||||
-ldflags=
|
||||
-X main.Version=${version}
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $bin/bin/helmfile \
|
||||
--prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]}
|
||||
|
@ -15,13 +15,13 @@ with lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "kubernetes-${version}";
|
||||
version = "1.12.0";
|
||||
version = "1.12.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubernetes";
|
||||
repo = "kubernetes";
|
||||
rev = "v${version}";
|
||||
sha256 = "0bnfhrli9xqf7ygfq5i5p6nsgv7ic57b5b705zbqsxrc24pvsy4s";
|
||||
sha256 = "1gm0v5p008w9i4k94ddjdyfqfsbx7a6ngmh81p155599hifm32zc";
|
||||
};
|
||||
|
||||
buildInputs = [ removeReferencesTo makeWrapper which go_1_10 rsync go-bindata ];
|
||||
|
@ -14,7 +14,7 @@ let
|
||||
in buildGoPackage rec {
|
||||
pname = "minikube";
|
||||
name = "${pname}-${version}";
|
||||
version = "0.29.0";
|
||||
version = "0.30.0";
|
||||
|
||||
kubernetesVersion = "1.11.2";
|
||||
|
||||
@ -24,7 +24,7 @@ in buildGoPackage rec {
|
||||
owner = "kubernetes";
|
||||
repo = "minikube";
|
||||
rev = "v${version}";
|
||||
sha256 = "09px8pxml7xrnfhyjvlhf1hw7zdj9sw47a0fv5wj5aard54lhs1l";
|
||||
sha256 = "02jxwh8qrvjn31rzjwx23908nd1i592drfdykxbc5b6a62fwp02z";
|
||||
};
|
||||
|
||||
buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet;
|
||||
|
@ -22,6 +22,7 @@ let
|
||||
};
|
||||
in
|
||||
{
|
||||
gandi = callPackage ./gandi {};
|
||||
ibm = callPackage ./ibm {};
|
||||
libvirt = callPackage ./libvirt {};
|
||||
} // lib.mapAttrs (n: v: toDrv v) list
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
21
pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
generated
Normal file
21
pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
generated
Normal 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";
|
||||
};
|
||||
}
|
||||
]
|
@ -36,11 +36,11 @@ with python'.pkgs;
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "FlexGet";
|
||||
version = "2.14.21";
|
||||
version = "2.15.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "08z0pf1g5xp3760da48v9h9hja2j8cgrwkgim156drk259bf5vm2";
|
||||
sha256 = "0c0qyafm01j94m9vky6x4k6j6g3nygzhgm79fb25brc2fyydkm3c";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -2,13 +2,14 @@
|
||||
|
||||
with stdenv.lib;
|
||||
stdenv.mkDerivation rec {
|
||||
name = "bitlbee-discord-2017-12-27";
|
||||
name = "bitlbee-discord-${version}";
|
||||
version = "0.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
rev = "6a03db169ad44fee55609ecd16e19f3c0f99a182";
|
||||
rev = version;
|
||||
owner = "sm00th";
|
||||
repo = "bitlbee-discord";
|
||||
sha256 = "1ci9a12c6zg8d6i9f95pq6dal79cp4klmmsyj8ag2gin90kl3x95";
|
||||
sha256 = "1n3xw5mcmg7224r09gbm39bd6h2158dwl6jx21290636b4345f4c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
|
@ -13,13 +13,13 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "dino-unstable-2018-09-05";
|
||||
name = "dino-unstable-2018-09-21";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dino";
|
||||
repo = "dino";
|
||||
rev = "79e0aee5fdb90830fad748fdfae717cb5fbf91f9";
|
||||
sha256 = "1sfh729fg6c5ds3rcma13paqnvv58jln34s93j74jnca19wgn7k5";
|
||||
rev = "6b7ef800f54e781a618425236ba8d4ed2f2fef9c";
|
||||
sha256 = "1si815b6y06lridj88hws0dgq54w9jfam9sqbrq3cfcvmhc38ysk";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
@ -20,13 +20,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nheko-${version}";
|
||||
version = "0.6.1";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mujx";
|
||||
repo = "nheko";
|
||||
rev = "v${version}";
|
||||
sha256 = "00jigca7kcqwm57qalz7ifz9p6v7p3pnamjvpkxjjix2rm9wmg2q";
|
||||
sha256 = "014k68mmw3ys7ldgj96kkr1i1lyv2nk89wndkqznsizcr3097fn5";
|
||||
};
|
||||
|
||||
# If, on Darwin, you encounter the error
|
||||
@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
|
||||
maintainers = with maintainers; [ ekleog fpletz ];
|
||||
platforms = platforms.unix;
|
||||
license = licenses.gpl3Plus;
|
||||
knownVulnerabilities = [ "No longer maintained" ];
|
||||
};
|
||||
}
|
||||
|
@ -4,8 +4,8 @@ let
|
||||
mkTelegram = args: qt5.callPackage (import ./generic.nix args) { };
|
||||
stableVersion = {
|
||||
stable = true;
|
||||
version = "1.4.0";
|
||||
sha256Hash = "1zlsvbk9vgsqwplcswh2q0mqjdqf5md1043paab02wy3qg2x37d8";
|
||||
version = "1.4.2";
|
||||
sha256Hash = "025qld597b6x7wbf1y1qpcsz0brpf3qsqj650mq9fpps1yi1vfk7";
|
||||
# svn log svn://svn.archlinux.org/community/telegram-desktop/trunk
|
||||
archPatchesRevision = "388730";
|
||||
archPatchesHash = "1gvisz36bc6bl4zcpjyyk0a2dl6ixp65an8wgm2lkc9mhkl783q7";
|
||||
|
@ -6,7 +6,7 @@ with stdenv.lib;
|
||||
let
|
||||
bits = "x86_64";
|
||||
|
||||
version = "3.14.10";
|
||||
version = "4.3.0";
|
||||
|
||||
desktopItem = makeDesktopItem rec {
|
||||
name = "Wavebox";
|
||||
@ -23,7 +23,7 @@ in stdenv.mkDerivation rec {
|
||||
name = "wavebox-${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/wavebox/waveboxapp/releases/download/v${version}/${tarball}";
|
||||
sha256 = "06ce349f561c6122b2d326e9a1363fb358e263c81a7d1d08723ec567235bbd74";
|
||||
sha256 = "0kdg5q9rv8nxlg5jhmdfy5vv7gkdswzhy49af29d3zf57z69187c";
|
||||
};
|
||||
|
||||
# don't remove runtime deps
|
||||
|
@ -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
|
||||
, makeWrapper, python3, python3Packages
|
||||
, vim ? vim_configurable.override {
|
||||
features = "normal";
|
||||
gui = "auto";
|
||||
}
|
||||
, ronn
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "astroid-${version}";
|
||||
version = "0.13";
|
||||
version = "0.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "astroidmail";
|
||||
repo = "astroid";
|
||||
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
|
||||
notmuch boost gnome3.gsettings-desktop-schemas gnome3.defaultIconTheme
|
||||
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 = ''
|
||||
sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
|
||||
sed -i "s~ -geom 10x10~~g" src/config.cc
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, ncurses }:
|
||||
{ stdenv, fetchurl, fetchpatch, ncurses }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.4";
|
||||
@ -9,6 +9,19 @@ stdenv.mkDerivation rec {
|
||||
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 ];
|
||||
|
||||
meta = {
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pjsip-${version}";
|
||||
version = "2.7.2";
|
||||
version = "2.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.pjsip.org/release/${version}/pjproject-${version}.tar.bz2";
|
||||
sha256 = "0wiph6g51wanzwjjrpwsz63amgvly8g08jz033gnwqmppa584b4w";
|
||||
sha256 = "0ybg0113rp3fk49rm2v0pcgqb28h3dv1pdy9594w2ggiz7bhngah";
|
||||
};
|
||||
|
||||
buildInputs = [ openssl libsamplerate alsaLib ];
|
||||
|
@ -9,13 +9,13 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
name = "resilio-sync-${version}";
|
||||
version = "2.6.0";
|
||||
version = "2.6.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download-cdn.resilio.com/${version}/linux-${arch}/resilio-sync_${arch}.tar.gz";
|
||||
sha256 = {
|
||||
"x86_64-linux" = "0041axi9carspkfaxvyirfvsa29zz55al01x90nh93nzxvpvywsz";
|
||||
"i686-linux" = "1ar36lp4f6a1z9i82g3gpak4q4ny09faqxdd59q1pvfzq25ypdhs";
|
||||
"x86_64-linux" = "02wbllrj80kqpyywfr05fsqpgwrv2i8smr3gfdpn7ni9b8hkj0ji";
|
||||
"i686-linux" = "02zhh6gfds6miznbx30ghzihhm330mh5xnm42mxj8j29aqlzgd95";
|
||||
}.${stdenv.hostPlatform.system};
|
||||
};
|
||||
|
||||
|
@ -7,8 +7,8 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
srcVersion = "oct18a";
|
||||
version = "20181001_a";
|
||||
srcVersion = "oct18b";
|
||||
version = "20181001_b";
|
||||
name = "gildas-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
|
||||
# source code of the previous release to a different directory
|
||||
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" ];
|
||||
sha256 = "091941a74kaw3xqsmqda7bj972cafi8ppj2c5xq0mca2c075dyfx";
|
||||
sha256 = "1q54q7y4zdax9vr28pvmy5g34kyr92jr3v1rkpjw7lxjafyqwy27";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -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
@ -27,7 +27,6 @@ let
|
||||
"8.8.2" = "1lip3xja924dm6qblisk1bk0x8ai24s5xxqxphbdxj6djglj68fd";
|
||||
}."${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 "";
|
||||
csdpPatch = if csdp != null then ''
|
||||
substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
|
||||
@ -37,8 +36,8 @@ self = stdenv.mkDerivation {
|
||||
name = "coq-${version}";
|
||||
|
||||
passthru = {
|
||||
inherit coq-version camlp5;
|
||||
inherit (ocamlPackages) ocaml findlib num;
|
||||
inherit coq-version;
|
||||
inherit (ocamlPackages) ocaml camlp5 findlib num;
|
||||
emacsBufferSetup = pkgs: ''
|
||||
; Propagate coq paths to children
|
||||
(inherit-local-permanent coq-prog-name "${self}/bin/coqtop")
|
||||
@ -93,7 +92,7 @@ self = stdenv.mkDerivation {
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
postPatch = ''
|
||||
|
@ -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),\
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user