diff options
93 files changed, 1006 insertions, 2331 deletions
diff --git a/doc/doc-support/lib-function-docs.nix b/doc/doc-support/lib-function-docs.nix index cbcbed4310af1..64f5ed56843c0 100644 --- a/doc/doc-support/lib-function-docs.nix +++ b/doc/doc-support/lib-function-docs.nix @@ -17,6 +17,8 @@ with pkgs; stdenv.mkDerivation { mkdir -p $out ln -s ${locationsXml} $out/locations.xml + docgen asserts 'Assert functions' + docgen attrsets 'Attribute-set functions' docgen strings 'String manipulation functions' docgen trivial 'Miscellaneous functions' docgen lists 'List manipulation functions' diff --git a/doc/functions/library.xml b/doc/functions/library.xml index b291356c14b85..0a8bae229f261 100644 --- a/doc/functions/library.xml +++ b/doc/functions/library.xml @@ -8,14 +8,14 @@ Nixpkgs provides a standard library at <varname>pkgs.lib</varname>, or through <code>import <nixpkgs/lib></code>. </para> - <xi:include href="./library/asserts.xml" /> - - <xi:include href="./library/attrsets.xml" /> - <!-- These docs are generated via nixdoc. To add another generated library function file to this list, the file `lib-function-docs.nix` must also be updated. --> + <xi:include href="./library/generated/asserts.xml" /> + + <xi:include href="./library/generated/attrsets.xml" /> + <xi:include href="./library/generated/strings.xml" /> <xi:include href="./library/generated/trivial.xml" /> diff --git a/doc/functions/library/.gitkeep b/doc/functions/library/.gitkeep new file mode 100644 index 0000000000000..e69de29bb2d1d --- /dev/null +++ b/doc/functions/library/.gitkeep diff --git a/doc/functions/library/asserts.xml b/doc/functions/library/asserts.xml deleted file mode 100644 index 7c94222ef139e..0000000000000 --- a/doc/functions/library/asserts.xml +++ /dev/null @@ -1,112 +0,0 @@ -<section xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - xml:id="sec-functions-library-asserts"> - <title>Assert functions</title> - - <section xml:id="function-library-lib.asserts.assertMsg"> - <title><function>lib.asserts.assertMsg</function></title> - - <subtitle><literal>assertMsg :: Bool -> String -> Bool</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.asserts.assertMsg" /> - - <para> - Print a trace message if <literal>pred</literal> is false. - </para> - - <para> - Intended to be used to augment asserts with helpful error messages. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>pred</varname> - </term> - <listitem> - <para> - Condition under which the <varname>msg</varname> should <emphasis>not</emphasis> be printed. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>msg</varname> - </term> - <listitem> - <para> - Message to print. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.asserts.assertMsg-example-false"> - <title>Printing when the predicate is false</title> -<programlisting><![CDATA[ -assert lib.asserts.assertMsg ("foo" == "bar") "foo is not bar, silly" -stderr> trace: foo is not bar, silly -stderr> assert failed -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.asserts.assertOneOf"> - <title><function>lib.asserts.assertOneOf</function></title> - - <subtitle><literal>assertOneOf :: String -> String -> - StringList -> Bool</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.asserts.assertOneOf" /> - - <para> - Specialized <function>asserts.assertMsg</function> for checking if <varname>val</varname> is one of the elements of <varname>xs</varname>. Useful for checking enums. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The name of the variable the user entered <varname>val</varname> into, for inclusion in the error message. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>val</varname> - </term> - <listitem> - <para> - The value of what the user provided, to be compared against the values in <varname>xs</varname>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>xs</varname> - </term> - <listitem> - <para> - The list of valid values. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.asserts.assertOneOf-example"> - <title>Ensuring a user provided a possible value</title> -<programlisting><![CDATA[ -let sslLibrary = "bearssl"; -in lib.asserts.assertOneOf "sslLibrary" sslLibrary [ "openssl" "libressl" ]; -=> false -stderr> trace: sslLibrary must be one of "openssl", "libressl", but is: "bearssl" - ]]></programlisting> - </example> - </section> -</section> diff --git a/doc/functions/library/attrsets.xml b/doc/functions/library/attrsets.xml deleted file mode 100644 index 052bfa1f6ae34..0000000000000 --- a/doc/functions/library/attrsets.xml +++ /dev/null @@ -1,1751 +0,0 @@ -<section xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - xml:id="sec-functions-library-attrset"> - <title>Attribute-Set Functions</title> - - <section xml:id="function-library-lib.attrsets.attrByPath"> - <title><function>lib.attrset.attrByPath</function></title> - - <subtitle><literal>attrByPath :: [String] -> Any -> AttrSet -> Any</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.attrByPath" /> - - <para> - Return an attribute from within nested attribute sets. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrPath</varname> - </term> - <listitem> - <para> - A list of strings representing the path through the nested attribute set <varname>set</varname>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>default</varname> - </term> - <listitem> - <para> - Default value if <varname>attrPath</varname> does not resolve to an existing value. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The nested attributeset to select values from. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrset.attrByPath-example-value-exists"> - <title>Extracting a value from a nested attribute set</title> -<programlisting><![CDATA[ -let set = { a = { b = 3; }; }; -in lib.attrsets.attrByPath [ "a" "b" ] 0 set -=> 3 -]]></programlisting> - </example> - - <example xml:id="function-library-lib.attrset.attrByPath-example-default-value"> - <title>No value at the path, instead using the default</title> -<programlisting><![CDATA[ -lib.attrsets.attrByPath [ "a" "b" ] 0 {} -=> 0 -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.hasAttrByPath"> - <title><function>lib.attrsets.hasAttrByPath</function></title> - - <subtitle><literal>hasAttrByPath :: [String] -> AttrSet -> Bool</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.hasAttrByPath" /> - - <para> - Determine if an attribute exists within a nested attribute set. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrPath</varname> - </term> - <listitem> - <para> - A list of strings representing the path through the nested attribute set <varname>set</varname>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The nested attributeset to check. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.hasAttrByPath-example"> - <title>A nested value does exist inside a set</title> -<programlisting><![CDATA[ -lib.attrsets.hasAttrByPath - [ "a" "b" "c" "d" ] - { a = { b = { c = { d = 123; }; }; }; } -=> true -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.setAttrByPath"> - <title><function>lib.attrsets.setAttrByPath</function></title> - - <subtitle><literal>setAttrByPath :: [String] -> Any -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.setAttrByPath" /> - - <para> - Create a new attribute set with <varname>value</varname> set at the nested attribute location specified in <varname>attrPath</varname>. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrPath</varname> - </term> - <listitem> - <para> - A list of strings representing the path through the nested attribute set. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The value to set at the location described by <varname>attrPath</varname>. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.setAttrByPath-example"> - <title>Creating a new nested attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.setAttrByPath [ "a" "b" ] 3 -=> { a = { b = 3; }; } -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.getAttrFromPath"> - <title><function>lib.attrsets.getAttrFromPath</function></title> - - <subtitle><literal>getAttrFromPath :: [String] -> AttrSet -> Value</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.getAttrFromPath" /> - - <para> - Like <xref linkend="function-library-lib.attrsets.attrByPath" /> except without a default, and it will throw if the value doesn't exist. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrPath</varname> - </term> - <listitem> - <para> - A list of strings representing the path through the nested attribute set <varname>set</varname>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The nested attribute set to find the value in. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.getAttrPath-example-success"> - <title>Succesfully getting a value from an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.getAttrFromPath [ "a" "b" ] { a = { b = 3; }; } -=> 3 -]]></programlisting> - </example> - - <example xml:id="function-library-lib.attrsets.getAttrPath-example-throw"> - <title>Throwing after failing to get a value from an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.getAttrFromPath [ "x" "y" ] { } -=> error: cannot find attribute `x.y' -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.attrVals"> - <title><function>lib.attrsets.attrVals</function></title> - - <subtitle><literal>attrVals :: [String] -> AttrSet -> [Any]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.attrVals" /> - - <para> - Return the specified attributes from a set. All values must exist. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>nameList</varname> - </term> - <listitem> - <para> - The list of attributes to fetch from <varname>set</varname>. Each attribute name must exist on the attrbitue set. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The set to get attribute values from. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.attrVals-example-success"> - <title>Getting several values from an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.attrVals [ "a" "b" "c" ] { a = 1; b = 2; c = 3; } -=> [ 1 2 3 ] -]]></programlisting> - </example> - - <example xml:id="function-library-lib.attrsets.attrVals-failure"> - <title>Getting missing values from an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.attrVals [ "d" ] { } -error: attribute 'd' missing -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.attrValues"> - <title><function>lib.attrsets.attrValues</function></title> - - <subtitle><literal>attrValues :: AttrSet -> [Any]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.attrValues" /> - - <para> - Get all the attribute values from an attribute set. - </para> - - <para> - Provides a backwards-compatible interface of <function>builtins.attrValues</function> for Nix version older than 1.8. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrs</varname> - </term> - <listitem> - <para> - The attribute set. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.attrValues-example"> - <title></title> -<programlisting><![CDATA[ -lib.attrsets.attrValues { a = 1; b = 2; c = 3; } -=> [ 1 2 3 ] -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.catAttrs"> - <title><function>lib.attrsets.catAttrs</function></title> - - <subtitle><literal>catAttrs :: String -> [AttrSet] -> [Any]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.catAttrs" /> - - <para> - Collect each attribute named `attr' from the list of attribute sets, <varname>sets</varname>. Sets that don't contain the named attribute are ignored. - </para> - - <para> - Provides a backwards-compatible interface of <function>builtins.catAttrs</function> for Nix version older than 1.9. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attr</varname> - </term> - <listitem> - <para> - Attribute name to select from each attribute set in <varname>sets</varname>. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>sets</varname> - </term> - <listitem> - <para> - The list of attribute sets to select <varname>attr</varname> from. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.catAttrs-example"> - <title>Collect an attribute from a list of attribute sets.</title> - <para> - Attribute sets which don't have the attribute are ignored. - </para> -<programlisting><![CDATA[ -catAttrs "a" [{a = 1;} {b = 0;} {a = 2;}] -=> [ 1 2 ] - ]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.filterAttrs"> - <title><function>lib.attrsets.filterAttrs</function></title> - - <subtitle><literal>filterAttrs :: (String -> Any -> Bool) -> AttrSet -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.filterAttrs" /> - - <para> - Filter an attribute set by removing all attributes for which the given predicate return false. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>pred</varname> - </term> - <listitem> - <para> - <literal>String -> Any -> Bool</literal> - </para> - <para> - Predicate which returns true to include an attribute, or returns false to exclude it. - </para> - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The attribute's name - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The attribute's value - </para> - </listitem> - </varlistentry> - </variablelist> - <para> - Returns <literal>true</literal> to include the attribute, <literal>false</literal> to exclude the attribute. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The attribute set to filter - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.filterAttrs-example"> - <title>Filtering an attributeset</title> -<programlisting><![CDATA[ -filterAttrs (n: v: n == "foo") { foo = 1; bar = 2; } -=> { foo = 1; } -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.filterAttrsRecursive"> - <title><function>lib.attrsets.filterAttrsRecursive</function></title> - - <subtitle><literal>filterAttrsRecursive :: (String -> Any -> Bool) -> AttrSet -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.filterAttrsRecursive" /> - - <para> - Filter an attribute set recursively by removing all attributes for which the given predicate return false. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>pred</varname> - </term> - <listitem> - <para> - <literal>String -> Any -> Bool</literal> - </para> - <para> - Predicate which returns true to include an attribute, or returns false to exclude it. - </para> - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The attribute's name - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The attribute's value - </para> - </listitem> - </varlistentry> - </variablelist> - <para> - Returns <literal>true</literal> to include the attribute, <literal>false</literal> to exclude the attribute. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - The attribute set to filter - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.filterAttrsRecursive-example"> - <title>Recursively filtering an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.filterAttrsRecursive - (n: v: v != null) - { - levelA = { - example = "hi"; - levelB = { - hello = "there"; - this-one-is-present = { - this-is-excluded = null; - }; - }; - this-one-is-also-excluded = null; - }; - also-excluded = null; - } -=> { - levelA = { - example = "hi"; - levelB = { - hello = "there"; - this-one-is-present = { }; - }; - }; - } - ]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.foldAttrs"> - <title><function>lib.attrsets.foldAttrs</function></title> - - <subtitle><literal>foldAttrs :: (Any -> Any -> Any) -> Any -> [AttrSets] -> Any</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.foldAttrs" /> - - <para> - Apply fold function to values grouped by key. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>op</varname> - </term> - <listitem> - <para> - <literal>Any -> Any -> Any</literal> - </para> - <para> - Given a value <varname>val</varname> and a collector <varname>col</varname>, combine the two. - </para> - <variablelist> - <varlistentry> - <term> - <varname>val</varname> - </term> - <listitem> - <para> - An attribute's value - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>col</varname> - </term> - <listitem> -<!-- TODO: make this not bad, use more fold-ey terms --> - <para> - The result of previous <function>op</function> calls with other values and <function>nul</function>. - </para> - </listitem> - </varlistentry> - </variablelist> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>nul</varname> - </term> - <listitem> - <para> - The null-value, the starting value. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>list_of_attrs</varname> - </term> - <listitem> - <para> - A list of attribute sets to fold together by key. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.foldAttrs-example"> - <title>Combining an attribute of lists in to one attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.foldAttrs - (n: a: [n] ++ a) [] - [ - { a = 2; b = 7; } - { a = 3; } - { b = 6; } - ] -=> { a = [ 2 3 ]; b = [ 7 6 ]; } -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.collect"> - <title><function>lib.attrsets.collect</function></title> - - <subtitle><literal>collect :: (Any -> Bool) -> AttrSet -> [Any]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.collect" /> - - <para> - Recursively collect sets that verify a given predicate named <varname>pred</varname> from the set <varname>attrs</varname>. The recursion stops when <varname>pred</varname> returns <literal>true</literal>. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>pred</varname> - </term> - <listitem> - <para> - <literal>Any -> Bool</literal> - </para> - <para> - Given an attribute's value, determine if recursion should stop. - </para> - <variablelist> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The attribute set value. - </para> - </listitem> - </varlistentry> - </variablelist> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>attrs</varname> - </term> - <listitem> - <para> - The attribute set to recursively collect. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.collect-example-lists"> - <title>Collecting all lists from an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.collect isList { a = { b = ["b"]; }; c = [1]; } -=> [["b"] [1]] -]]></programlisting> - </example> - - <example xml:id="function-library-lib.attrsets.collect-example-outpath"> - <title>Collecting all attribute-sets which contain the <literal>outPath</literal> attribute name.</title> -<programlisting><![CDATA[ -collect (x: x ? outPath) - { a = { outPath = "a/"; }; b = { outPath = "b/"; }; } -=> [{ outPath = "a/"; } { outPath = "b/"; }] -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.nameValuePair"> - <title><function>lib.attrsets.nameValuePair</function></title> - - <subtitle><literal>nameValuePair :: String -> Any -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.nameValuePair" /> - - <para> - Utility function that creates a <literal>{name, value}</literal> pair as expected by <function>builtins.listToAttrs</function>. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The attribute name. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The attribute value. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.nameValuePair-example"> - <title>Creating a name value pair</title> -<programlisting><![CDATA[ -nameValuePair "some" 6 -=> { name = "some"; value = 6; } -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.mapAttrs"> - <title><function>lib.attrsets.mapAttrs</function></title> - - <subtitle><literal></literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrs" /> - - <para> - Apply a function to each element in an attribute set, creating a new attribute set. - </para> - - <para> - Provides a backwards-compatible interface of <function>builtins.mapAttrs</function> for Nix version older than 2.1. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>fn</varname> - </term> - <listitem> - <para> - <literal>String -> Any -> Any</literal> - </para> - <para> - Given an attribute's name and value, return a new value. - </para> - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The name of the attribute. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term> - <varname>value</varname> - </term> - <listitem> - <para> - The attribute's value. - </para> - </listitem> - </varlistentry> - </variablelist> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.mapAttrs-example"> - <title>Modifying each value of an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.mapAttrs - (name: value: name + "-" + value) - { x = "foo"; y = "bar"; } -=> { x = "x-foo"; y = "y-bar"; } -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.mapAttrs-prime"> - <title><function>lib.attrsets.mapAttrs'</function></title> - - <subtitle><literal>mapAttrs' :: (String -> Any -> { name = String; value = Any }) -> AttrSet -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrs-prime" /> - - <para> - Like <function>mapAttrs</function>, but allows the name of each attribute to be changed in addition to the value. The applied function should return both the new name and value as a <function>nameValuePair</function>. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>fn</varname> - </term> - <listitem> - <para> - <literal>String -> Any -> { name = String; value = Any }</literal> - </para> - <para> - Given an attribute's name and value, return a new <link - linkend="function-library-lib.attrsets.nameValuePair">name value pair</link>. - </para> - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The name of the attribute. - </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 map over. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.mapAttrs-prime-example"> - <title>Change the name and value of each attribute of an attribute set</title> -<programlisting><![CDATA[ -lib.attrsets.mapAttrs' (name: value: lib.attrsets.nameValuePair ("foo_" + name) ("bar-" + value)) - { x = "a"; y = "b"; } -=> { foo_x = "bar-a"; foo_y = "bar-b"; } - - ]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.mapAttrsToList"> - <title><function>lib.attrsets.mapAttrsToList</function></title> - - <subtitle><literal>mapAttrsToList :: (String -> Any -> Any) -> - AttrSet -> [Any]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrsToList" /> - - <para> - Call <varname>fn</varname> for each attribute in the given <varname>set</varname> and return the result in a list. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>fn</varname> - </term> - <listitem> - <para> - <literal>String -> Any -> Any</literal> - </para> - <para> - Given an attribute's name and value, return a new value. - </para> - <variablelist> - <varlistentry> - <term> - <varname>name</varname> - </term> - <listitem> - <para> - The name of the attribute. - </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 map over. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.mapAttrsToList-example"> - <title>Combine attribute values and names in to a list</title> -<programlisting><![CDATA[ -lib.attrsets.mapAttrsToList (name: value: "${name}=${value}") - { x = "a"; y = "b"; } -=> [ "x=a" "y=b" ] -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.mapAttrsRecursive"> - <title><function>lib.attrsets.mapAttrsRecursive</function></title> - - <subtitle><literal>mapAttrsRecursive :: ([String] > Any -> Any) -> AttrSet -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrsRecursive" /> - - <para> - Like <function>mapAttrs</function>, except that it recursively applies 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>zipAttrs :: [ 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 xml:id="function-library-lib.attrsets.recurseIntoAttrs"> - <title><function>lib.attrsets.recurseIntoAttrs</function></title> - - <subtitle><literal>recurseIntoAttrs :: AttrSet -> AttrSet</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.recurseIntoAttrs" /> - - <para> - Make various Nix tools consider the contents of the resulting attribute set when looking for what to build, find, etc. - </para> - - <para> - This function only affects a single attribute set; it does not apply itself recursively for nested attribute sets. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>attrs</varname> - </term> - <listitem> - <para> - An attribute set to scan for derivations. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.recurseIntoAttrs-example"> - <title>Making Nix look inside an attribute set</title> -<programlisting><![CDATA[ -{ pkgs ? import <nixpkgs> {} }: -{ - myTools = pkgs.lib.recurseIntoAttrs { - inherit (pkgs) hello figlet; - }; -} -]]></programlisting> - </example> - </section> - - <section xml:id="function-library-lib.attrsets.cartesianProductOfSets"> - <title><function>lib.attrsets.cartesianProductOfSets</function></title> - - <subtitle><literal>cartesianProductOfSets :: AttrSet -> [ AttrSet ]</literal> - </subtitle> - - <xi:include href="./locations.xml" xpointer="lib.attrsets.cartesianProductOfSets" /> - - <para> - Return the cartesian product of attribute set value combinations. - </para> - - <variablelist> - <varlistentry> - <term> - <varname>set</varname> - </term> - <listitem> - <para> - An attribute set with attributes that carry lists of values. - </para> - </listitem> - </varlistentry> - </variablelist> - - <example xml:id="function-library-lib.attrsets.cartesianProductOfSets-example"> - <title>Creating the cartesian product of a list of attribute values</title> -<programlisting><![CDATA[ -cartesianProductOfSets { a = [ 1 2 ]; b = [ 10 20 ]; } -=> [ - { a = 1; b = 10; } - { a = 1; b = 20; } - { a = 2; b = 10; } - { a = 2; b = 20; } - ] -]]></programlisting> - </example> - </section> -</section> diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md index 0fdf6eb6a12f5..3490b25761216 100644 --- a/doc/languages-frameworks/vim.section.md +++ b/doc/languages-frameworks/vim.section.md @@ -10,12 +10,21 @@ At the moment we support two different methods for managing plugins: - Vim packages (*recommended*) - vim-plug (vim only) +Right now two Vim packages are available: `vim` which has most features that require extra +dependencies disabled and `vim-full` which has them configurable and enabled by default. + +::: {.note} +`vim_configurable` is a deprecated alias for `vim-full` and refers to the fact that its +build-time features are configurable. It has nothing to do with user configuration, +and both the `vim` and `vim-full` packages can be customized as explained in the next section. +::: + ## Custom configuration {#custom-configuration} Adding custom .vimrc lines can be done using the following code: ```nix -vim_configurable.customize { +vim-full.customize { # `name` optionally specifies the name of the executable and package name = "vim-with-plugins"; @@ -62,7 +71,7 @@ neovim-qt.override { To store your plugins in Vim packages (the native Vim plugin manager, see `:help packages`) the following example can be used: ```nix -vim_configurable.customize { +vim-full.customize { vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; { # loaded on launch start = [ youcompleteme fugitive ]; @@ -101,7 +110,7 @@ The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.n ```nix { packageOverrides = pkgs: with pkgs; { - myVim = vim_configurable.customize { + myVim = vim-full.customize { # `name` specifies the name of the executable and package name = "vim-with-plugins"; # add here code from the example section @@ -190,7 +199,7 @@ To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim plugins the following example can be used: ```nix -vim_configurable.customize { +vim-full.customize { vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; { # loaded on launch plug.plugins = [ youcompleteme fugitive phpCompletion elm-vim ]; diff --git a/lib/asserts.nix b/lib/asserts.nix index 9ae357cbc935e..98e0b490acf29 100644 --- a/lib/asserts.nix +++ b/lib/asserts.nix @@ -16,11 +16,15 @@ rec { assertMsg :: Bool -> String -> Bool */ # TODO(Profpatsch): add tests that check stderr - assertMsg = pred: msg: + assertMsg = + # Predicate that needs to succeed, otherwise `msg` is thrown + pred: + # Message to throw in case `pred` fails + msg: pred || builtins.throw msg; - /* Specialized `assertMsg` for checking if val is one of the elements - of a list. Useful for checking enums. + /* Specialized `assertMsg` for checking if `val` is one of the elements + of the list `xs`. Useful for checking enums. Example: let sslLibrary = "libressl"; @@ -33,7 +37,14 @@ rec { Type: assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool */ - assertOneOf = name: val: xs: assertMsg + assertOneOf = + # The name of the variable the user entered `val` into, for inclusion in the error message + name: + # The value of what the user provided, to be compared against the values in `xs` + val: + # The list of valid values + xs: + assertMsg (lib.elem val xs) "${name} must be one of ${ lib.generators.toPretty {} xs}, but is: ${ diff --git a/lib/attrsets.nix b/lib/attrsets.nix index 8b5c0ef4cea62..511d619a1dc2f 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -20,13 +20,22 @@ rec { => 3 attrByPath ["z" "z"] 6 x => 6 + + Type: + attrByPath :: [String] -> Any -> AttrSet -> Any */ - attrByPath = attrPath: default: e: + attrByPath = + # A list of strings representing the attribute path to return from `set` + attrPath: + # Default value if `attrPath` does not resolve to an existing value + default: + # The nested attribute set to select values from + set: let attr = head attrPath; in - if attrPath == [] then e - else if e ? ${attr} - then attrByPath (tail attrPath) default e.${attr} + if attrPath == [] then set + else if set ? ${attr} + then attrByPath (tail attrPath) default set.${attr} else default; /* Return if an attribute from nested attribute set exists. @@ -38,8 +47,14 @@ rec { hasAttrByPath ["z" "z"] x => false + Type: + hasAttrByPath :: [String] -> AttrSet -> Bool */ - hasAttrByPath = attrPath: e: + hasAttrByPath = + # A list of strings representing the attribute path to check from `set` + attrPath: + # The nested attribute set to check + e: let attr = head attrPath; in if attrPath == [] then true @@ -48,13 +63,20 @@ rec { else false; - /* Return nested attribute set in which an attribute is set. + /* Create a new attribute set with `value` set at the nested attribute location specified in `attrPath`. Example: setAttrByPath ["a" "b"] 3 => { a = { b = 3; }; } + + Type: + setAttrByPath :: [String] -> Any -> AttrSet */ - setAttrByPath = attrPath: value: + setAttrByPath = + # A list of strings representing the attribute path to set + attrPath: + # The value to set at the location described by `attrPath` + value: let len = length attrPath; atDepth = n: @@ -63,8 +85,8 @@ rec { else { ${elemAt attrPath n} = atDepth (n + 1); }; in atDepth 0; - /* Like `attrByPath' without a default value. If it doesn't find the - path it will throw. + /* Like `attrByPath', but without a default value. If it doesn't find the + path it will throw an error. Example: x = { a = { b = 3; }; } @@ -72,10 +94,17 @@ rec { => 3 getAttrFromPath ["z" "z"] x => error: cannot find attribute `z.z' + + Type: + getAttrFromPath :: [String] -> AttrSet -> Value */ - getAttrFromPath = attrPath: + getAttrFromPath = + # A list of strings representing the attribute path to get from `set` + attrPath: + # The nested attribute set to find the value in. + set: let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'"; - in attrByPath attrPath (abort errorMsg); + in attrByPath attrPath (abort errorMsg) set; /* Map each attribute in the given set and merge them into a new attribute set. @@ -101,19 +130,23 @@ rec { Takes a list of updates to apply and an attribute set to apply them to, and returns the attribute set with the updates applied. Updates are - represented as { path = ...; update = ...; } values, where `path` is a + represented as `{ path = ...; update = ...; }` values, where `path` is a list of strings representing the attribute path that should be updated, and `update` is a function that takes the old value at that attribute path as an argument and returns the new value it should be. Properties: + - Updates to deeper attribute paths are applied before updates to more shallow attribute paths + - Multiple updates to the same attribute path are applied in the order they appear in the update list + - If any but the last `path` element leads into a value that is not an attribute set, an error is thrown + - If there is an update for an attribute path that doesn't exist, accessing the argument in the update function causes an error, but intermediate attribute sets are implicitly created as needed @@ -134,6 +167,9 @@ rec { } ] { a.b.c = 0; } => { a = { b = { d = 1; }; }; x = { y = "xy"; }; } + + Type: + updateManyAttrsByPath :: [AttrSet] -> AttrSet -> AttrSet */ updateManyAttrsByPath = let # When recursing into attributes, instead of updating the `path` of each @@ -199,8 +235,15 @@ rec { Example: attrVals ["a" "b" "c"] as => [as.a as.b as.c] + + Type: + attrVals :: [String] -> AttrSet -> [Any] */ - attrVals = nameList: set: map (x: set.${x}) nameList; + attrVals = + # The list of attributes to fetch from `set`. Each attribute name must exist on the attrbitue set + nameList: + # The set to get attribute values from + set: map (x: set.${x}) nameList; /* Return the values of all attributes in the given set, sorted by @@ -209,6 +252,8 @@ rec { Example: attrValues {c = 3; a = 1; b = 2;} => [1 2 3] + Type: + attrValues :: AttrSet -> [Any] */ attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs); @@ -219,8 +264,15 @@ rec { Example: getAttrs [ "a" "b" ] { a = 1; b = 2; c = 3; } => { a = 1; b = 2; } + + Type: + getAttrs :: [String] -> AttrSet -> AttrSet */ - getAttrs = names: attrs: genAttrs names (name: attrs.${name}); + getAttrs = + # A list of attribute names to get out of `set` + names: + # The set to get the named attributes from + attrs: genAttrs names (name: attrs.${name}); /* Collect each attribute named `attr' from a list of attribute sets. Sets that don't contain the named attribute are ignored. @@ -228,6 +280,9 @@ rec { Example: catAttrs "a" [{a = 1;} {b = 0;} {a = 2;}] => [1 2] + + Type: + catAttrs :: String -> [AttrSet] -> [Any] */ catAttrs = builtins.catAttrs or (attr: l: concatLists (map (s: if s ? ${attr} then [s.${attr}] else []) l)); @@ -239,8 +294,15 @@ rec { Example: filterAttrs (n: v: n == "foo") { foo = 1; bar = 2; } => { foo = 1; } + + Type: + filterAttrs :: (String -> Any -> Bool) -> AttrSet -> AttrSet */ - filterAttrs = pred: set: + filterAttrs = + # Predicate taking an attribute name and an attribute value, which returns `true` to include the attribute, or `false` to exclude the attribute. + pred: + # The attribute set to filter + set: listToAttrs (concatMap (name: let v = set.${name}; in if pred name v then [(nameValuePair name v)] else []) (attrNames set)); @@ -250,8 +312,15 @@ rec { Example: filterAttrsRecursive (n: v: v != null) { foo = { bar = null; }; } => { foo = {}; } + + Type: + filterAttrsRecursive :: (String -> Any -> Bool) -> AttrSet -> AttrSet */ - filterAttrsRecursive = pred: set: + filterAttrsRecursive = + # Predicate taking an attribute name and an attribute value, which returns `true` to include the attribute, or `false` to exclude the attribute. + pred: + # The attribute set to filter + set: listToAttrs ( concatMap (name: let v = set.${name}; in @@ -269,23 +338,28 @@ rec { Example: foldAttrs (item: acc: [item] ++ acc) [] [{ a = 2; } { a = 3; }] => { a = [ 2 3 ]; } + + Type: + foldAttrs :: (Any -> Any -> Any) -> Any -> [AttrSets] -> Any */ - foldAttrs = op: nul: + foldAttrs = + # A function, given a value and a collector combines the two. + op: + # The starting value. + nul: + # A list of attribute sets to fold together by key. + list_of_attrs: foldr (n: a: foldr (name: o: o // { ${name} = op n.${name} (a.${name} or nul); } ) a (attrNames n) - ) {}; + ) {} list_of_attrs; /* Recursively collect sets that verify a given predicate named `pred' from the set `attrs'. The recursion is stopped when the predicate is verified. - Type: - collect :: - (AttrSet -> Bool) -> AttrSet -> [x] - Example: collect isList { a = { b = ["b"]; }; c = [1]; } => [["b"] [1]] @@ -293,8 +367,15 @@ rec { collect (x: x ? outPath) { a = { outPath = "a/"; }; b = { outPath = "b/"; }; } => [{ outPath = "a/"; } { outPath = "b/"; }] + + Type: + collect :: (AttrSet -> Bool) -> AttrSet -> [x] */ - collect = pred: attrs: + collect = + # Given an attribute's value, determine if recursion should stop. + pred: + # The attribute set to recursively collect. + attrs: if pred attrs then [ attrs ] else if isAttrs attrs then @@ -312,8 +393,12 @@ rec { { a = 2; b = 10; } { a = 2; b = 20; } ] + Type: + cartesianProductOfSets :: AttrSet -> [AttrSet] */ - cartesianProductOfSets = attrsOfLists: + cartesianProductOfSets = + # Attribute set with attributes that are lists of values + attrsOfLists: foldl' (listOfAttrs: attrName: concatMap (attrs: map (listValue: attrs // { ${attrName} = listValue; }) attrsOfLists.${attrName} @@ -321,25 +406,32 @@ rec { ) [{}] (attrNames attrsOfLists); - /* Utility function that creates a {name, value} pair as expected by - builtins.listToAttrs. + /* Utility function that creates a `{name, value}` pair as expected by `builtins.listToAttrs`. Example: nameValuePair "some" 6 => { name = "some"; value = 6; } + + Type: + nameValuePair :: String -> Any -> AttrSet */ - nameValuePair = name: value: { inherit name value; }; + nameValuePair = + # Attribute name + name: + # Attribute value + value: + { inherit name value; }; - /* Apply a function to each element in an attribute set. The - function takes two arguments --- the attribute name and its value - --- and returns the new value for the attribute. The result is a - new attribute set. + /* Apply a function to each element in an attribute set, creating a new attribute set. Example: mapAttrs (name: value: name + "-" + value) { x = "foo"; y = "bar"; } => { x = "x-foo"; y = "y-bar"; } + + Type: + mapAttrs :: (String -> Any -> Any) -> AttrSet -> AttrSet */ mapAttrs = builtins.mapAttrs or (f: set: @@ -354,24 +446,35 @@ rec { mapAttrs' (name: value: nameValuePair ("foo_" + name) ("bar-" + value)) { x = "a"; y = "b"; } => { foo_x = "bar-a"; foo_y = "bar-b"; } + + Type: + mapAttrs' :: (String -> Any -> { name = String; value = Any }) -> AttrSet -> AttrSet */ - mapAttrs' = f: set: + mapAttrs' = + # A function, given an attribute's name and value, returns a new `nameValuePair`. + f: + # Attribute set to map over. + set: listToAttrs (map (attr: f attr set.${attr}) (attrNames set)); /* Call a function for each attribute in the given set and return the result in a list. - Type: - mapAttrsToList :: - (String -> a -> b) -> AttrSet -> [b] - Example: mapAttrsToList (name: value: name + value) { x = "a"; y = "b"; } => [ "xa" "yb" ] + + Type: + mapAttrsToList :: (String -> a -> b) -> AttrSet -> [b] + */ - mapAttrsToList = f: attrs: + mapAttrsToList = + # A function, given an attribute's name and value, returns a new value. + f: + # Attribute set to map over. + attrs: map (name: f name attrs.${name}) (attrNames attrs); @@ -379,16 +482,20 @@ rec { attribute sets. Also, the first argument of the argument function is a *list* of the names of the containing attributes. - Type: - mapAttrsRecursive :: - ([String] -> a -> b) -> AttrSet -> AttrSet - Example: 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"; } + + Type: + mapAttrsRecursive :: ([String] -> a -> b) -> AttrSet -> AttrSet */ - mapAttrsRecursive = mapAttrsRecursiveCond (as: true); + mapAttrsRecursive = + # A function, given a list of attribute names and a value, returns a new value. + f: + # Set to recursively map over. + set: + mapAttrsRecursiveCond (as: true) f set; /* Like `mapAttrsRecursive', but it takes an additional predicate @@ -397,10 +504,6 @@ rec { recurse, but does apply the map function. If it returns true, it does recurse, and does not apply the map function. - Type: - mapAttrsRecursiveCond :: - (AttrSet -> Bool) -> ([String] -> a -> b) -> AttrSet -> AttrSet - Example: # To prevent recursing into derivations (which are attribute # sets with the attribute "type" equal to "derivation"): @@ -408,8 +511,17 @@ rec { (as: !(as ? "type" && as.type == "derivation")) (x: ... do something ...) attrs + + Type: + mapAttrsRecursiveCond :: (AttrSet -> Bool) -> ([String] -> a -> b) -> AttrSet -> AttrSet */ - mapAttrsRecursiveCond = cond: f: set: + mapAttrsRecursiveCond = + # A function, given the attribute set the recursion is currently at, determine if to recurse deeper into that attribute set. + cond: + # A function, given a list of attribute names and a value, returns a new value. + f: + # Attribute set to recursively map over. + set: let recurse = path: let @@ -428,13 +540,20 @@ rec { Example: genAttrs [ "foo" "bar" ] (name: "x_" + name) => { foo = "x_foo"; bar = "x_bar"; } + + Type: + genAttrs :: [ String ] -> (String -> Any) -> AttrSet */ - genAttrs = names: f: + genAttrs = + # Names of values in the resulting attribute set. + names: + # A function, given the name of the attribute, returns the attribute's value. + f: listToAttrs (map (n: nameValuePair n (f n)) names); /* Check whether the argument is a derivation. Any set with - { type = "derivation"; } counts as a derivation. + `{ type = "derivation"; }` counts as a derivation. Example: nixpkgs = import <nixpkgs> {} @@ -442,25 +561,36 @@ rec { => true isDerivation "foobar" => false + + Type: + isDerivation :: Any -> Bool */ - isDerivation = x: x.type or null == "derivation"; + isDerivation = + # Value to check. + value: value.type or null == "derivation"; - /* Converts a store path to a fake derivation. */ - toDerivation = path: - let - path' = builtins.storePath path; - res = - { type = "derivation"; - name = sanitizeDerivationName (builtins.substring 33 (-1) (baseNameOf path')); - outPath = path'; - outputs = [ "out" ]; - out = res; - outputName = "out"; - }; + /* Converts a store path to a fake derivation. + + Type: + toDerivation :: Path -> Derivation + */ + toDerivation = + # A store path to convert to a derivation. + path: + let + path' = builtins.storePath path; + res = + { type = "derivation"; + name = sanitizeDerivationName (builtins.substring 33 (-1) (baseNameOf path')); + outPath = path'; + outputs = [ "out" ]; + out = res; + outputName = "out"; + }; in res; - /* If `cond' is true, return the attribute set `as', + /* If `cond` is true, return the attribute set `as`, otherwise an empty attribute set. Example: @@ -468,47 +598,82 @@ rec { => { my = "set"; } optionalAttrs (false) { my = "set"; } => { } + + Type: + optionalAttrs :: Bool -> AttrSet */ - optionalAttrs = cond: as: if cond then as else {}; + optionalAttrs = + # Condition under which the `as` attribute set is returned. + cond: + # The attribute set to return if `cond` is `true`. + as: + if cond then as else {}; - /* Merge sets of attributes and use the function f to merge attributes + /* Merge sets of attributes and use the function `f` to merge attributes values. Example: zipAttrsWithNames ["a"] (name: vs: vs) [{a = "x";} {a = "y"; b = "z";}] => { a = ["x" "y"]; } + + Type: + zipAttrsWithNames :: [ String ] -> (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet */ - zipAttrsWithNames = names: f: sets: + zipAttrsWithNames = + # List of attribute names to zip. + names: + # A function, accepts an attribute name, all the values, and returns a combined value. + f: + # List of values from the list of attribute sets. + sets: listToAttrs (map (name: { inherit name; value = f name (catAttrs name sets); }) names); - /* Implementation note: Common names appear multiple times in the list of + + /* Merge sets of attributes and use the function f to merge attribute values. + Like `lib.attrsets.zipAttrsWithNames` with all key names are passed for `names`. + + Implementation note: Common names appear multiple times in the list of names, hopefully this does not affect the system because the maximal - laziness avoid computing twice the same expression and listToAttrs does + laziness avoid computing twice the same expression and `listToAttrs` does not care about duplicated attribute names. Example: zipAttrsWith (name: values: values) [{a = "x";} {a = "y"; b = "z";}] => { a = ["x" "y"]; b = ["z"] } + + Type: + zipAttrsWith :: (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet */ zipAttrsWith = builtins.zipAttrsWith or (f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets); - /* Like `zipAttrsWith' with `(name: values: values)' as the function. - Example: - zipAttrs [{a = "x";} {a = "y"; b = "z";}] - => { a = ["x" "y"]; b = ["z"] } + + /* Merge sets of attributes and combine each attribute value in to a list. + + Like `lib.attrsets.zipAttrsWith' with `(name: values: values)' as the function. + + Example: + zipAttrs [{a = "x";} {a = "y"; b = "z";}] + => { a = ["x" "y"]; b = ["z"] } + + Type: + zipAttrs :: [ AttrSet ] -> AttrSet */ - zipAttrs = zipAttrsWith (name: values: values); + zipAttrs = + # List of attribute sets to zip together. + sets: + zipAttrsWith (name: values: values) sets; + /* Does the same as the update operator '//' 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 + the predicate is satisfied, the value of the first attribute set is replaced by the value of the second attribute set. Example: @@ -524,15 +689,23 @@ rec { baz = 4; } - returns: { + => { 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 } - */ - recursiveUpdateUntil = pred: lhs: rhs: + Type: + recursiveUpdateUntil :: ( [ String ] -> AttrSet -> AttrSet -> Bool ) -> AttrSet -> AttrSet -> AttrSet + */ + recursiveUpdateUntil = + # Predicate, taking the path to the current attribute as a list of strings for attribute names, and the two values at that path from the original arguments. + pred: + # Left attribute set of the merge. + lhs: + # Right attribute set of the merge. + rhs: let f = attrPath: zipAttrsWith (n: values: let here = attrPath ++ [n]; in @@ -544,6 +717,7 @@ rec { ); in f [] [rhs lhs]; + /* A recursive variant of the update operator ‘//’. 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 @@ -562,16 +736,32 @@ rec { boot.loader.grub.device = ""; } - */ - recursiveUpdate = recursiveUpdateUntil (path: lhs: rhs: !(isAttrs lhs && isAttrs rhs)); + Type: + recursiveUpdate :: AttrSet -> AttrSet -> AttrSet + */ + recursiveUpdate = + # Left attribute set of the merge. + lhs: + # Right attribute set of the merge. + rhs: + recursiveUpdateUntil (path: lhs: rhs: !(isAttrs lhs && isAttrs rhs)) lhs rhs; + /* Returns true if the pattern is contained in the set. False otherwise. Example: matchAttrs { cpu = {}; } { cpu = { bits = 64; }; } => true - */ - matchAttrs = pattern: attrs: assert isAttrs pattern; + + Type: + matchAttrs :: AttrSet -> AttrSet -> Bool + */ + matchAttrs = + # Attribute set strucutre to match + pattern: + # Attribute set to find patterns in + attrs: + assert isAttrs pattern; all id (attrValues (zipAttrsWithNames (attrNames pattern) (n: values: let pat = head values; val = elemAt values 1; in if length values == 1 then false @@ -579,6 +769,7 @@ rec { else pat == val ) [pattern attrs])); + /* Override only the attributes that are already present in the old set useful for deep-overriding. @@ -589,10 +780,18 @@ rec { => { b = 2; } overrideExisting { a = 3; b = 2; } { a = 1; } => { a = 1; b = 2; } + + Type: + overrideExisting :: AttrSet -> AttrSet -> AttrSet */ - overrideExisting = old: new: + overrideExisting = + # Original attribute set + old: + # Attribute set with attributes to override in `old`. + new: mapAttrs (name: value: new.${name} or value) old; + /* Turns a list of strings into a human-readable description of those strings represented as an attribute path. The result of this function is not intended to be machine-readable. @@ -602,44 +801,120 @@ rec { => "foo.\"10\".bar" showAttrPath [] => "<root attribute path>" + + Type: + showAttrPath :: [String] -> String */ - showAttrPath = path: + showAttrPath = + # Attribute path to render to a string + path: if path == [] then "<root attribute path>" else concatMapStringsSep "." escapeNixIdentifier path; + /* Get a package output. If no output is found, fallback to `.out` and then to the default. Example: getOutput "dev" pkgs.openssl => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-dev" + + Type: + getOutput :: String -> Derivation -> String */ getOutput = output: pkg: if ! pkg ? outputSpecified || ! pkg.outputSpecified then pkg.${output} or pkg.out or pkg else pkg; + /* Get a package's `bin` output. + If the output does not exist, fallback to `.out` and then to the default. + + Example: + getOutput pkgs.openssl + => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r" + + Type: + getOutput :: Derivation -> String + */ getBin = getOutput "bin"; + + + /* Get a package's `lib` output. + If the output does not exist, fallback to `.out` and then to the default. + + Example: + getOutput pkgs.openssl + => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-lib" + + Type: + getOutput :: Derivation -> String + */ getLib = getOutput "lib"; + + + /* Get a package's `dev` output. + If the output does not exist, fallback to `.out` and then to the default. + + Example: + getOutput pkgs.openssl + => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-dev" + + Type: + getOutput :: Derivation -> String + */ getDev = getOutput "dev"; + + + /* Get a package's `man` output. + If the output does not exist, fallback to `.out` and then to the default. + + Example: + getOutput pkgs.openssl + => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-man" + + Type: + getOutput :: Derivation -> String + */ getMan = getOutput "man"; - /* Pick the outputs of packages to place in buildInputs */ - chooseDevOutputs = builtins.map getDev; + /* Pick the outputs of packages to place in `buildInputs` */ + chooseDevOutputs = + # List of packages to pick `dev` outputs from + drvs: + builtins.map getDev drvs; /* Make various Nix tools consider the contents of the resulting attribute set when looking for what to build, find, etc. This function only affects a single attribute set; it does not apply itself recursively for nested attribute sets. + + Example: + { pkgs ? import <nixpkgs> {} }: + { + myTools = pkgs.lib.recurseIntoAttrs { + inherit (pkgs) hello figlet; + }; + } + + Type: + recurseIntoAttrs :: AttrSet -> AttrSet */ recurseIntoAttrs = - attrs: attrs // { recurseForDerivations = true; }; + # An attribute set to scan for derivations. + attrs: + attrs // { recurseForDerivations = true; }; /* Undo the effect of recurseIntoAttrs. + + Type: + recurseIntoAttrs :: AttrSet -> AttrSet */ dontRecurseIntoAttrs = - attrs: attrs // { recurseForDerivations = false; }; + # An attribute set to not scan for derivations. + attrs: + attrs // { recurseForDerivations = false; }; /* `unionOfDisjoint x y` is equal to `x // y // z` where the attrnames in `z` are the intersection of the attrnames in `x` and @@ -655,9 +930,9 @@ rec { in (x // y) // mask; - /*** deprecated stuff ***/ - + # deprecated zipWithNames = zipAttrsWithNames; + # deprecated zip = builtins.trace "lib.zip is deprecated, use lib.zipAttrsWith instead" zipAttrsWith; } diff --git a/nixos/doc/manual/configuration/linux-kernel.chapter.md b/nixos/doc/manual/configuration/linux-kernel.chapter.md index 1d06543d4f1e3..7b84416a86465 100644 --- a/nixos/doc/manual/configuration/linux-kernel.chapter.md +++ b/nixos/doc/manual/configuration/linux-kernel.chapter.md @@ -17,6 +17,16 @@ you may want to use one of the unversioned `pkgs.linuxPackages_*` aliases such as `pkgs.linuxPackages_latest`, that are kept up to date with new versions. +Please note that the current convention in NixOS is to only keep actively +maintained kernel versions on both unstable and the currently supported stable +release(s) of NixOS. This means that a non-longterm kernel will be removed after it's +abandoned by the kernel developers, even on stable NixOS versions. If you +pin your kernel onto a non-longterm version, expect your evaluation to fail as +soon as the version is out of maintenance. + +Longterm versions of kernels will be removed before the next stable NixOS that will +exceed the maintenance period of the kernel version. + The default Linux kernel configuration should be fine for most users. You can see the configuration of your current kernel with the following command: @@ -138,3 +148,26 @@ $ cd linux-* $ make -C $dev/lib/modules/*/build M=$(pwd)/drivers/net/ethernet/mellanox modules # insmod ./drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko ``` + +## ZFS {#sec-linux-zfs} + +It's a common issue that the latest stable version of ZFS doesn't support the latest +available Linux kernel. It is recommended to use the latest available LTS that's compatible +with ZFS. Usually this is the default kernel provided by nixpkgs (i.e. `pkgs.linuxPackages`). + +Alternatively, it's possible to pin the system to the latest available kernel +version *that is supported by ZFS* like this: + +```nix +{ + boot.kernelPackages = pkgs.zfs.latestCompatibleLinuxPackages; +} +``` + +Please note that the version this attribute points to isn't monotonic because the latest kernel +version only refers to kernel versions supported by the Linux developers. In other words, +the latest kernel version that ZFS is compatible with may decrease over time. + +An example: the latest version ZFS is compatible with is 5.19 which is a non-longterm version. When 5.19 +is out of maintenance, the latest supported kernel version is 5.15 because it's longterm and the versions +5.16, 5.17 and 5.18 are already out of maintenance because they're non-longterm. diff --git a/nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xml b/nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xml index a1d6815af29c1..dd570e1d66c27 100644 --- a/nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xml +++ b/nixos/doc/manual/from_md/configuration/linux-kernel.chapter.xml @@ -22,6 +22,19 @@ boot.kernelPackages = pkgs.linuxKernel.packages.linux_3_10; date with new versions. </para> <para> + Please note that the current convention in NixOS is to only keep + actively maintained kernel versions on both unstable and the + currently supported stable release(s) of NixOS. This means that a + non-longterm kernel will be removed after it’s abandoned by the + kernel developers, even on stable NixOS versions. If you pin your + kernel onto a non-longterm version, expect your evaluation to fail + as soon as the version is out of maintenance. + </para> + <para> + Longterm versions of kernels will be removed before the next stable + NixOS that will exceed the maintenance period of the kernel version. + </para> + <para> The default Linux kernel configuration should be fine for most users. You can see the configuration of your current kernel with the following command: @@ -154,4 +167,38 @@ $ make -C $dev/lib/modules/*/build M=$(pwd)/drivers/net/ethernet/mellanox module # insmod ./drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko </programlisting> </section> + <section xml:id="sec-linux-zfs"> + <title>ZFS</title> + <para> + It’s a common issue that the latest stable version of ZFS doesn’t + support the latest available Linux kernel. It is recommended to + use the latest available LTS that’s compatible with ZFS. Usually + this is the default kernel provided by nixpkgs (i.e. + <literal>pkgs.linuxPackages</literal>). + </para> + <para> + Alternatively, it’s possible to pin the system to the latest + available kernel version <emphasis>that is supported by + ZFS</emphasis> like this: + </para> + <programlisting language="bash"> +{ + boot.kernelPackages = pkgs.zfs.latestCompatibleLinuxPackages; +} +</programlisting> + <para> + Please note that the version this attribute points to isn’t + monotonic because the latest kernel version only refers to kernel + versions supported by the Linux developers. In other words, the + latest kernel version that ZFS is compatible with may decrease + over time. + </para> + <para> + An example: the latest version ZFS is compatible with is 5.19 + which is a non-longterm version. When 5.19 is out of maintenance, + the latest supported kernel version is 5.15 because it’s longterm + and the versions 5.16, 5.17 and 5.18 are already out of + maintenance because they’re non-longterm. + </para> + </section> </chapter> diff --git a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml index cc330e2f88706..de8a830b02094 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2305.section.xml @@ -160,6 +160,17 @@ <itemizedlist> <listitem> <para> + <literal>vim_configurable</literal> has been renamed to + <literal>vim-full</literal> to avoid confusion: + <literal>vim-full</literal>’s build-time features are + configurable, but both <literal>vim</literal> and + <literal>vim-full</literal> are + <emphasis>customizable</emphasis> (in the sense of user + configuration, like vimrc). + </para> + </listitem> + <listitem> + <para> The module for the application firewall <literal>opensnitch</literal> got the ability to configure rules. Available as @@ -186,6 +197,21 @@ </listitem> <listitem> <para> + To reduce closure size in + <literal>nixos/modules/profiles/minimal.nix</literal> profile + disabled installation documentations and manuals. Also + disabled <literal>logrotate</literal> and + <literal>udisks2</literal> services. + </para> + </listitem> + <listitem> + <para> + The minimal ISO image now use + <literal>nixos/modules/profiles/minimal.nix</literal> profile. + </para> + </listitem> + <listitem> + <para> A new <literal>virtualisation.rosetta</literal> module was added to allow running <literal>x86_64</literal> binaries through diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index 886db43c68eb6..049a620eb455d 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -49,6 +49,8 @@ In addition to numerous new and upgraded packages, this release has the followin <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> +- `vim_configurable` has been renamed to `vim-full` to avoid confusion: `vim-full`'s build-time features are configurable, but both `vim` and `vim-full` are *customizable* (in the sense of user configuration, like vimrc). + - The module for the application firewall `opensnitch` got the ability to configure rules. Available as [services.opensnitch.rules](#opt-services.opensnitch.rules) - `services.mastodon` gained a tootctl wrapped named `mastodon-tootctl` similar to `nextcloud-occ` which can be executed from any user and switches to the configured mastodon user with sudo and sources the environment variables. @@ -58,6 +60,10 @@ In addition to numerous new and upgraded packages, this release has the followin `services.dnsmasq.extraConfig` will be deprecated when NixOS 22.11 reaches end of life. +- To reduce closure size in `nixos/modules/profiles/minimal.nix` profile disabled installation documentations and manuals. Also disabled `logrotate` and `udisks2` services. + +- The minimal ISO image now use `nixos/modules/profiles/minimal.nix` profile. + - A new `virtualisation.rosetta` module was added to allow running `x86_64` binaries through [Rosetta](https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment) inside virtualised NixOS guests on Apple silicon. This feature works by default with the [UTM](https://docs.getutm.app/) virtualisation [package](https://search.nixos.org/packages?channel=unstable&show=utm&from=0&size=1&sort=relevance&type=packages&query=utm). - Resilio sync secret keys can now be provided using a secrets file at runtime, preventing these secrets from ending up in the Nix store. diff --git a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix index 97506045e0e15..abf0a5186b6aa 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix @@ -1,14 +1,17 @@ # This module defines a small NixOS installation CD. It does not # contain any graphical stuff. -{ ... }: +{ lib, ... }: { - imports = - [ ./installation-cd-base.nix - ]; + imports = [ + ../../profiles/minimal.nix + ./installation-cd-base.nix + ]; - isoImage.edition = "minimal"; + documentation.man.enable = lib.mkOverride 500 true; - fonts.fontconfig.enable = false; + fonts.fontconfig.enable = lib.mkForce false; + + isoImage.edition = lib.mkForce "minimal"; } diff --git a/nixos/modules/installer/netboot/netboot-minimal.nix b/nixos/modules/installer/netboot/netboot-minimal.nix index 1563501a7e011..268357c0e41a2 100644 --- a/nixos/modules/installer/netboot/netboot-minimal.nix +++ b/nixos/modules/installer/netboot/netboot-minimal.nix @@ -3,8 +3,10 @@ { ... }: { - imports = - [ ./netboot-base.nix - ../../profiles/minimal.nix - ]; + imports = [ + ./netboot-base.nix + ../../profiles/minimal.nix + ]; + + documentation.man.enable = lib.mkOverride 500 true; } diff --git a/nixos/modules/profiles/minimal.nix b/nixos/modules/profiles/minimal.nix index 0125017dfee88..bd1b2b4521899 100644 --- a/nixos/modules/profiles/minimal.nix +++ b/nixos/modules/profiles/minimal.nix @@ -10,10 +10,20 @@ with lib; documentation.enable = mkDefault false; + documentation.doc.enable = mkDefault false; + + documentation.info.enable = mkDefault false; + + documentation.man.enable = mkDefault false; + documentation.nixos.enable = mkDefault false; programs.command-not-found.enable = mkDefault false; + services.logrotate.enable = mkDefault false; + + services.udisks2.enable = mkDefault false; + xdg.autostart.enable = mkDefault false; xdg.icons.enable = mkDefault false; xdg.mime.enable = mkDefault false; diff --git a/nixos/modules/programs/skim.nix b/nixos/modules/programs/skim.nix index 1333cdd30ab23..57a5d68ec3d5a 100644 --- a/nixos/modules/programs/skim.nix +++ b/nixos/modules/programs/skim.nix @@ -6,7 +6,7 @@ in { options = { programs.skim = { - fuzzyCompletion = mkEnableOption (mdDoc "fuzzy Completion with skim"); + fuzzyCompletion = mkEnableOption (mdDoc "fuzzy completion with skim"); keybindings = mkEnableOption (mdDoc "skim keybindings"); package = mkPackageOption pkgs "skim" {}; }; @@ -26,5 +26,9 @@ in '' + optionalString cfg.keybindings '' source ${cfg.package}/share/skim/key-bindings.zsh ''; + + programs.fish.interactiveShellInit = optionalString cfg.keybindings '' + source ${cfg.package}/share/skim/key-bindings.fish && skim_key_bindings + ''; }; } diff --git a/nixos/modules/services/hardware/asusd.nix b/nixos/modules/services/hardware/asusd.nix index f0751c4402516..fba9b059bbbb7 100644 --- a/nixos/modules/services/hardware/asusd.nix +++ b/nixos/modules/services/hardware/asusd.nix @@ -105,7 +105,7 @@ in systemd.packages = [ pkgs.asusctl ]; services.dbus.packages = [ pkgs.asusctl ]; services.udev.packages = [ pkgs.asusctl ]; - services.supergfxd.enable = true; + services.supergfxd.enable = lib.mkDefault true; systemd.user.services.asusd-user.enable = cfg.enableUserService; }; diff --git a/nixos/modules/services/hardware/supergfxd.nix b/nixos/modules/services/hardware/supergfxd.nix index 5cc07e02f3175..cb604db91dc36 100644 --- a/nixos/modules/services/hardware/supergfxd.nix +++ b/nixos/modules/services/hardware/supergfxd.nix @@ -23,7 +23,7 @@ in config = lib.mkIf cfg.enable { environment.systemPackages = [ pkgs.supergfxctl ]; - environment.etc."supergfxd.conf".source = lib.mkIf (cfg.settings != null) (json.generate "supergfxd.conf" cfg.settings); + environment.etc."supergfxd.conf" = lib.mkIf (cfg.settings != null) { source = json.generate "supergfxd.conf" cfg.settings; }; services.dbus.enable = true; diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix index 6783f8ec62ff9..b13e50cb17d2d 100644 --- a/nixos/modules/system/boot/kernel.nix +++ b/nixos/modules/system/boot/kernel.nix @@ -62,6 +62,11 @@ in configuration. For instance, if you use the NVIDIA X driver, then it also needs to contain an attribute {var}`nvidia_x11`. + + Please note that we strictly support kernel versions that are + maintained by the Linux developers only. More information on the + availability of kernel versions is documented + [in the Linux section of the manual](https://nixos.org/manual/nixos/unstable/index.html#sec-kernel-config). ''; }; diff --git a/pkgs/applications/editors/neovim/tests/default.nix b/pkgs/applications/editors/neovim/tests/default.nix index 3fed7fda38aca..29749c35db1fa 100644 --- a/pkgs/applications/editors/neovim/tests/default.nix +++ b/pkgs/applications/editors/neovim/tests/default.nix @@ -1,5 +1,5 @@ # run tests by building `neovim.tests` -{ vimUtils, vim_configurable, writeText, neovim, vimPlugins +{ vimUtils, writeText, neovim, vimPlugins , lib, fetchFromGitHub, neovimUtils, wrapNeovimUnstable , neovim-unwrapped , fetchFromGitLab diff --git a/pkgs/applications/editors/spacevim/default.nix b/pkgs/applications/editors/spacevim/default.nix index ef3a6538c7c4a..8252f8ce1c145 100644 --- a/pkgs/applications/editors/spacevim/default.nix +++ b/pkgs/applications/editors/spacevim/default.nix @@ -2,7 +2,7 @@ , git , fzf , makeWrapper -, vim_configurable +, vim-full , vimPlugins , fetchFromGitHub , lib @@ -14,7 +14,7 @@ let format = formats.toml { }; - vim-customized = vim_configurable.customize { + vim-customized = vim-full.customize { name = "vim"; # Not clear at the moment how to import plugins such that # SpaceVim finds them and does not auto download them to diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix index 11ddddaefc24c..ad64772de5548 100644 --- a/pkgs/applications/editors/vim/configurable.nix +++ b/pkgs/applications/editors/vim/configurable.nix @@ -63,7 +63,7 @@ let in stdenv.mkDerivation rec { - pname = "vim_configurable"; + pname = "vim-full"; inherit (common) version postPatch hardeningDisable enableParallelBuilding meta; diff --git a/pkgs/applications/editors/vim/macvim-configurable.nix b/pkgs/applications/editors/vim/macvim-configurable.nix index 7ed3dee9b6b9e..5c436307897f4 100644 --- a/pkgs/applications/editors/vim/macvim-configurable.nix +++ b/pkgs/applications/editors/vim/macvim-configurable.nix @@ -6,9 +6,9 @@ let makeCustomizable = macvim: macvim // { # configure expects the same args as vimUtils.vimrcFile. # This is the same as the value given to neovim.override { configure = … } - # or the value of vim_configurable.customize { vimrcConfig = … } + # or the value of vim-full.customize { vimrcConfig = … } # - # Note: Like neovim and vim_configurable, configuring macvim disables the + # Note: Like neovim and vim-full, configuring macvim disables the # sourcing of the user's vimrc. Use `customRC = "source $HOME/.vim/vimrc"` # if you want to preserve that behavior. configure = let diff --git a/pkgs/applications/editors/vim/plugins/vim-utils.nix b/pkgs/applications/editors/vim/plugins/vim-utils.nix index f0e4e8e982e8f..6607ff2b8c433 100644 --- a/pkgs/applications/editors/vim/plugins/vim-utils.nix +++ b/pkgs/applications/editors/vim/plugins/vim-utils.nix @@ -14,7 +14,7 @@ USAGE EXAMPLE Install Vim like this eg using nixos option environment.systemPackages which will provide vim-with-plugins in PATH: - vim_configurable.customize { + vim-full.customize { name = "vim-with-plugins"; # optional # add custom .vimrc lines like this: @@ -105,7 +105,7 @@ fitting the vimrcConfig.vam.pluginDictionaries option. Thus the most simple usage would be: vim_with_plugins = - let vim = vim_configurable; + let vim = vim-full; inherit (vimUtil.override {inherit vim}) rtpPath addRtp buildVimPlugin vimHelpTags; vimPlugins = [ # the derivation list from the buffer created by nix#ExportPluginsForNix diff --git a/pkgs/applications/editors/vim/vimacs.nix b/pkgs/applications/editors/vim/vimacs.nix index f8a087cbe6ee0..e65439df5236e 100644 --- a/pkgs/applications/editors/vim/vimacs.nix +++ b/pkgs/applications/editors/vim/vimacs.nix @@ -1,11 +1,11 @@ -{ lib, stdenv, config, vim_configurable, macvim, vimPlugins +{ lib, stdenv, config, vim-full, macvim, vimPlugins , useMacvim ? stdenv.isDarwin && (config.vimacs.macvim or true) , vimacsExtraArgs ? "" }: stdenv.mkDerivation rec { pname = "vimacs"; version = lib.getVersion vimPackage; - vimPackage = if useMacvim then macvim else vim_configurable; + vimPackage = if useMacvim then macvim else vim-full; buildInputs = [ vimPackage vimPlugins.vimacs ]; diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix index 1ba1fd6c13389..787f9f0c98690 100644 --- a/pkgs/applications/networking/cluster/kubernetes/default.nix +++ b/pkgs/applications/networking/cluster/kubernetes/default.nix @@ -20,13 +20,13 @@ buildGoModule rec { pname = "kubernetes"; - version = "1.25.4"; + version = "1.25.5"; src = fetchFromGitHub { owner = "kubernetes"; repo = "kubernetes"; rev = "v${version}"; - sha256 = "sha256-1k0L8QUj/764X0Y7qxjFMnatTGKeRPBUroHjSMMe5M4="; + sha256 = "sha256-HciTzp9N7YY1+jzIJY8OPmYIsGfe/5abaExnDzt1tKE="; }; vendorSha256 = null; diff --git a/pkgs/applications/networking/cluster/waypoint/default.nix b/pkgs/applications/networking/cluster/waypoint/default.nix index 317c0d5374bce..36718608d420f 100644 --- a/pkgs/applications/networking/cluster/waypoint/default.nix +++ b/pkgs/applications/networking/cluster/waypoint/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "waypoint"; - version = "0.10.3"; + version = "0.10.4"; src = fetchFromGitHub { owner = "hashicorp"; repo = pname; rev = "v${version}"; - sha256 = "sha256-+lNeMcSlhmbs1knONnoX2RhEgxTYyCfpdD6WuDTiLx8="; + sha256 = "sha256-jbrzXktY1vGk1DuzrzxlWwFQoFPprnDy2YjZQBgmcPI="; }; - vendorSha256 = "sha256-59rJ30m6eiNIapJUNc1jRJE7IoAj0O+5G8JyKkhcyvY="; + vendorSha256 = "sha256-oTzGgyQZWNj7vNpAaDO47nB7EbpUiQD66u4F1LJ2CR0="; nativeBuildInputs = [ go-bindata installShellFiles ]; diff --git a/pkgs/applications/science/computer-architecture/accelergy/default.nix b/pkgs/applications/science/computer-architecture/accelergy/default.nix new file mode 100644 index 0000000000000..ec702d2b2906e --- /dev/null +++ b/pkgs/applications/science/computer-architecture/accelergy/default.nix @@ -0,0 +1,27 @@ +{ lib, fetchFromGitHub, python3Packages, pkgs }: + +python3Packages.buildPythonApplication rec { + pname = "accelergy"; + version = "unstable-2022-05-03"; + + src = fetchFromGitHub { + owner = "Accelergy-Project"; + repo = "accelergy"; + rev = "34df8e87a889ae55cecba58992d4573466b40565"; + hash = "sha256-SRtt1EocHy5fKszpoumC+mOK/qhreoA2/Ff1wcu5WKo="; + }; + + propagatedBuildInputs = with python3Packages; [ + pyyaml + yamlordereddictloader + pyfiglet + setuptools + ]; + + meta = with lib; { + description = "An architecture-level energy/area estimator for accelerator designs"; + license = licenses.mit; + homepage = "https://accelergy.mit.edu/"; + maintainers = with maintainers; [ gdinh ]; + }; +} diff --git a/pkgs/applications/science/computer-architecture/timeloop/default.nix b/pkgs/applications/science/computer-architecture/timeloop/default.nix new file mode 100644 index 0000000000000..e1ed24be78350 --- /dev/null +++ b/pkgs/applications/science/computer-architecture/timeloop/default.nix @@ -0,0 +1,99 @@ +{ lib +, stdenv +, fetchFromGitHub +, scons +, libconfig +, boost +, libyaml +, libyamlcpp +, ncurses +, gpm +, enableAccelergy ? true +, enableISL ? false +, accelergy +}: + +stdenv.mkDerivation rec { + pname = "timeloop"; + version = "unstable-2022-11-29"; + + src = fetchFromGitHub { + owner = "NVlabs"; + repo = "timeloop"; + rev = "905ba953432c812772de935d57fd0a674a89d3c1"; + hash = "sha256-EXiWXf8hdX4vFRNk9wbFSOsix/zVkwrafGUtFrsoAN0="; + }; + + nativeBuildInputs = [ scons ]; + + buildInputs = [ + libconfig + boost + libyaml + libyamlcpp + ncurses + accelergy + ] ++ lib.optionals stdenv.isLinux [ gpm ]; + + preConfigure = '' + cp -r ./pat-public/src/pat ./src/pat + ''; + + enableParallelBuilding = true; + + #link-time optimization fails on darwin + #see https://github.com/NixOS/nixpkgs/issues/19098 + NIX_CFLAGS_COMPILE = lib.optional stdenv.isDarwin "-fno-lto"; + + postPatch = '' + # use nix ar/ranlib + substituteInPlace ./SConstruct \ + --replace "env.Replace(AR = \"gcc-ar\")" "" \ + --replace "env.Replace(RANLIB = \"gcc-ranlib\")" "" + '' + lib.optionalString stdenv.isDarwin '' + # prevent clang from dying on errors that gcc is fine with + substituteInPlace ./src/SConscript --replace "-Werror" "-Wno-inconsistent-missing-override" + + # disable LTO on macos + substituteInPlace ./src/SConscript --replace ", '-flto'" "" + + # static builds on mac fail as no static libcrt is provided by apple + # see https://stackoverflow.com/questions/3801011/ld-library-not-found-for-lcrt0-o-on-osx-10-6-with-gcc-clang-static-flag + substituteInPlace ./src/SConscript \ + --replace "'-static-libgcc', " "" \ + --replace "'-static-libstdc++', " "" \ + --replace "'-Wl,--whole-archive', '-static', " "" \ + --replace ", '-Wl,--no-whole-archive'" "" + + #remove hardcoding of gcc + sed -i '40i env.Replace(CC = "${stdenv.cc.targetPrefix}cc")' ./SConstruct + sed -i '40i env.Replace(CXX = "${stdenv.cc.targetPrefix}c++")' ./SConstruct + + #gpm doesn't exist on darwin + substituteInPlace ./src/SConscript --replace ", 'gpm'" "" + ''; + + sconsFlags = + # will fail on clang/darwin on link without --static due to undefined extern + # however, will fail with static on linux as nixpkgs deps aren't static + lib.optional stdenv.isDarwin "--static" + ++ lib.optional enableAccelergy "--accelergy" + ++ lib.optional enableISL "--with-isl"; + + + installPhase = '' + cp -r ./bin ./lib $out + mkdir -p $out/share + cp -r ./doc $out/share + mkdir -p $out/data + cp -r ./problem-shapes ./configs $out/data + ''; + + meta = with lib; { + description = "Chip modeling/mapping benchmarking framework"; + homepage = "https://timeloop.csail.mit.edu"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = with maintainers; [ gdinh ]; + }; +} diff --git a/pkgs/applications/science/logic/abc/default.nix b/pkgs/applications/science/logic/abc/default.nix index bf7bffd11591b..6a20a68324f1e 100644 --- a/pkgs/applications/science/logic/abc/default.nix +++ b/pkgs/applications/science/logic/abc/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "abc-verifier"; - version = "unstable-2022-09-08"; + version = "unstable-2022-11-09"; src = fetchFromGitHub { owner = "yosyshq"; repo = "abc"; - rev = "ab5b16ede2ff3a4ab5209df24db2c76700899684"; - hash = "sha256-G4MnBViwIosFDiPfUimGqf6fq1KJlxj+LozmgoKaH3A="; + rev = "be9a35c0363174a7cef21d55ed80d92a9ef95ab1"; + hash = "sha256-IN9YgJONcC55N89OXMrMuNuznTdjXNWxR0IngH8OWC8="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/applications/system/asusctl/default.nix b/pkgs/applications/system/asusctl/default.nix index 8c6330e69fbf4..42b1308e7b406 100644 --- a/pkgs/applications/system/asusctl/default.nix +++ b/pkgs/applications/system/asusctl/default.nix @@ -13,16 +13,16 @@ rustPlatform.buildRustPackage rec { pname = "asusctl"; - version = "4.5.2"; + version = "4.5.5"; src = fetchFromGitLab { owner = "asus-linux"; repo = "asusctl"; rev = version; - hash = "sha256-hrmH4DDNzc7iMa5YJUQEb3Ng4QekPG+CoGWoHtv9e58="; + hash = "sha256-3R8TAhOxnwKfA/Nc+R9JrLGMkZu9vGqCLbXUa8QGadA="; }; - cargoSha256 = "sha256-7JOy5mKkP021+tx8a579WvmqQewEkjFgcwD/f7gzDt8="; + cargoSha256 = "sha256-FHyKGLELX6xpPCAc/m2mqbfXcka35q0fGjeaE57g70M="; postPatch = '' files=" diff --git a/pkgs/development/compilers/openjdk/meta.nix b/pkgs/development/compilers/openjdk/meta.nix index 0fbd9eff3e4c1..127a921f097c7 100644 --- a/pkgs/development/compilers/openjdk/meta.nix +++ b/pkgs/development/compilers/openjdk/meta.nix @@ -3,7 +3,7 @@ lib: version: with lib; { license = licenses.gpl2Only; description = "The open-source Java Development Kit"; maintainers = with maintainers; [ edwtjo asbachb ]; - platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" ]; + platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "armv7l-linux" "armv6l-linux" "powerpc64le-linux" ]; mainProgram = "java"; knownVulnerabilities = optionals (builtins.elem (versions.major version) [ "12" "13" "14" "15" "16" "18" ]) [ "This OpenJDK version has reached its end of life." diff --git a/pkgs/development/compilers/yosys/default.nix b/pkgs/development/compilers/yosys/default.nix index 62bd8b15d1adf..7594d74876598 100644 --- a/pkgs/development/compilers/yosys/default.nix +++ b/pkgs/development/compilers/yosys/default.nix @@ -71,13 +71,13 @@ let in stdenv.mkDerivation rec { pname = "yosys"; - version = "0.23"; + version = "0.24"; src = fetchFromGitHub { owner = "YosysHQ"; repo = "yosys"; rev = "${pname}-${version}"; - hash = "sha256-mOakdXhSij8k4Eo7RwpKjd59IkNjw31NNFDJtL6Adgo="; + hash = "sha256-rso08/b0ukrh6KYFpn4bFn0pP83URfeJGw28iLIjlPw="; }; enableParallelBuilding = true; diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix index 3cc287c50352c..1a1f40e3f9f61 100644 --- a/pkgs/development/interpreters/clojure/babashka.nix +++ b/pkgs/development/interpreters/clojure/babashka.nix @@ -2,11 +2,11 @@ buildGraalvmNativeImage rec { pname = "babashka"; - version = "1.0.167"; + version = "1.0.168"; src = fetchurl { url = "https://github.com/babashka/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar"; - sha256 = "sha256-tqhl2d0HZJNVP3EX2y5YiOmCgJsXegUUO91+f9MxQyU="; + sha256 = "sha256-K56SEfSq0mjltUwR2VZxGiGn9nnEdDBoZrkaBOIIl7k="; }; executable = "bb"; diff --git a/pkgs/development/libraries/boost/generic.nix b/pkgs/development/libraries/boost/generic.nix index bea3f007e6318..feb41bf62941a 100644 --- a/pkgs/development/libraries/boost/generic.nix +++ b/pkgs/development/libraries/boost/generic.nix @@ -13,6 +13,7 @@ , enableStatic ? !enableShared , enablePython ? false , enableNumpy ? false +, enableIcu ? stdenv.hostPlatform == stdenv.buildPlatform , taggedLayout ? ((enableRelease && enableDebug) || (enableSingleThreaded && enableMultiThreaded) || (enableShared && enableStatic)) , patches ? [] , boostBuildPatches ? [] @@ -226,7 +227,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ which boost-build ] ++ optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; buildInputs = [ expat zlib bzip2 libiconv ] - ++ optional (stdenv.hostPlatform == stdenv.buildPlatform) icu + ++ optional enableIcu icu ++ optionals enablePython [ libxcrypt python ] ++ optional enableNumpy python.pkgs.numpy; @@ -239,7 +240,7 @@ stdenv.mkDerivation { "--libdir=$(out)/lib" "--with-bjam=b2" # prevent bootstrapping b2 in configurePhase ] ++ optional (toolset != null) "--with-toolset=${toolset}" - ++ [ (if stdenv.hostPlatform == stdenv.buildPlatform then "--with-icu=${icu.dev}" else "--without-icu") ]; + ++ [ (if enableIcu then "--with-icu=${icu.dev}" else "--without-icu") ]; buildPhase = '' runHook preBuild diff --git a/pkgs/development/php-packages/xdebug/default.nix b/pkgs/development/php-packages/xdebug/default.nix index 388360462dcf6..cd90ea6f407e6 100644 --- a/pkgs/development/php-packages/xdebug/default.nix +++ b/pkgs/development/php-packages/xdebug/default.nix @@ -1,18 +1,10 @@ -{ buildPecl, lib, php }: +{ buildPecl, lib }: -let - versionData = if (lib.versionOlder php.version "8.1") then { - version = "3.1.6"; - sha256 = "1lnmrb5kgq8lbhjs48j3wwhqgk44pnqb1yjq4b5r6ysv9l5wlkjm"; - } else { - version = "3.2.0RC2"; - sha256 = "dQgXDP3Ifg+D0niWxaJ4ec71Vfr8KH40jv6QbxSyY+4="; - }; -in buildPecl { pname = "xdebug"; - inherit (versionData) version sha256; + version = "3.2.0"; + sha256 = "1drj00z8ididm2iw7a7pnrsvakrr1g0i49aqkyz5zpysxh7b4sbp"; doCheck = true; checkTarget = "test"; diff --git a/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix b/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix index 3a673c9c264bf..0c85bf8c05051 100644 --- a/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix +++ b/pkgs/development/python-modules/bluetooth-auto-recovery/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "bluetooth-auto-recovery"; - version = "0.5.4"; + version = "0.5.5"; format = "pyproject"; disabled = pythonOlder "3.9"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "Bluetooth-Devices"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-C3CO4nqKVTjD07QturJNeg0GLx2N9cbsBatXcehJLRs="; + hash = "sha256-f6HJlFqpmFhM9M1Cuvjz/63DXoikO33y/tmv57snI7g="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/configargparse/default.nix b/pkgs/development/python-modules/configargparse/default.nix index 7c1594e9e805d..4479d1f248559 100644 --- a/pkgs/development/python-modules/configargparse/default.nix +++ b/pkgs/development/python-modules/configargparse/default.nix @@ -3,12 +3,15 @@ , fetchFromGitHub , mock , pytestCheckHook +, pyyaml }: buildPythonPackage rec { pname = "configargparse"; version = "1.5.3"; + format = "setuptools"; + src = fetchFromGitHub { owner = "bw2"; repo = "ConfigArgParse"; @@ -19,6 +22,7 @@ buildPythonPackage rec { checkInputs = [ mock pytestCheckHook + pyyaml ]; pythonImportsCheck = [ "configargparse" ]; diff --git a/pkgs/development/python-modules/dbus-fast/default.nix b/pkgs/development/python-modules/dbus-fast/default.nix index b658eeefd77fd..2b5ab21c4eaca 100644 --- a/pkgs/development/python-modules/dbus-fast/default.nix +++ b/pkgs/development/python-modules/dbus-fast/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "dbus-fast"; - version = "1.75.0"; + version = "1.80.0"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "Bluetooth-Devices"; repo = pname; rev = "v${version}"; - hash = "sha256-bmHUfRytUGlS0X1PEQHFocMZ4+FslA2rvzqHNE+3B3E="; + hash = "sha256-TeOS4tfJmEQnbHkoRueyTmmIAw2De9w6gWjzD1hlwVI="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/dependency-injector/default.nix b/pkgs/development/python-modules/dependency-injector/default.nix index 628e189312556..98acaaba4094f 100644 --- a/pkgs/development/python-modules/dependency-injector/default.nix +++ b/pkgs/development/python-modules/dependency-injector/default.nix @@ -7,56 +7,75 @@ , httpx , mypy-boto3-s3 , numpy -, scipy , pydantic +, pytest-asyncio , pytestCheckHook +, pythonOlder , pyyaml +, scipy , six }: buildPythonPackage rec { pname = "dependency-injector"; - version = "4.35.3"; + version = "4.40.0"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "ets-labs"; repo = "python-dependency-injector"; rev = version; - sha256 = "sha256-2qe4A2T3EagNCh1zSbPWblVN7p9NH8rNwQQVyESJTdk="; + hash = "sha256-lcgPFdAgLmv7ILL2VVfqtGSw96aUfPv9oiOhksRtF3k="; }; propagatedBuildInputs = [ six ]; + passthru.optional-dependencies = { + aiohttp = [ + aiohttp + ]; + pydantic = [ + pydantic + ]; + flask = [ + flask + ]; + yaml = [ + pyyaml + ]; + }; + checkInputs = [ - aiohttp fastapi - flask httpx mypy-boto3-s3 numpy - pydantic - scipy + pytest-asyncio pytestCheckHook - pyyaml - ]; + scipy + ] ++ passthru.optional-dependencies.aiohttp + ++ passthru.optional-dependencies.pydantic + ++ passthru.optional-dependencies.yaml + ++ passthru.optional-dependencies.flask; - postPatch = '' - substituteInPlace requirements.txt \ - --replace "six>=1.7.0,<=1.15.0" "six" - ''; + pythonImportsCheck = [ + "dependency_injector" + ]; disabledTestPaths = [ - # There is no unique identifier to disable the one failing test + # Exclude tests for EOL Python releases "tests/unit/ext/test_aiohttp_py35.py" + "tests/unit/wiring/test_*_py36.py" ]; - pythonImportsCheck = [ "dependency_injector" ]; - meta = with lib; { description = "Dependency injection microframework for Python"; homepage = "https://github.com/ets-labs/python-dependency-injector"; + changelog = "https://github.com/ets-labs/python-dependency-injector/blob/${version}/docs/main/changelog.rst"; license = licenses.bsd3; maintainers = with maintainers; [ gerschtli ]; }; diff --git a/pkgs/development/python-modules/life360/default.nix b/pkgs/development/python-modules/life360/default.nix index 947d29762f3e3..64eb6499afb42 100644 --- a/pkgs/development/python-modules/life360/default.nix +++ b/pkgs/development/python-modules/life360/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "life360"; - version = "5.3.0"; + version = "5.4.0"; format = "setuptools"; disabled = pythonOlder "3.8"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "pnbruckner"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-GacesPWPTuIIZel4OARWW13OYflYFNf4Jxh9I8ms7s0="; + hash = "sha256-AY3TW6gpKST2uxxpmtlLz+qP18yJHyOk6XdA5yGJBEg="; }; propagatedBuildInputs = [ @@ -34,6 +34,7 @@ buildPythonPackage rec { meta = with lib; { description = "Python module to interact with Life360"; homepage = "https://github.com/pnbruckner/life360"; + changelog = "https://github.com/pnbruckner/life360/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/lmdb/default.nix b/pkgs/development/python-modules/lmdb/default.nix index 8efc1e3fb12ca..eb74bbb11d002 100644 --- a/pkgs/development/python-modules/lmdb/default.nix +++ b/pkgs/development/python-modules/lmdb/default.nix @@ -4,26 +4,36 @@ , pytestCheckHook , cffi , lmdb +, pythonOlder }: buildPythonPackage rec { pname = "lmdb"; - version = "1.3.0"; + version = "1.4.0"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - sha256 = "60a11efc21aaf009d06518996360eed346f6000bfc9de05114374230879f992e"; + hash = "sha256-OfbE7hRdKNFwJdNQcgq7b5XbgWUU6GjbV0RP3vUcu0c="; }; - buildInputs = [ lmdb ]; + buildInputs = [ + lmdb + ]; - checkInputs = [ cffi pytestCheckHook ]; + checkInputs = [ + cffi + pytestCheckHook + ]; LMDB_FORCE_SYSTEM=1; meta = with lib; { description = "Universal Python binding for the LMDB 'Lightning' Database"; homepage = "https://github.com/dw/py-lmdb"; + changelog = "https://github.com/jnwatson/py-lmdb/blob/py-lmdb_${version}/ChangeLog"; license = licenses.openldap; maintainers = with maintainers; [ copumpkin ivan ]; }; diff --git a/pkgs/development/python-modules/mkdocstrings-python/default.nix b/pkgs/development/python-modules/mkdocstrings-python/default.nix index d944a987aa421..8d05efbca088f 100644 --- a/pkgs/development/python-modules/mkdocstrings-python/default.nix +++ b/pkgs/development/python-modules/mkdocstrings-python/default.nix @@ -11,7 +11,7 @@ buildPythonPackage rec { pname = "mkdocstrings-python"; - version = "0.8.0"; + version = "0.8.2"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -20,7 +20,7 @@ buildPythonPackage rec { owner = "mkdocstrings"; repo = "python"; rev = version; - hash = "sha256-KAVBK0ZR1R27cWH99DVOYNFWKa4ubBXzgM0hVpGRIpE="; + hash = "sha256-TwvXH/n2do4GnkxStW8fk9MRm59t/eP0sOjGnl3fYkw="; }; nativeBuildInputs = [ @@ -50,6 +50,7 @@ buildPythonPackage rec { meta = with lib; { description = "Python handler for mkdocstrings"; homepage = "https://github.com/mkdocstrings/python"; + changelog = "https://github.com/mkdocstrings/python/blob/${version}/CHANGELOG.md"; license = licenses.isc; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/msgspec/default.nix b/pkgs/development/python-modules/msgspec/default.nix index 6ec4772611f89..d11338a0f0708 100644 --- a/pkgs/development/python-modules/msgspec/default.nix +++ b/pkgs/development/python-modules/msgspec/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "msgspec"; - version = "0.9.1"; + version = "0.10.1"; format = "setuptools"; disabled = pythonOlder "3.8"; @@ -16,8 +16,8 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "jcrist"; repo = pname; - rev = version; - hash = "sha256-q7WNVnkvK7MTleHEuClOFJ0Wv6EWu/3ztMi6TYdKgKU="; + rev = "refs/tags/${version}"; + hash = "sha256-/tu29RIszjzYQKeyYe+8Zkud3L/HBoWdXdpNcilWERs="; }; # Requires libasan to be accessible @@ -30,6 +30,7 @@ buildPythonPackage rec { meta = with lib; { description = "Module to handle JSON/MessagePack"; homepage = "https://github.com/jcrist/msgspec"; + changelog = "https://github.com/jcrist/msgspec/releases/tag/${version}"; license = licenses.bsd3; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/patiencediff/default.nix b/pkgs/development/python-modules/patiencediff/default.nix index 295df5aab39ca..1a77aa0ca1693 100644 --- a/pkgs/development/python-modules/patiencediff/default.nix +++ b/pkgs/development/python-modules/patiencediff/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "patiencediff"; - version = "0.2.9"; + version = "0.2.10"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "breezy-team"; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-DvbOA/NXHTuE84zWicOUtAKgGHUmKrAWgeFW1+uA8JY="; + hash = "sha256-AlJ61Sp6HSy6nJ6trVF2OD9ziSIW241peRXcda3xWnQ="; }; nativeBuildInputs = [ @@ -35,6 +35,7 @@ buildPythonPackage rec { meta = with lib; { description = "C implementation of patiencediff algorithm for Python"; homepage = "https://github.com/breezy-team/patiencediff"; + changelog = "https://github.com/breezy-team/patiencediff/releases/tag/v${version}"; license = licenses.gpl2Plus; maintainers = with maintainers; [ wildsebastian ]; }; diff --git a/pkgs/development/python-modules/pylitterbot/default.nix b/pkgs/development/python-modules/pylitterbot/default.nix index 169784039c6c8..704c2526328b2 100644 --- a/pkgs/development/python-modules/pylitterbot/default.nix +++ b/pkgs/development/python-modules/pylitterbot/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "pylitterbot"; - version = "2022.11.0"; + version = "2022.12.0"; format = "pyproject"; disabled = pythonOlder "3.9"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "natekspencer"; repo = pname; rev = "refs/tags/${version}"; - hash = "sha256-GEKLkFzQV8xI3c8061fO1p66WKj3eDXmx7VaRYDu7kw="; + hash = "sha256-uqiSNqM1HKNAipIKKsUHv9mPfdk01ZrNWMXIzhgxxjU="; }; nativeBuildInputs = [ @@ -56,6 +56,7 @@ buildPythonPackage rec { meta = with lib; { description = "Modulefor controlling a Litter-Robot"; homepage = "https://github.com/natekspencer/pylitterbot"; + changelog = "https://github.com/natekspencer/pylitterbot/releases/tag/${version}"; license = with licenses; [ mit ]; maintainers = with maintainers; [ fab ]; }; diff --git a/pkgs/development/python-modules/pynamodb/default.nix b/pkgs/development/python-modules/pynamodb/default.nix index 9348a4f8f373d..5c9cfa2a4e808 100644 --- a/pkgs/development/python-modules/pynamodb/default.nix +++ b/pkgs/development/python-modules/pynamodb/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "pynamodb"; - version = "5.3.3"; + version = "5.3.4"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "pynamodb"; repo = "PynamoDB"; rev = "refs/tags/${version}"; - hash = "sha256-j21CCPTRj7c7vClujHYEkmH31B48gDFYQbBXoChNSaI="; + hash = "sha256-qg/aFK7rt2a/ZcLm+VSlq8UYBh6zS0/VVLqRAN7kLus="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/pysmart/default.nix b/pkgs/development/python-modules/pysmart/default.nix index 3bd5fa50a1339..5c576e4895ffe 100644 --- a/pkgs/development/python-modules/pysmart/default.nix +++ b/pkgs/development/python-modules/pysmart/default.nix @@ -4,17 +4,21 @@ , smartmontools , humanfriendly , pytestCheckHook +, pythonOlder }: buildPythonPackage rec { pname = "pysmart"; - version = "1.1.0"; + version = "1.2.1"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "truenas"; repo = "py-SMART"; - rev = "v${version}"; - sha256 = "sha256-e46ALiYg0Db/gOzqLmVc1vi9ObhfxzqwfQk9/9pz+r0="; + rev = "refs/tags/v${version}"; + hash = "sha256-slLk4zoW0ht9hiOxyBt0caekjrPgih9G99pRiD2vIxE="; }; postPatch = '' @@ -22,16 +26,23 @@ buildPythonPackage rec { --replace "which('smartctl')" '"${smartmontools}/bin/smartctl"' ''; - propagatedBuildInputs = [ humanfriendly ]; + propagatedBuildInputs = [ + humanfriendly + ]; - checkInputs = [ pytestCheckHook ]; + checkInputs = [ + pytestCheckHook + ]; - pythonImportsCheck = [ "pySMART" ]; + pythonImportsCheck = [ + "pySMART" + ]; meta = with lib; { description = "Wrapper for smartctl (smartmontools)"; homepage = "https://github.com/truenas/py-SMART"; - maintainers = with maintainers; [ nyanloutre ]; + changelog = "https://github.com/truenas/py-SMART/blob/v${version}/CHANGELOG.md"; license = licenses.lgpl21Only; + maintainers = with maintainers; [ nyanloutre ]; }; } diff --git a/pkgs/development/python-modules/sacn/default.nix b/pkgs/development/python-modules/sacn/default.nix index ff432f6f3a007..4ba86bd68aef4 100644 --- a/pkgs/development/python-modules/sacn/default.nix +++ b/pkgs/development/python-modules/sacn/default.nix @@ -1,27 +1,32 @@ { lib , buildPythonPackage , fetchPypi -, isPy27 +, pythonOlder }: buildPythonPackage rec { pname = "sacn"; - version = "1.8.1"; - disabled = isPy27; + version = "1.9.0"; + format = "setuptools"; + + disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - sha256 = "cdc9af732f4ca5badbf732499775575c4f815c73f857720c0a61a3fc80257f7a"; + hash = "sha256-LimA0I8y1tdjFk244iWvKJj0Rx3OEaYOSIJtirRHh4o="; }; # no tests doCheck = false; - pythonImportsCheck = [ "sacn" ]; + pythonImportsCheck = [ + "sacn" + ]; meta = with lib; { - description = "A simple ANSI E1.31 (aka sACN) module for python"; + description = "A simple ANSI E1.31 (aka sACN) module"; homepage = "https://github.com/Hundemeier/sacn"; + changelog = "https://github.com/Hundemeier/sacn/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ hexa ]; }; diff --git a/pkgs/development/python-modules/simber/default.nix b/pkgs/development/python-modules/simber/default.nix index 68e9638c350a1..66aaf43a98e55 100644 --- a/pkgs/development/python-modules/simber/default.nix +++ b/pkgs/development/python-modules/simber/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "simber"; - version = "0.2.4"; + version = "0.2.5"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -16,8 +16,8 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "deepjyoti30"; repo = pname; - rev = version; - hash = "sha256-P4bhxu9Di4E2Zkd0vIkyDi1S6Y0V/EQSMF4ftWoiXKE="; + rev = "refs/tags/${version}"; + hash = "sha256-d9YhqYmRyoYb03GqYKM7HkK8cnTQKPbSP6z2aanB6pQ="; }; propagatedBuildInputs = [ @@ -35,6 +35,7 @@ buildPythonPackage rec { meta = with lib; { description = "Simple, minimal and powerful logger for Python"; homepage = "https://github.com/deepjyoti30/simber"; + changelog = "https://github.com/deepjyoti30/simber/releases/tag/${version}"; license = licenses.mit; maintainers = with maintainers; [ j0hax ]; }; diff --git a/pkgs/development/python-modules/wurlitzer/default.nix b/pkgs/development/python-modules/wurlitzer/default.nix index 395f3ad5b1078..cf5f514df1147 100644 --- a/pkgs/development/python-modules/wurlitzer/default.nix +++ b/pkgs/development/python-modules/wurlitzer/default.nix @@ -1,32 +1,39 @@ { lib , buildPythonPackage , fetchPypi -, isPy27 -, mock -, pytest -, selectors2 +, pythonOlder +, pytestCheckHook }: buildPythonPackage rec { pname = "wurlitzer"; - version = "3.0.2"; + version = "3.0.3"; + format = "setuptools"; + + disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; - sha256 = "36051ac530ddb461a86b6227c4b09d95f30a1d1043de2b4a592e97ae8a84fcdf"; + hash = "sha256-Ik9f5wYYvjhywF393IxFcZHsGHBlRZYnn8we2t6+Pls="; }; - propagatedBuildInputs = lib.optionals isPy27 [ selectors2 ]; + checkInputs = [ + pytestCheckHook + ]; - checkInputs = [ mock pytest ]; + pythonImportsCheck = [ + "wurlitzer" + ]; - checkPhase = '' - py.test test.py - ''; + pytestFlagsArray = [ + "test.py" + ]; - meta = { + meta = with lib; { description = "Capture C-level output in context managers"; homepage = "https://github.com/minrk/wurlitzer"; - license = lib.licenses.mit; + changelog = "https://github.com/minrk/wurlitzer/blob/{version}/CHANGELOG.md"; + license = licenses.mit; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/development/tools/build-managers/mill/default.nix b/pkgs/development/tools/build-managers/mill/default.nix index 3a61faa42c158..966937deffa82 100644 --- a/pkgs/development/tools/build-managers/mill/default.nix +++ b/pkgs/development/tools/build-managers/mill/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "mill"; - version = "0.10.9"; + version = "0.10.10"; src = fetchurl { url = "https://github.com/com-lihaoyi/mill/releases/download/${version}/${version}-assembly"; - hash = "sha256-XDy07dFzylRl825QYqRt5eydVPR4jEevC2VrqxgTFt0="; + hash = "sha256-Qen3z2qbgyHHYUscBh7Udc1/c82WDLnDIsZJF+tcR5M="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/development/tools/clj-kondo/default.nix b/pkgs/development/tools/clj-kondo/default.nix index ea3d7669544dc..89c08d3100da8 100644 --- a/pkgs/development/tools/clj-kondo/default.nix +++ b/pkgs/development/tools/clj-kondo/default.nix @@ -2,11 +2,11 @@ buildGraalvmNativeImage rec { pname = "clj-kondo"; - version = "2022.11.02"; + version = "2022.12.08"; src = fetchurl { url = "https://github.com/clj-kondo/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar"; - sha256 = "sha256-FLnij5ff7+tP+SoBnB2zVEpuWRG2MYp9avTrh2q6g4k="; + sha256 = "sha256-9BFu9vD+DrMW/25do5jWhBU1Dog7XaiWhBxFIBgR6io="; }; extraNativeImageBuildArgs = [ diff --git a/pkgs/development/tools/misc/grpc-client-cli/default.nix b/pkgs/development/tools/misc/grpc-client-cli/default.nix index 15d9dc6fdcaa4..b569b9ff9f6c5 100644 --- a/pkgs/development/tools/misc/grpc-client-cli/default.nix +++ b/pkgs/development/tools/misc/grpc-client-cli/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "grpc-client-cli"; - version = "1.15.0"; + version = "1.16.0"; src = fetchFromGitHub { owner = "vadimi"; repo = "grpc-client-cli"; rev = "v${version}"; - sha256 = "sha256-MZEsThE0cajIJXvsuefNjQMAmnATNCWYBVVJQnd+q6c="; + sha256 = "sha256-tvpLsiZvGneabAoTewIEnCh+0lzbr7DNepjXGg7azLc="; }; - vendorSha256 = "sha256-4rU2r0hOR+XCZubLZCNnqoJ1br/WNtb70HN5urat5jQ="; + vendorSha256 = "sha256-NFVDDOejclWA2WQr7CHX1CUNu+Lh5jukroSrkxby8Ag="; meta = with lib; { description = "generic gRPC command line client"; diff --git a/pkgs/development/tools/misc/sccache/default.nix b/pkgs/development/tools/misc/sccache/default.nix index 9879768086acc..2ad51f093fcd8 100644 --- a/pkgs/development/tools/misc/sccache/default.nix +++ b/pkgs/development/tools/misc/sccache/default.nix @@ -1,17 +1,17 @@ -{ stdenv, lib, fetchFromGitHub, rustPlatform, pkg-config, openssl, Security }: +{ lib, fetchFromGitHub, rustPlatform, pkg-config, openssl, stdenv, Security }: rustPlatform.buildRustPackage rec { - version = "0.3.1"; + version = "0.3.3"; pname = "sccache"; src = fetchFromGitHub { owner = "mozilla"; repo = "sccache"; rev = "v${version}"; - sha256 = "sha256-SjGtFkFyHJRnFg3QwXksrV+T08oku80vcivLzFWt94g="; + sha256 = "sha256-XzAU8Rs0/Q1KvE2tF0zzv9d2/a07BzZQbVzOdrPlbSk="; }; - cargoSha256 = "sha256-cd/4otvrneOqntBzNZP1/RY0jg/NYeugiblr1tatITI="; + cargoSha256 = "sha256-r5rIuulcPB5Y4AkbUPswf3W4DZ9Pc8auzmDDvSOOZEA="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin Security; @@ -26,7 +26,8 @@ rustPlatform.buildRustPackage rec { meta = with lib; { description = "Ccache with Cloud Storage"; homepage = "https://github.com/mozilla/sccache"; - maintainers = with maintainers; [ doronbehar ]; + changelog = "https://github.com/mozilla/sccache/releases/tag/v${version}"; + maintainers = with maintainers; [ doronbehar figsoda ]; license = licenses.asl20; }; } diff --git a/pkgs/development/tools/renderdoc/default.nix b/pkgs/development/tools/renderdoc/default.nix index 938f596beae4c..6a225b9b47aa1 100644 --- a/pkgs/development/tools/renderdoc/default.nix +++ b/pkgs/development/tools/renderdoc/default.nix @@ -32,13 +32,13 @@ let in mkDerivation rec { pname = "renderdoc"; - version = "1.22"; + version = "1.24"; src = fetchFromGitHub { owner = "baldurk"; repo = "renderdoc"; rev = "v${version}"; - sha256 = "sha256-eqMIOb9XAgXtoCJABvZkkS/rhHK7jNqabIFwdCgcSJU="; + sha256 = "sha256-owFNk+UMKBkrad45zcSHTUidmRVIIGRZ06Ll84ZfEfA="; }; buildInputs = [ diff --git a/pkgs/development/tools/ruff/default.nix b/pkgs/development/tools/ruff/default.nix index 6bff31436ac9f..6fb47035f0a86 100644 --- a/pkgs/development/tools/ruff/default.nix +++ b/pkgs/development/tools/ruff/default.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage rec { pname = "ruff"; - version = "0.0.169"; + version = "0.0.171"; src = fetchFromGitHub { owner = "charliermarsh"; repo = pname; rev = "v${version}"; - sha256 = "sha256-YPVI1SaaLSqrpTu/uFTSyWbPVSDeADNVv2OfgR9K4qI="; + sha256 = "sha256-2aqpQo7U17wqQ/YUMreOOKkcVWiKHAdFAUL/6HP6zN8="; }; - cargoSha256 = "sha256-bP6gn/UIv1reytd8atNdoXZxsFFJCt+axl3UiCayERo="; + cargoSha256 = "sha256-N/WoPc2BxujqE/OSp9RWS7dBHGKxIixtBqwDwR3p6TM="; buildInputs = lib.optionals stdenv.isDarwin [ CoreServices diff --git a/pkgs/games/scummvm/default.nix b/pkgs/games/scummvm/default.nix index 8de6206ecd088..9b989ac70e059 100644 --- a/pkgs/games/scummvm/default.nix +++ b/pkgs/games/scummvm/default.nix @@ -36,7 +36,9 @@ stdenv.mkDerivation rec { postConfigure = '' sed -i "s/-c -s/-c -s --strip-program=''${STRIP@Q}/" ports.mk '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace config.mk --replace x86_64-apple-darwin-ranlib ${cctools}/bin/ranlib + substituteInPlace config.mk \ + --replace x86_64-apple-darwin-ranlib ${cctools}/bin/ranlib \ + --replace aarch64-apple-darwin-ranlib ${cctools}/bin/ranlib ''; meta = with lib; { diff --git a/pkgs/os-specific/linux/psmisc/default.nix b/pkgs/os-specific/linux/psmisc/default.nix index e2f0fe59a075c..092c75a5837d7 100644 --- a/pkgs/os-specific/linux/psmisc/default.nix +++ b/pkgs/os-specific/linux/psmisc/default.nix @@ -1,4 +1,4 @@ -{lib, stdenv, fetchFromGitLab, autoconf, automake, gettext, ncurses}: +{lib, stdenv, fetchFromGitLab, fetchpatch, autoconf, automake, gettext, ncurses}: stdenv.mkDerivation rec { pname = "psmisc"; @@ -11,6 +11,16 @@ stdenv.mkDerivation rec { sha256 = "sha256-02jvRPqN8DS30ID42hQFu400NoFC5QiH5YA3NB+EoFI="; }; + patches = [ + # Upstream patch to be released in the next version + (fetchpatch { + name = "fallback-to-kill.diff"; + url = "https://gitlab.com/psmisc/psmisc/-/commit/6892e321e7042e3df60a5501a1c59d076e8a856f.patch"; + sha256 = "sha256-3uk1KXEOqAxpHWBORUw5+dR5s/Z55JJs5tuBZlTdjlo="; + excludes = [ "ChangeLog" ]; + }) + ]; + nativeBuildInputs = [ autoconf automake gettext ]; buildInputs = [ ncurses ]; diff --git a/pkgs/servers/adguardhome/bins.nix b/pkgs/servers/adguardhome/bins.nix index 101a37bd24153..d2c6b334eab01 100644 --- a/pkgs/servers/adguardhome/bins.nix +++ b/pkgs/servers/adguardhome/bins.nix @@ -1,23 +1,23 @@ { fetchurl, fetchzip }: { x86_64-darwin = fetchzip { - sha256 = "sha256-R9Ggjl9Qw1F2n2U7uGcLqgjwrLoUjlO8KUsI4sQf/JU="; - url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.19/AdGuardHome_darwin_amd64.zip"; + sha256 = "sha256-pCyMhfDl371zzc3oXo+n09qNcxMtDQEqaqVW+YIrx28="; + url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.20/AdGuardHome_darwin_amd64.zip"; }; aarch64-darwin = fetchzip { - sha256 = "sha256-MStBeDsqHK+m91DBTIAzaleIL0GNhqdslIvPOmtOaDQ="; - url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.19/AdGuardHome_darwin_arm64.zip"; + sha256 = "sha256-O2UTzaWaYTkeR3z/O8U/Btigjp/8gns4Y/D9yoX2Hns="; + url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.20/AdGuardHome_darwin_arm64.zip"; }; i686-linux = fetchurl { - sha256 = "sha256-bkUSxifnSfDZk2kmp23n6KBlqa70CrBIKuCF+EEHTwk="; - url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.19/AdGuardHome_linux_386.tar.gz"; + sha256 = "sha256-ao/uebGho3CafFEcCfcS+awsC9lO/6z1UL57Yvr/q14="; + url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.20/AdGuardHome_linux_386.tar.gz"; }; x86_64-linux = fetchurl { - sha256 = "sha256-dHj91ZYhHTA8XoZ8oUhDQzu6Fpg0n/CBqDZux0QnwXI="; - url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.19/AdGuardHome_linux_amd64.tar.gz"; + sha256 = "sha256-KJIogRRlZFPy3jBb9JeEA7xgZkl9/97cA13rBK6/1fI="; + url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.20/AdGuardHome_linux_amd64.tar.gz"; }; aarch64-linux = fetchurl { - sha256 = "sha256-f5nXnLkL6yvkE9kUnHdsD+MQhUjbkQGmVj7Nr/znBrw="; - url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.19/AdGuardHome_linux_arm64.tar.gz"; + sha256 = "sha256-r8gqUa9dULAYPUB64X4aqyaNf0CpckUNIsWl+VylhaM="; + url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.20/AdGuardHome_linux_arm64.tar.gz"; }; } diff --git a/pkgs/servers/adguardhome/default.nix b/pkgs/servers/adguardhome/default.nix index 9b9df3072d548..99c7e9688f35c 100644 --- a/pkgs/servers/adguardhome/default.nix +++ b/pkgs/servers/adguardhome/default.nix @@ -7,7 +7,7 @@ in stdenv.mkDerivation rec { pname = "adguardhome"; - version = "0.107.19"; + version = "0.107.20"; src = sources.${system} or (throw "Source for ${pname} is not available for ${system}"); installPhase = '' diff --git a/pkgs/servers/nosql/victoriametrics/default.nix b/pkgs/servers/nosql/victoriametrics/default.nix index c289cf1578967..8c39c1da1275b 100644 --- a/pkgs/servers/nosql/victoriametrics/default.nix +++ b/pkgs/servers/nosql/victoriametrics/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "VictoriaMetrics"; - version = "1.83.1"; + version = "1.84.0"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "sha256-SfLqvVExP7qc2IDW6sJ0ykVRzL79FRv6zEVXivLpaVk="; + sha256 = "sha256-94QhjsCow1Ate/Bbia7KpWY3WgHk3oOarAY95Fq75hU="; }; vendorSha256 = null; diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix index 4fb04e73d9e5e..7a9b390d014ef 100644 --- a/pkgs/servers/web-apps/discourse/default.nix +++ b/pkgs/servers/web-apps/discourse/default.nix @@ -11,13 +11,13 @@ }@args: let - version = "2.9.0.beta12"; + version = "2.9.0.beta14"; src = fetchFromGitHub { owner = "discourse"; repo = "discourse"; rev = "v${version}"; - sha256 = "sha256-gL3/+m8SyyOSdcQ0jXo/qEWm0rAvHrmKM3pm5Lm4354="; + sha256 = "sha256-rdH6tALfhZyCGq1dtOQyuRlEYHSmWgvSz2qG6jrwPu0="; }; runtimeDeps = [ @@ -165,7 +165,7 @@ let yarnOfflineCache = fetchYarnDeps { yarnLock = src + "/app/assets/javascripts/yarn.lock"; - sha256 = "17va1k5r3v0hxpznm7qgmy8c0vicvyk28bn6cr5hqhjn3krzwf8b"; + sha256 = "1rj8bbhmrnnhaiqw2bik8dilk7g35yhis5p7yww57zy4k5ghjvlw"; }; nativeBuildInputs = runtimeDeps ++ [ diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix index 11faf4b2aeb76..4903be6b65211 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-assign"; - rev = "1f2dfafcdebc153573e2e1a5bf32d7f63295b29a"; - sha256 = "sha256-VggOirmGIl3ihegmblgqaP3dAVX66O1O5s9vgP2peH8="; + rev = "889df32cc61792ed7b1981a08f0b0e9c46da2a56"; + sha256 = "sha256-ggMmIzjb4CBNAJTf8E09iaN5AGPj+BDzRf2y3h4DCMc="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-docs"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock index 00b312b19601d..b5284f49fa85c 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock @@ -22,4 +22,4 @@ DEPENDENCIES rrule (= 0.4.4) BUNDLED WITH - 2.3.24 + 2.3.25 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix index 1a16ee81cd3f9..b757603142101 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix @@ -6,8 +6,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-calendar"; - rev = "7adaec219f0c387bda7b474d66b3706c78c9be5a"; - sha256 = "sha256-Uv+V8PVYlO80e6nCjOVF0J9XEUegemCc7kcwHWpbh2w="; + rev = "f4f16d958e5cec5fab109d09a7bfb50fc2b8da12"; + sha256 = "sha256-TWIWHOVeq3IKjinycaoiVccFKaP4UbNUpZ5n/SQ6afA="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-calendar"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix index 529a41a0c0872..091979831eac6 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-canned-replies"; - rev = "ac2a315a0433d408cce7fdc5419beae865c4b655"; - sha256 = "sha256-ARVV5fsrY6WV67975wPb4pU8Fjsm+Q+n2xuCcrgpfTI="; + rev = "fe92bc1324fe0d2519f0e33b3fd89a4bed21b2e9"; + sha256 = "sha256-m+DDS93XJAN9RqX8pXeA78gY+p+7A2ey1oblGpcB4L0="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-canned-replies"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix index 62c71b0da279c..dd4733f5186c5 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-chat-integration"; - rev = "01a37669114909b3ead34a1846a97713b3051dc7"; - sha256 = "sha256-Y/SGLz3LPWfILwfFiO3Ag9JQMUOf0/RvWm5/Lk/cOsk="; + rev = "f6dde41cba2722970cc1a49f47636174a6ec7797"; + sha256 = "sha256-Cn+Ti1DYcFRqunEEFjGJuhnICO+53IX7tF7U8MkzJX0="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-chat-integration"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix index 41bd34fe2d858..8cf1c3e662a69 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-checklist"; - rev = "1954ec2b106586cbb72db2eb7b1fc9251c799e72"; - sha256 = "sha256-dVRRnwTY+2tn5JNkn09iuoMBCE0NQdwDJIECzfqfm58="; + rev = "c97060bd9dc1287d258cac6b7222a9a61d4f97c7"; + sha256 = "sha256-fVGTYz/2PK5rq/7SE/hkQoWYiIzOcmZ9AHNe5f+osxY="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-checklist"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix index e955222132b53..6e7da0de992fc 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-data-explorer"; - rev = "41a5e0a27a06225c401cbbaa24f0f712f7bd7cf7"; - sha256 = "sha256-m1EvNepl9JLoEeUaDXTBHz4G+DDCpdPNgAz+/Lcqn1Q="; + rev = "467b6c8a91a08ca71080b9bbff2e0cd45dc4efe5"; + sha256 = "sha256-65Osh9oud/Gfy6dVJ4QXqT+A0wdIN33BeaCUIfyWEGA="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-data-explorer"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix index ba603f23c3104..eebe6101a9085 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-docs"; - rev = "f1dd03f0bc283b86b6028b76ae0841a2a7f9c2a8"; - sha256 = "sha256-Mp1nrmMa0IUE5avR+Q72eIqM7Erb2xid4PYRJWXrUhw="; + rev = "908d9096a81e1d706da231558f9a0547357fe73a"; + sha256 = "sha256-77MTXMTjuwG1qIhYwUlNBNA39p/eyPF2+IHFpUiG8uo="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-docs"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock index 1c6bed3a0bb18..0aba4fb103cab 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock @@ -3,7 +3,7 @@ GEM specs: addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) - faraday (2.6.0) + faraday (2.7.1) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) @@ -24,4 +24,4 @@ DEPENDENCIES sawyer (= 0.9.2) BUNDLED WITH - 2.3.24 + 2.3.25 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix index 1e582b652e8c7..cf0e425cbdea8 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix @@ -6,8 +6,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-github"; - rev = "b064d4915ad11d768b11b61de0102b573cea5521"; - sha256 = "sha256-Nf6X6pQYnjkxbwsT1A6Rhf0lUNZS8N10X1XoSa33PEU="; + rev = "873cb13a0dcb3e70360adb86a2e293f377536626"; + sha256 = "sha256-r3+RXVb0k2UFiMeBQ998Obw7GQg1/uyUzpxFP9g5yXs="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-github"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix index 6567b55721b99..fae128695754d 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix @@ -16,10 +16,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mqv17hfmph4ylmb2bqyccy64gsgpmzapq5yrmf5yjsqkvw9rxbv"; + sha256 = "1wyz9ab0mzi84gpf81fs19vrixglmmxi25k6n1mn9h141qmsp590"; type = "gem"; }; - version = "2.6.0"; + version = "2.7.1"; }; faraday-net_http = { groups = ["default"]; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix index 416e3aaa374e0..98f89d0f241e1 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-math"; - rev = "b5d2a8a3ea302e0d8d43e1fcba5aa455e792475f"; - sha256 = "sha256-VzvPX8u1ABhzgdsH+ytaCdEkge6dvMfDZ9EyCxfU25o="; + rev = "45563f691aafcd0d76f07db9c105d42f3e3d5ba0"; + sha256 = "sha256-s2mzV1YdUG9vjw1LKm+jZriQfWYN5Jn232z3Cc7NFeg="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-math"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix index cb915c44cd608..3ce7519dc525a 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix @@ -6,8 +6,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-openid-connect"; - rev = "61137588c59fb325d9c46db4b643acbaf113eb84"; - sha256 = "sha256-w8/CxzFp+EUh3Kn65OO1BVNQdqPETdSq2WBvz5DoPQE="; + rev = "43a30dde4a64a01250f4447e74806db65ee7ae1a"; + sha256 = "sha256-/3AE5cDELKfKwEY+XqaZ6SzJp6XAnW83r67kzLGaV2M="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-openid-connect"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock index 9f0afd0a902be..0f46eaf43f2ad 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock @@ -10,4 +10,4 @@ DEPENDENCIES prometheus_exporter (= 0.5.0) BUNDLED WITH - 2.3.24 + 2.3.25 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix index 3934878d876ea..13127cf3d3e95 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix @@ -6,8 +6,8 @@ src = fetchFromGitHub { owner = "discourse"; repo = "discourse-prometheus"; - rev = "78ea9363b34e5fc56ac42f120cf1ea44ba99da9b"; - sha256 = "sha256-LeveJKNocK5Fm8JxIWp5dyspNrlE+117fmzq+HcGnLA="; + rev = "72fff206ba18ad5ca3112fed2f5f0ce6a17ca6f8"; + sha256 = "sha256-lSZZTcoWeFJTXnHLgry5ezYGmCBuMFJ96dtkOQKKRJc="; }; patches = [ diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix index e8b383dad2bc2..3108d617ceb90 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-saved-searches"; - rev = "92a137a164dcfce75c854b7dc44a034595bec4f0"; - sha256 = "sha256-DXmmQrgsEXvVHu/CnzfaECdJyNVm1CBpQXcEDlm27kI="; + rev = "be97918d0bbac81b98ab96773d5c8c01313ac0c2"; + sha256 = "sha256-2HTFfaJkLXuuMDa3m7Ppkh9v4BnLfKXyWiRN4c+xaNI="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-saved-searches"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix index 47331c3088fa6..11a8789ca2ea9 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-solved"; - rev = "f3b7fbb914cb0b7714d0ad7f26f21aaf1ba14f73"; - sha256 = "sha256-T7RHSk0ZP72E1hBoLwNLXX6rVOdy4JWQfj3aehbX1RM="; + rev = "a078219a9785f995a0a41c64b97bb0f2930a3ba1"; + sha256 = "sha256-P3rWEgPoMtzapSqARMFe5/IGT/QtTUFx8LB1kf6vBiU="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-solved"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix index 49634345f5454..19838e88a8f0a 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-spoiler-alert"; - rev = "47d95b547269cb7e34c282fc1ccc1d240892edf2"; - sha256 = "sha256-vrVkLmda28p5ynS0+x/2U3Hu1lS1cPIHwunA1YGZr4o="; + rev = "a7727a1c6b6f921365e1cee802e0c16512bbf8ee"; + sha256 = "sha256-60Sg8C7a4vXq/IApcskL0hgceoIHhWqACphcgfrbNig="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-spoiler-alert"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix index 49b1fb67c873f..e5e3d8f2b9779 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-voting"; - rev = "bdcff78521dccce100906663e65eb5b6e103f99a"; - sha256 = "sha256-J8jXBMcEZ8XUEqZtIg01Mi8JrLqls+ou+AQ1TORXMqU="; + rev = "1ecf494a789235d7ceaf2c8f6cad49176347e6b6"; + sha256 = "sha256-6UX7VGuZ+AT44ExfZNFWxFwgEx9zBJ3fQbO1vgCa5bE="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-voting"; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix index 5343b1188201f..bfdb7f6739f34 100644 --- a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix @@ -5,8 +5,8 @@ mkDiscoursePlugin { src = fetchFromGitHub { owner = "discourse"; repo = "discourse-yearly-review"; - rev = "80003d8ee4f4e23b277f261edc68a71145f6086e"; - sha256 = "sha256-bjhO7MiA9QOKh6gBcttBgla+wsznuG1SAIZlPZGmZaA="; + rev = "0f24d14d2dc861e404cb28f63832b93ed41b44eb"; + sha256 = "sha256-7cstjcuZ6OUn7u85UEp/B4pycepEK8CHg4W/O4ePoQg="; }; meta = with lib; { homepage = "https://github.com/discourse/discourse-yearly-review"; diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile index daf68be0cba66..b35e4805cc496 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile +++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile @@ -63,15 +63,8 @@ gem 'active_model_serializers', '~> 0.8.3' gem 'http_accept_language', require: false -# Ember related gems need to be pinned cause they control client side -# behavior, we will push these versions up when upgrading ember -gem 'discourse-ember-rails', '0.18.6', require: 'ember-rails' -gem 'discourse-ember-source', '~> 3.12.2' -gem 'ember-handlebars-template', '0.8.0' gem 'discourse-fonts', require: 'discourse_fonts' -gem 'barber' - gem 'message_bus' gem 'rails_multisite' @@ -261,6 +254,8 @@ if ENV["IMPORT"] == "1" gem 'reverse_markdown' gem 'tiny_tds' gem 'csv' + + gem 'parallel', require: false end gem 'webpush', require: false diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock index 56ef8ebcea1e7..b4024ed108c14 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock +++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock @@ -73,19 +73,16 @@ GEM aws-sigv4 (~> 1.1) aws-sigv4 (1.5.0) aws-eventstream (~> 1, >= 1.0.2) - barber (0.12.2) - ember-source (>= 1.0, < 3.1) - execjs (>= 1.2, < 3) better_errors (2.9.1) coderay (>= 1.0.0) erubi (>= 1.0.0) rack (>= 0.9.0) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) - bootsnap (1.13.0) + bootsnap (1.15.0) msgpack (~> 1.2) builder (3.2.4) - bullet (7.0.3) + bullet (7.0.4) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) byebug (11.1.3) @@ -119,14 +116,6 @@ GEM diff-lcs (1.5.0) diffy (3.4.2) digest (3.1.0) - discourse-ember-rails (0.18.6) - active_model_serializers - ember-data-source (>= 1.0.0.beta.5) - ember-handlebars-template (>= 0.1.1, < 1.0) - ember-source (>= 1.1.0) - jquery-rails (>= 1.0.17) - railties (>= 3.1) - discourse-ember-source (3.12.2.3) discourse-fonts (0.0.9) discourse-seed-fu (2.3.12) activerecord (>= 3.1) @@ -138,12 +127,6 @@ GEM ecma-re-validator (0.4.0) regexp_parser (~> 2.2) email_reply_trimmer (0.1.13) - ember-data-source (3.0.2) - ember-source (>= 2, < 3.0) - ember-handlebars-template (0.8.0) - barber (>= 0.11.0) - sprockets (>= 3.3, < 4.1) - ember-source (2.18.2) erubi (1.11.0) excon (0.94.0) execjs (2.8.1) @@ -152,10 +135,10 @@ GEM faker (2.23.0) i18n (>= 1.8.11, < 2) fakeweb (1.3.0) - faraday (2.6.0) + faraday (2.7.1) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.1) + faraday-net_http (3.0.2) faraday-retry (2.0.0) faraday (~> 2.0) fast_blank (1.0.1) @@ -176,7 +159,7 @@ GEM http_accept_language (2.1.1) i18n (1.12.0) concurrent-ruby (~> 1.0) - image_optim (0.31.1) + image_optim (0.31.2) exifr (~> 1.2, >= 1.2.2) fspath (~> 3.0) image_size (>= 1.5, < 4) @@ -184,11 +167,7 @@ GEM progress (~> 3.0, >= 3.0.1) image_size (3.2.0) in_threads (1.6.0) - jmespath (1.6.1) - jquery-rails (4.5.1) - rails-dom-testing (>= 1, < 3) - railties (>= 4.2.0) - thor (>= 0.14, < 2.0) + jmespath (1.6.2) json (2.6.2) json-schema (3.0.0) addressable (>= 2.8) @@ -226,15 +205,15 @@ GEM matrix (0.4.2) maxminddb (0.1.22) memory_profiler (1.0.1) - message_bus (4.2.0) + message_bus (4.3.0) rack (>= 1.1.3) method_source (1.0.0) mini_mime (1.1.2) mini_portile2 (2.8.0) mini_racer (0.6.3) libv8-node (~> 16.10.0.0) - mini_scheduler (0.14.0) - sidekiq (>= 4.2.3) + mini_scheduler (0.15.0) + sidekiq (>= 4.2.3, < 7.0) mini_sql (1.4.0) mini_suffix (0.3.3) ffi (~> 1.9) @@ -309,9 +288,9 @@ GEM parallel (1.22.1) parallel_tests (4.0.0) parallel - parser (3.1.2.1) + parser (3.1.3.0) ast (~> 2.4.1) - pg (1.4.4) + pg (1.4.5) progress (3.6.0) pry (0.14.1) coderay (~> 1.1) @@ -322,14 +301,14 @@ GEM pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (5.0.0) - puma (5.6.5) + puma (6.0.0) nio4r (~> 2.0) r2 (0.2.7) racc (1.6.0) rack (2.2.4) rack-mini-profiler (3.0.0) rack (>= 1.2.0) - rack-protection (3.0.3) + rack-protection (3.0.4) rack rack-test (2.0.2) rack (>= 1.3) @@ -366,7 +345,7 @@ GEM redis (4.7.1) redis-namespace (1.9.0) redis (>= 4) - regexp_parser (2.6.0) + regexp_parser (2.6.1) request_store (1.5.1) rack (>= 1.4) rexml (3.2.5) @@ -402,12 +381,12 @@ GEM rspec-support (3.12.0) rss (0.2.9) rexml - rswag-specs (2.7.0) + rswag-specs (2.8.0) activesupport (>= 3.1, < 7.1) json-schema (>= 2.2, < 4.0) railties (>= 3.1, < 7.1) rspec-core (>= 2.14) - rubocop (1.38.0) + rubocop (1.39.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.1.2.1) @@ -450,8 +429,8 @@ GEM websocket (~> 1.0) shoulda-matchers (5.2.0) activesupport (>= 5.2.0) - sidekiq (6.5.7) - connection_pool (>= 2.2.5) + sidekiq (6.5.8) + connection_pool (>= 2.2.5, < 3) rack (~> 2.0) redis (>= 4.5.0, < 5) simplecov (0.21.2) @@ -525,7 +504,6 @@ DEPENDENCIES annotate aws-sdk-s3 aws-sdk-sns - barber better_errors binding_of_caller bootsnap @@ -540,13 +518,10 @@ DEPENDENCIES css_parser diffy digest - discourse-ember-rails (= 0.18.6) - discourse-ember-source (~> 3.12.2) discourse-fonts discourse-seed-fu discourse_dev_assets email_reply_trimmer - ember-handlebars-template (= 0.8.0) excon execjs fabrication @@ -650,4 +625,4 @@ DEPENDENCIES yaml-lint BUNDLED WITH - 2.3.24 + 2.3.25 diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix index 0309d1a435108..3971d6ef9c0d4 100644 --- a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix +++ b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix @@ -205,17 +205,6 @@ }; version = "1.5.0"; }; - barber = { - dependencies = ["ember-source" "execjs"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "07rnlbh7kgamcbnl1sqlcdrjj8src4qc687klqq4a3vqq2slnscx"; - type = "gem"; - }; - version = "0.12.2"; - }; better_errors = { dependencies = ["coderay" "erubi" "rack"]; groups = ["development"]; @@ -252,10 +241,10 @@ }]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0y1ycmvyd7swp6gy85m7znwilvb61zzcx6najgq0d1glq0p2hwy6"; + sha256 = "1ln89f9ypzincd5hqgmzd5vvfgf7fgir56v1spsri40ma88vnipj"; type = "gem"; }; - version = "1.13.0"; + version = "1.15.0"; }; builder = { groups = ["default" "development" "test"]; @@ -273,10 +262,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "06rmq3s8q6xndxxl7qid9nf3hiaahs71jyiyyk3bx31hns1vkcci"; + sha256 = "1f2phbpsiw8zwmmb1h6s82c4s2banzd04ch7vn6pdz91map233l1"; type = "gem"; }; - version = "7.0.3"; + version = "7.0.4"; }; byebug = { groups = ["development" "test"]; @@ -480,27 +469,6 @@ }; version = "3.1.0"; }; - discourse-ember-rails = { - dependencies = ["active_model_serializers" "ember-data-source" "ember-handlebars-template" "ember-source" "jquery-rails" "railties"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0ax5x2d6q6hkm7r58ai9p0sahlg842aqlm7dpv6svrfpnjlaz7sf"; - type = "gem"; - }; - version = "0.18.6"; - }; - discourse-ember-source = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0q4wypjiqvjlwaif5z3pnv0z02rsiysx58d7iljrw8xx9sxwxn6x"; - type = "gem"; - }; - version = "3.12.2.3"; - }; discourse-fonts = { groups = ["default"]; platforms = []; @@ -564,38 +532,6 @@ }; version = "0.1.13"; }; - ember-data-source = { - dependencies = ["ember-source"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1803nh3knvwl12h63jd48qvbbrp42yy291wcb35960daklip0fd8"; - type = "gem"; - }; - version = "3.0.2"; - }; - ember-handlebars-template = { - dependencies = ["barber" "sprockets"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1wxj3vi4xs3vjxrdbzi4j4w6vv45r5dkz2rg2ldid3p8dp3irlf4"; - type = "gem"; - }; - version = "0.8.0"; - }; - ember-source = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0sixy30ym9j2slhlr0lfq943g958w8arlb0lsizh59iv1w5gmxxy"; - type = "gem"; - }; - version = "2.18.2"; - }; erubi = { groups = ["default" "development" "test"]; platforms = [{ @@ -677,20 +613,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mqv17hfmph4ylmb2bqyccy64gsgpmzapq5yrmf5yjsqkvw9rxbv"; + sha256 = "1wyz9ab0mzi84gpf81fs19vrixglmmxi25k6n1mn9h141qmsp590"; type = "gem"; }; - version = "2.6.0"; + version = "2.7.1"; }; faraday-net_http = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "13b717ddw90iaf4vijy06srmkvrfbzsnyjap93yll0nibad4dbxq"; + sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"; type = "gem"; }; - version = "3.0.1"; + version = "3.0.2"; }; faraday-retry = { dependencies = ["faraday"]; @@ -891,10 +827,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1l3n59w1cbvfg2srfa14g3jdqwbkf7l86g4qrgfz3qps7zi0drg7"; + sha256 = "0acrqj9g8x39lz3z9li52wwc98d0csqarc7bv6jcfd0fp6h9zykb"; type = "gem"; }; - version = "0.31.1"; + version = "0.31.2"; }; image_size = { groups = ["default"]; @@ -921,21 +857,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1mnvb80cdg7fzdcs3xscv21p28w4igk5sj5m7m81xp8v2ks87jj0"; - type = "gem"; - }; - version = "1.6.1"; - }; - jquery-rails = { - dependencies = ["rails-dom-testing" "railties" "thor"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0rxfy6mk1yh8yjkk7gd1908f85dkc60xnfplwz7mi09f6j3f812p"; + sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393"; type = "gem"; }; - version = "4.5.1"; + version = "1.6.2"; }; json = { groups = ["default" "development" "test"]; @@ -1158,10 +1083,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "15gazkvbqffh57if68j2p81pm52ww7j9wibbqpq8xp7c3gxqahgq"; + sha256 = "039ab2bbzxhfgy3w7wrxznqzjyikiqm6dnl36pk7cmkb1d30fxdk"; type = "gem"; }; - version = "4.2.0"; + version = "4.3.0"; }; method_source = { groups = ["default" "development" "test"]; @@ -1210,10 +1135,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0g8mi0l90kkdvh45xz1gcmv3yzpj7d4dvgrhk8lg7lwn82d06yzw"; + sha256 = "11ng6hgb13jddharcnkcx6v2ycbfz1nx0n8i88n06pa29lfqgqrn"; type = "gem"; }; - version = "0.14.0"; + version = "0.15.0"; }; mini_sql = { groups = ["default"]; @@ -1559,20 +1484,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1q31n7yj59wka8xl8s5wkf66hm4pgvblx95czyxffprdnlhrir2p"; + sha256 = "17qfhjvnr9q2gp1gfdl6kndy2mb6qdwsls3vnjhb1h8ddimdm4s5"; type = "gem"; }; - version = "3.1.2.1"; + version = "3.1.3.0"; }; pg = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "09a5z9qhxnybahx162q2q1cygdhxfp6cihdivvzh32jlwc37z1x3"; + sha256 = "1wd6nl81nbdwck04hccsm7wf23ghpi8yddd9j4rbwyvyj0sbsff1"; type = "gem"; }; - version = "1.4.4"; + version = "1.4.5"; }; progress = { groups = ["default"]; @@ -1633,10 +1558,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qzq0c791kacv68hgk9zqsd1p7zx1y1rr9j10rn9yphibb8jj436"; + sha256 = "1yabmxmqprb2x58awiasidsiwpplscmyar9dzwh5l8jgaw4i3wra"; type = "gem"; }; - version = "5.6.5"; + version = "6.0.0"; }; r2 = { groups = ["default"]; @@ -1689,10 +1614,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1sfk4i52yijcggkzkwj3z6k2iv9fdacmcgcid1c8xjcldh93fhpg"; + sha256 = "1kljmw1lhzqjcwnwadr5m2khii0h2lsah447zb9vgirrv5jszg9h"; type = "gem"; }; - version = "3.0.3"; + version = "3.0.4"; }; rack-test = { dependencies = ["rack"]; @@ -1868,10 +1793,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mm5sykyblc61a82zz3dag6yy3mvflj2z47060kjzjj5793blqzi"; + sha256 = "0rj7xcg7bkfw6y0h4wg8y3s4nmks9qrzdxag4zaw41xjqfanlysf"; type = "gem"; }; - version = "2.6.0"; + version = "2.6.1"; }; request_store = { dependencies = ["rack"]; @@ -2028,10 +1953,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1mh9w7l9jl44pdxigppsxzrxracfsx7fsfz25ixamc8dkcklybx8"; + sha256 = "0fsxj0dfnncfnx7v9p4pzwp95wpc57cn0bijn0wx3b0pd68i6zhj"; type = "gem"; }; - version = "2.7.0"; + version = "2.8.0"; }; rubocop = { dependencies = ["json" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"]; @@ -2039,10 +1964,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1fhyia6fw438ld83vz7vx37zynmzv042saf04ir43ga6sxk4m9k4"; + sha256 = "0ggxkq68ddxmynr2lyrvzr8qbrdvc2irxlx9ihxmvdpkg1vimr3w"; type = "gem"; }; - version = "1.38.0"; + version = "1.39.0"; }; rubocop-ast = { dependencies = ["parser"]; @@ -2193,10 +2118,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0p2mj2jj5b9wqmpvkngx87lfr2qgwhqvwx38bmhl5aa29pc6z5kx"; + sha256 = "1z2fx4fzgnw4rzj3h1h4sk6qbkp7p2rdr58b2spxgkcsdzg0i5hh"; type = "gem"; }; - version = "6.5.7"; + version = "6.5.8"; }; simplecov = { dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"]; diff --git a/pkgs/test/vim/default.nix b/pkgs/test/vim/default.nix index 488a2fe99c563..4d8e59a306a80 100644 --- a/pkgs/test/vim/default.nix +++ b/pkgs/test/vim/default.nix @@ -1,4 +1,4 @@ -{ vimUtils, vim_configurable, writeText, vimPlugins +{ vimUtils, vim-full, writeText, vimPlugins , lib, fetchFromGitHub , pkgs }: @@ -14,12 +14,12 @@ in ### vim tests ################## - test_vim_with_vim_nix_using_plug = vim_configurable.customize { + test_vim_with_vim_nix_using_plug = vim-full.customize { name = "vim-with-vim-addon-nix-using-plug"; vimrcConfig.plug.plugins = with vimPlugins; [ vim-nix ]; }; - test_vim_with_vim_nix = vim_configurable.customize { + test_vim_with_vim_nix = vim-full.customize { name = "vim-with-vim-addon-nix"; vimrcConfig.packages.myVimPackage.start = with vimPlugins; [ vim-nix ]; }; diff --git a/pkgs/tools/misc/skim/default.nix b/pkgs/tools/misc/skim/default.nix index 3a999bb0e2013..bdd6221d66714 100644 --- a/pkgs/tools/misc/skim/default.nix +++ b/pkgs/tools/misc/skim/default.nix @@ -30,9 +30,7 @@ rustPlatform.buildRustPackage rec { install -D -m 444 plugin/skim.vim -t $vim/plugin install -D -m 444 shell/* -t $out/share/skim - install -D shell/key-bindings.fish $out/share/fish/vendor_functions.d/sk_key_bindings.fish - mkdir -p $out/share/fish/vendor_conf.d - echo sk_key_bindings > $out/share/fish/vendor_conf.d/load-sk-key-bindings.fish + installManPage man/man1/* cat <<SCRIPT > $out/bin/sk-share diff --git a/pkgs/tools/networking/dd-agent/datadog-agent.nix b/pkgs/tools/networking/dd-agent/datadog-agent.nix index 741ef08342238..b83083936a312 100644 --- a/pkgs/tools/networking/dd-agent/datadog-agent.nix +++ b/pkgs/tools/networking/dd-agent/datadog-agent.nix @@ -1,7 +1,7 @@ { lib , stdenv , cmake -, buildGoModule +, buildGo118Module , makeWrapper , fetchFromGitHub , pythonPackages @@ -35,7 +35,7 @@ let cmakeFlags = ["-DBUILD_DEMO=OFF" "-DDISABLE_PYTHON2=ON"]; }; -in buildGoModule rec { +in buildGo118Module rec { pname = "datadog-agent"; inherit src version; @@ -100,8 +100,7 @@ in buildGoModule rec { wrapProgram "$out/bin/agent" \ --set PYTHONPATH "$out/${python.sitePackages}"'' + lib.optionalString withSystemd '' \ - --prefix LD_LIBRARY_PATH : ${lib.getLib systemd}/lib - ''; + --prefix LD_LIBRARY_PATH : '' + lib.makeLibraryPath [ (lib.getLib systemd) rtloader ]; meta = with lib; { description = '' diff --git a/pkgs/tools/security/nuclei/default.nix b/pkgs/tools/security/nuclei/default.nix index b8ffc2f6ba6ee..f7163ebce667a 100644 --- a/pkgs/tools/security/nuclei/default.nix +++ b/pkgs/tools/security/nuclei/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "nuclei"; - version = "2.8.1"; + version = "2.8.2"; src = fetchFromGitHub { owner = "projectdiscovery"; repo = pname; rev = "v${version}"; - hash = "sha256-4qymEc2uYLi+6YDMbW6aUbe3RgOMaj6DT+6EfK3JaKk="; + hash = "sha256-iH2+y5J6fgHae23YBwZ5WT/V2JCXFz7PtB/t2+S7PDk="; }; - vendorHash = "sha256-BW3IaF8etjUklX7RpxVWQoTIXSmu+qT7xyQrPKjTbD4="; + vendorHash = "sha256-snBbte1TNDRcFwzq4QtixmqHarvQJ7E8euYPEYFlXe0="; modRoot = "./v2"; subPackages = [ diff --git a/pkgs/tools/virtualization/guestfs-tools/default.nix b/pkgs/tools/virtualization/guestfs-tools/default.nix index 446d4bcde0b7e..1c213c6b3243a 100644 --- a/pkgs/tools/virtualization/guestfs-tools/default.nix +++ b/pkgs/tools/virtualization/guestfs-tools/default.nix @@ -5,8 +5,10 @@ , bison , cdrkit , cpio +, curl , flex , getopt +, gnupg , hivex , jansson , libguestfs-with-appliance @@ -70,6 +72,14 @@ stdenv.mkDerivation rec { xz ]; + postPatch = '' + # If it uses the executable name, then there's nothing we can do + # when wrapping to stop it looking in + # $out/etc/.virt-builder-wrapped, which won't exist. + substituteInPlace common/mlstdutils/std_utils.ml \ + --replace Sys.executable_name '(Array.get Sys.argv 0)' + ''; + preConfigure = '' patchShebangs ocaml-dep.sh.in ocaml-link.sh.in run.in ''; @@ -85,6 +95,10 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; postInstall = '' + wrapProgram $out/bin/virt-builder \ + --argv0 virt-builder \ + --prefix PATH : ${lib.makeBinPath [ curl gnupg ]}:$out/bin \ + --suffix VIRT_BUILDER_DIRS : /etc:$out/etc wrapProgram $out/bin/virt-win-reg \ --prefix PERL5LIB : ${with perlPackages; makeFullPerlPath [ hivex libintl-perl libguestfs-with-appliance ]} ''; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 990d68374886c..fe30a103c1958 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1559,6 +1559,8 @@ mapAliases ({ vdirsyncerStable = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168 venus = throw "venus has been removed from nixpkgs, as it's unmaintained"; # Added 2021-02-05 vgo2nix = throw "vgo2nix has been removed, because it was deprecated. Consider using gomod2nix instead"; # added 2022-08-24 + vimHugeX = vim-full; # Added 2022-12-04 + vim_configurable = vim-full; # Added 2022-12-04 vimbWrapper = throw "'vimbWrapper' has been renamed to/replaced by 'vimb'"; # Converted to throw 2022-02-22 virtinst = throw "virtinst has been removed, as it's included in virt-manager"; # Added 2021-07-21 virtuoso = throw "virtuoso has been removed, because it was unmaintained in nixpkgs"; # added 2021-12-15 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c0aa65cf219bc..766317370db29 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2433,6 +2433,8 @@ with pkgs; twine = with python3Packages; toPythonApplication twine; + accelergy = callPackage ../applications/science/computer-architecture/accelergy { }; + aldo = callPackage ../applications/radio/aldo { }; alglib = callPackage ../development/libraries/alglib { }; @@ -27533,7 +27535,7 @@ with pkgs; assign-lb-ip = callPackage ../applications/networking/cluster/assign-lb-ip { }; astroid = callPackage ../applications/networking/mailreaders/astroid { - vim = vim_configurable.override { features = "normal"; }; + vim = vim-full.override { features = "normal"; }; }; aucatctl = callPackage ../applications/audio/aucatctl { }; @@ -32739,14 +32741,12 @@ with pkgs; macvim = callPackage ../applications/editors/vim/macvim-configurable.nix { stdenv = clangStdenv; }; - vimHugeX = vim_configurable; - - vim_configurable = vimUtils.makeCustomizable (callPackage ../applications/editors/vim/configurable.nix { + vim-full = vimUtils.makeCustomizable (callPackage ../applications/editors/vim/configurable.nix { inherit (darwin.apple_sdk.frameworks) CoreServices Cocoa Foundation CoreData; inherit (darwin) libobjc; }); - vim-darwin = (vim_configurable.override { + vim-darwin = (vim-full.override { config = { vim = { gui = "none"; @@ -34737,6 +34737,7 @@ with pkgs; }; scummvm = callPackage ../games/scummvm { + stdenv = if (stdenv.isDarwin && stdenv.isAarch64) then llvmPackages_14.stdenv else stdenv; inherit (darwin) cctools; inherit (darwin.apple_sdk.frameworks) Cocoa AudioToolbox Carbon CoreMIDI AudioUnit; }; @@ -37232,6 +37233,8 @@ with pkgs; shellz = callPackage ../tools/security/shellz { }; + timeloop = pkgs.darwin.apple_sdk_11_0.callPackage ../applications/science/computer-architecture/timeloop { }; + canon-cups-ufr2 = callPackage ../misc/cups/drivers/canon { }; hll2390dw-cups = callPackage ../misc/cups/drivers/hll2390dw-cups { }; |