diff options
Diffstat (limited to 'nixpkgs/nixos/doc')
-rw-r--r-- | nixpkgs/nixos/doc/manual/configuration/matrix.xml | 2 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/configuration/x-windows.xml | 134 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/default.nix | 106 | ||||
-rwxr-xr-x | nixpkgs/nixos/doc/manual/development/releases.xml | 10 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/man-pages.xml | 2 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/options-to-docbook.xsl | 236 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/postprocess-option-descriptions.xsl | 115 | ||||
-rw-r--r-- | nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml | 99 |
8 files changed, 249 insertions, 455 deletions
diff --git a/nixpkgs/nixos/doc/manual/configuration/matrix.xml b/nixpkgs/nixos/doc/manual/configuration/matrix.xml index 4c559a71e813..ef8d5cbda889 100644 --- a/nixpkgs/nixos/doc/manual/configuration/matrix.xml +++ b/nixpkgs/nixos/doc/manual/configuration/matrix.xml @@ -95,7 +95,7 @@ in { # forward all Matrix API calls to the synapse Matrix homeserver locations."/_matrix" = { - proxyPass = "http://[::1]:8008"; + proxyPass = "http://[::1]:8008"; # without a trailing / }; }; }; diff --git a/nixpkgs/nixos/doc/manual/configuration/x-windows.xml b/nixpkgs/nixos/doc/manual/configuration/x-windows.xml index 798d1fbdfd85..7cdc5196e0d2 100644 --- a/nixpkgs/nixos/doc/manual/configuration/x-windows.xml +++ b/nixpkgs/nixos/doc/manual/configuration/x-windows.xml @@ -125,10 +125,12 @@ You will need to reboot after enabling this driver to prevent a clash with other kernel modules. </para> + <note> <para> - Note: for recent AMD GPUs you most likely want to keep either the defaults + For recent AMD GPUs you most likely want to keep either the defaults or <literal>"amdgpu"</literal> (both free). </para> + </note> </simplesect> <simplesect xml:id="sec-x11-touchpads"> <title>Touchpads</title> @@ -157,4 +159,134 @@ versions. </para> </simplesect> + <simplesect xml:id="custom-xkb-layouts"> + <title>Custom XKB layouts</title> + <para> + It is possible to install custom + <link xlink:href="https://en.wikipedia.org/wiki/X_keyboard_extension"> + XKB + </link> + keyboard layouts using the option + <option> + <link linkend="opt-services.xserver.extraLayouts"> + services.xserver.extraLayouts + </link> + </option>. + As a first example, we are going to create a layout based on the basic US + layout, with an additional layer to type some greek symbols by pressing the + right-alt key. + </para> + <para> + To do this we are going to create a <literal>us-greek</literal> file + with a <literal>xkb_symbols</literal> section. + </para> +<programlisting> +xkb_symbols "us-greek" +{ + include "us(basic)" // includes the base US keys + include "level3(ralt_switch)" // configures right alt as a third level switch + + key <LatA> { [ a, A, Greek_alpha ] }; + key <LatB> { [ b, B, Greek_beta ] }; + key <LatG> { [ g, G, Greek_gamma ] }; + key <LatD> { [ d, D, Greek_delta ] }; + key <LatZ> { [ z, Z, Greek_zeta ] }; +}; +</programlisting> + <para> + To install the layout, the filepath, a description and the list of + languages must be given: + </para> +<programlisting> +<xref linkend="opt-services.xserver.extraLayouts"/>.us-greek = { + description = "US layout with alt-gr greek"; + languages = [ "eng" ]; + symbolsFile = /path/to/us-greek; +} +</programlisting> + <note> + <para> + The name should match the one given to the + <literal>xkb_symbols</literal> block. + </para> + </note> + <para> + The layout should now be installed and ready to use: try it by + running <literal>setxkbmap us-greek</literal> and type + <literal><alt>+a</literal>. To change the default the usual + <option> + <link linkend="opt-services.xserver.layout"> + services.xserver.layout + </link> + </option> + option can still be used. + </para> + <para> + A layout can have several other components besides + <literal>xkb_symbols</literal>, for example we will define new + keycodes for some multimedia key and bind these to some symbol. + </para> + <para> + Use the <emphasis>xev</emphasis> utility from + <literal>pkgs.xorg.xev</literal> to find the codes of the keys of + interest, then create a <literal>media-key</literal> file to hold + the keycodes definitions + </para> +<programlisting> +xkb_keycodes "media" +{ + <volUp> = 123; + <volDown> = 456; +} +</programlisting> + <para> + Now use the newly define keycodes in <literal>media-sym</literal>: + </para> +<programlisting> +xkb_symbols "media" +{ + key.type = "ONE_LEVEL"; + key <volUp> { [ XF86AudioLowerVolume ] }; + key <volDown> { [ XF86AudioRaiseVolume ] }; +} +</programlisting> + <para> + As before, to install the layout do + </para> +<programlisting> +<xref linkend="opt-services.xserver.extraLayouts"/>.media = { + description = "Multimedia keys remapping"; + languages = [ "eng" ]; + symbolsFile = /path/to/media-key; + keycodesFile = /path/to/media-sym; +}; +</programlisting> + <note> + <para> + The function <literal>pkgs.writeText <filename> <content> + </literal> can be useful if you prefer to keep the layout definitions + inside the NixOS configuration. + </para> + </note> + <para> + Unfortunately, the Xorg server does not (currently) support setting a + keymap directly but relies instead on XKB rules to select the matching + components (keycodes, types, ...) of a layout. This means that components + other than symbols won't be loaded by default. As a workaround, you + can set the keymap using <literal>setxkbmap</literal> at the start of the + session with: + </para> +<programlisting> +<xref linkend="opt-services.xserver.displayManager.sessionCommands"/> = "setxkbmap -keycodes media"; +</programlisting> + <para> + To learn how to write layouts take a look at the XKB + <link xlink:href="https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Enhancing.html#Defining_New_Layouts"> + documentation + </link>. More example layouts can also be found + <link xlink:href="https://wiki.archlinux.org/index.php/X_KeyBoard_extension#Basic_examples"> + here + </link>. + </para> +</simplesect> </chapter> diff --git a/nixpkgs/nixos/doc/manual/default.nix b/nixpkgs/nixos/doc/manual/default.nix index 7fc0ad702f84..f9de2db1a084 100644 --- a/nixpkgs/nixos/doc/manual/default.nix +++ b/nixpkgs/nixos/doc/manual/default.nix @@ -5,55 +5,6 @@ with pkgs; let lib = pkgs.lib; - # Remove invisible and internal options. - optionsListVisible = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options); - - # Replace functions by the string <function> - substFunction = x: - if builtins.isAttrs x then lib.mapAttrs (name: substFunction) x - else if builtins.isList x then map substFunction x - else if lib.isFunction x then "<function>" - else x; - - # Generate DocBook documentation for a list of packages. This is - # what `relatedPackages` option of `mkOption` from - # ../../../lib/options.nix influences. - # - # Each element of `relatedPackages` can be either - # - a string: that will be interpreted as an attribute name from `pkgs`, - # - a list: that will be interpreted as an attribute path from `pkgs`, - # - an attrset: that can specify `name`, `path`, `package`, `comment` - # (either of `name`, `path` is required, the rest are optional). - genRelatedPackages = packages: - let - unpack = p: if lib.isString p then { name = p; } - else if lib.isList p then { path = p; } - else p; - describe = args: - let - title = args.title or null; - name = args.name or (lib.concatStringsSep "." args.path); - path = args.path or [ args.name ]; - package = args.package or (lib.attrByPath path (throw "Invalid package attribute path `${toString path}'") pkgs); - in "<listitem>" - + "<para><literal>${lib.optionalString (title != null) "${title} aka "}pkgs.${name} (${package.meta.name})</literal>" - + lib.optionalString (!package.meta.available) " <emphasis>[UNAVAILABLE]</emphasis>" - + ": ${package.meta.description or "???"}.</para>" - + lib.optionalString (args ? comment) "\n<para>${args.comment}</para>" - # Lots of `longDescription's break DocBook, so we just wrap them into <programlisting> - + lib.optionalString (package.meta ? longDescription) "\n<programlisting>${package.meta.longDescription}</programlisting>" - + "</listitem>"; - in "<itemizedlist>${lib.concatStringsSep "\n" (map (p: describe (unpack p)) packages)}</itemizedlist>"; - - optionsListDesc = lib.flip map optionsListVisible (opt: opt // { - # Clean up declaration sites to not refer to the NixOS source tree. - declarations = map stripAnyPrefixes opt.declarations; - } - // lib.optionalAttrs (opt ? example) { example = substFunction opt.example; } - // lib.optionalAttrs (opt ? default) { default = substFunction opt.default; } - // lib.optionalAttrs (opt ? type) { type = substFunction opt.type; } - // lib.optionalAttrs (opt ? relatedPackages && opt.relatedPackages != []) { relatedPackages = genRelatedPackages opt.relatedPackages; }); - # We need to strip references to /nix/store/* from options, # including any `extraSources` if some modules came from elsewhere, # or else the build will fail. @@ -63,37 +14,13 @@ let prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources); stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) prefixesToStrip; - # Custom "less" that pushes up all the things ending in ".enable*" - # and ".package*" - optionLess = a: b: - let - ise = lib.hasPrefix "enable"; - isp = lib.hasPrefix "package"; - cmp = lib.splitByAndCompare ise lib.compare - (lib.splitByAndCompare isp lib.compare lib.compare); - in lib.compareLists cmp a.loc b.loc < 0; - - # Customly sort option list for the man page. - optionsList = lib.sort optionLess optionsListDesc; - - # Convert the list of options into an XML file. - optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList); - - optionsDocBook = runCommand "options-db.xml" {} '' - optionsXML=${optionsXML} - if grep /nixpkgs/nixos/modules $optionsXML; then - echo "The manual appears to depend on the location of Nixpkgs, which is bad" - echo "since this prevents sharing via the NixOS channel. This is typically" - echo "caused by an option default that refers to a relative path (see above" - echo "for hints about the offending path)." - exit 1 - fi - ${buildPackages.libxslt.bin}/bin/xsltproc \ - --stringparam revision '${revision}' \ - -o intermediate.xml ${./options-to-docbook.xsl} $optionsXML - ${buildPackages.libxslt.bin}/bin/xsltproc \ - -o "$out" ${./postprocess-option-descriptions.xsl} intermediate.xml - ''; + optionsDoc = buildPackages.nixosOptionsDoc { + inherit options revision; + transformOptions = opt: opt // { + # Clean up declaration sites to not refer to the NixOS source tree. + declarations = map stripAnyPrefixes opt.declarations; + }; + }; sources = lib.sourceFilesBySuffices ./. [".xml"]; @@ -108,7 +35,7 @@ let generatedSources = runCommand "generated-docbook" {} '' mkdir $out ln -s ${modulesDoc} $out/modules.xml - ln -s ${optionsDocBook} $out/options-db.xml + ln -s ${optionsDoc.optionsDocBook} $out/options-db.xml printf "%s" "${version}" > $out/version ''; @@ -234,22 +161,7 @@ let in rec { inherit generatedSources; - # The NixOS options in JSON format. - optionsJSON = runCommand "options-json" - { meta.description = "List of NixOS options in JSON format"; - } - '' - # Export list of options in different format. - dst=$out/share/doc/nixos - mkdir -p $dst - - cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON - (builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList)))) - } $dst/options.json - - mkdir -p $out/nix-support - echo "file json $dst/options.json" >> $out/nix-support/hydra-build-products - ''; # */ + inherit (optionsDoc) optionsJSON optionsXML optionsDocBook; # Generate the NixOS manual. manualHTML = runCommand "nixos-manual-html" diff --git a/nixpkgs/nixos/doc/manual/development/releases.xml b/nixpkgs/nixos/doc/manual/development/releases.xml index f45fecd16c35..3cb16d33cd48 100755 --- a/nixpkgs/nixos/doc/manual/development/releases.xml +++ b/nixpkgs/nixos/doc/manual/development/releases.xml @@ -100,6 +100,16 @@ </listitem> <listitem> <para> + Remove attributes that we know we will not be able to support, + especially if there is a stable alternative. E.g. Check that our + Linux kernels' + <link xlink:href="https://www.kernel.org/category/releases.html"> + projected end-of-life</link> are after our release projected + end-of-life + </para> + </listitem> + <listitem> + <para> Edit changelog at <literal>nixos/doc/manual/release-notes/rl-1709.xml</literal> (double check desktop versions are noted) diff --git a/nixpkgs/nixos/doc/manual/man-pages.xml b/nixpkgs/nixos/doc/manual/man-pages.xml index 0390dda6468f..f5a1dd2d69f4 100644 --- a/nixpkgs/nixos/doc/manual/man-pages.xml +++ b/nixpkgs/nixos/doc/manual/man-pages.xml @@ -6,7 +6,7 @@ <author><personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname> <contrib>Author</contrib> </author> - <copyright><year>2007-2018</year><holder>Eelco Dolstra</holder> + <copyright><year>2007-2019</year><holder>Eelco Dolstra</holder> </copyright> </info> <xi:include href="man-configuration.xml" /> diff --git a/nixpkgs/nixos/doc/manual/options-to-docbook.xsl b/nixpkgs/nixos/doc/manual/options-to-docbook.xsl deleted file mode 100644 index 72ac89d4ff62..000000000000 --- a/nixpkgs/nixos/doc/manual/options-to-docbook.xsl +++ /dev/null @@ -1,236 +0,0 @@ -<?xml version="1.0"?> - -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:str="http://exslt.org/strings" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:nixos="tag:nixos.org" - xmlns="http://docbook.org/ns/docbook" - extension-element-prefixes="str" - > - - <xsl:output method='xml' encoding="UTF-8" /> - - <xsl:param name="revision" /> - <xsl:param name="program" /> - - - <xsl:template match="/expr/list"> - <appendix xml:id="appendix-configuration-options"> - <title>Configuration Options</title> - <variablelist xml:id="configuration-variable-list"> - <xsl:for-each select="attrs"> - <xsl:variable name="id" select="concat('opt-', str:replace(str:replace(str:replace(str:replace(attr[@name = 'name']/string/@value, '*', '_'), '<', '_'), '>', '_'), '?', '_'))" /> - <varlistentry> - <term xlink:href="#{$id}"> - <xsl:attribute name="xml:id"><xsl:value-of select="$id"/></xsl:attribute> - <option> - <xsl:value-of select="attr[@name = 'name']/string/@value" /> - </option> - </term> - - <listitem> - - <nixos:option-description> - <para> - <xsl:value-of disable-output-escaping="yes" - select="attr[@name = 'description']/string/@value" /> - </para> - </nixos:option-description> - - <xsl:if test="attr[@name = 'type']"> - <para> - <emphasis>Type:</emphasis> - <xsl:text> </xsl:text> - <xsl:value-of select="attr[@name = 'type']/string/@value"/> - <xsl:if test="attr[@name = 'readOnly']/bool/@value = 'true'"> - <xsl:text> </xsl:text> - <emphasis>(read only)</emphasis> - </xsl:if> - </para> - </xsl:if> - - <xsl:if test="attr[@name = 'default']"> - <para> - <emphasis>Default:</emphasis> - <xsl:text> </xsl:text> - <xsl:apply-templates select="attr[@name = 'default']" mode="top" /> - </para> - </xsl:if> - - <xsl:if test="attr[@name = 'example']"> - <para> - <emphasis>Example:</emphasis> - <xsl:text> </xsl:text> - <xsl:choose> - <xsl:when test="attr[@name = 'example']/attrs[attr[@name = '_type' and string[@value = 'literalExample']]]"> - <programlisting><xsl:value-of select="attr[@name = 'example']/attrs/attr[@name = 'text']/string/@value" /></programlisting> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="attr[@name = 'example']" mode="top" /> - </xsl:otherwise> - </xsl:choose> - </para> - </xsl:if> - - <xsl:if test="attr[@name = 'relatedPackages']"> - <para> - <emphasis>Related packages:</emphasis> - <xsl:text> </xsl:text> - <xsl:value-of disable-output-escaping="yes" - select="attr[@name = 'relatedPackages']/string/@value" /> - </para> - </xsl:if> - - <xsl:if test="count(attr[@name = 'declarations']/list/*) != 0"> - <para> - <emphasis>Declared by:</emphasis> - </para> - <xsl:apply-templates select="attr[@name = 'declarations']" /> - </xsl:if> - - <xsl:if test="count(attr[@name = 'definitions']/list/*) != 0"> - <para> - <emphasis>Defined by:</emphasis> - </para> - <xsl:apply-templates select="attr[@name = 'definitions']" /> - </xsl:if> - - </listitem> - - </varlistentry> - - </xsl:for-each> - - </variablelist> - </appendix> - </xsl:template> - - - <xsl:template match="*" mode="top"> - <xsl:choose> - <xsl:when test="string[contains(@value, '
')]"> -<programlisting> -<xsl:text>'' -</xsl:text><xsl:value-of select='str:replace(string/@value, "${", "''${")' /><xsl:text>''</xsl:text></programlisting> - </xsl:when> - <xsl:otherwise> - <literal><xsl:apply-templates /></literal> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - - <xsl:template match="null"> - <xsl:text>null</xsl:text> - </xsl:template> - - - <xsl:template match="string"> - <xsl:choose> - <xsl:when test="(contains(@value, '"') or contains(@value, '\')) and not(contains(@value, '
'))"> - <xsl:text>''</xsl:text><xsl:value-of select='str:replace(@value, "${", "''${")' /><xsl:text>''</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>"</xsl:text><xsl:value-of select="str:replace(str:replace(str:replace(str:replace(@value, '\', '\\'), '"', '\"'), '
', '\n'), '$', '\$')" /><xsl:text>"</xsl:text> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - - <xsl:template match="int"> - <xsl:value-of select="@value" /> - </xsl:template> - - - <xsl:template match="bool[@value = 'true']"> - <xsl:text>true</xsl:text> - </xsl:template> - - - <xsl:template match="bool[@value = 'false']"> - <xsl:text>false</xsl:text> - </xsl:template> - - - <xsl:template match="list"> - [ - <xsl:for-each select="*"> - <xsl:apply-templates select="." /> - <xsl:text> </xsl:text> - </xsl:for-each> - ] - </xsl:template> - - - <xsl:template match="attrs[attr[@name = '_type' and string[@value = 'literalExample']]]"> - <xsl:value-of select="attr[@name = 'text']/string/@value" /> - </xsl:template> - - - <xsl:template match="attrs"> - { - <xsl:for-each select="attr"> - <xsl:value-of select="@name" /> - <xsl:text> = </xsl:text> - <xsl:apply-templates select="*" /><xsl:text>; </xsl:text> - </xsl:for-each> - } - </xsl:template> - - - <xsl:template match="derivation"> - <replaceable>(build of <xsl:value-of select="attr[@name = 'name']/string/@value" />)</replaceable> - </xsl:template> - - <xsl:template match="attr[@name = 'declarations' or @name = 'definitions']"> - <simplelist> - <xsl:for-each select="list/string"> - <member><filename> - <!-- Hyperlink the filename either to the NixOS Subversion - repository (if it’s a module and we have a revision number), - or to the local filesystem. --> - <xsl:choose> - <xsl:when test="not(starts-with(@value, '/'))"> - <xsl:choose> - <xsl:when test="$revision = 'local'"> - <xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/master/<xsl:value-of select="@value"/></xsl:attribute> - </xsl:when> - <xsl:otherwise> - <xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/<xsl:value-of select="$revision"/>/<xsl:value-of select="@value"/></xsl:attribute> - </xsl:otherwise> - </xsl:choose> - </xsl:when> - <xsl:when test="$revision != 'local' and $program = 'nixops' and contains(@value, '/nix/')"> - <xsl:attribute name="xlink:href">https://github.com/NixOS/nixops/blob/<xsl:value-of select="$revision"/>/nix/<xsl:value-of select="substring-after(@value, '/nix/')"/></xsl:attribute> - </xsl:when> - <xsl:otherwise> - <xsl:attribute name="xlink:href">file://<xsl:value-of select="@value"/></xsl:attribute> - </xsl:otherwise> - </xsl:choose> - <!-- Print the filename and make it user-friendly by replacing the - /nix/store/<hash> prefix by the default location of nixos - sources. --> - <xsl:choose> - <xsl:when test="not(starts-with(@value, '/'))"> - <nixpkgs/<xsl:value-of select="@value"/>> - </xsl:when> - <xsl:when test="contains(@value, 'nixops') and contains(@value, '/nix/')"> - <nixops/<xsl:value-of select="substring-after(@value, '/nix/')"/>> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="@value" /> - </xsl:otherwise> - </xsl:choose> - </filename></member> - </xsl:for-each> - </simplelist> - </xsl:template> - - - <xsl:template match="function"> - <xsl:text>λ</xsl:text> - </xsl:template> - - -</xsl:stylesheet> diff --git a/nixpkgs/nixos/doc/manual/postprocess-option-descriptions.xsl b/nixpkgs/nixos/doc/manual/postprocess-option-descriptions.xsl deleted file mode 100644 index 1201c7612c2e..000000000000 --- a/nixpkgs/nixos/doc/manual/postprocess-option-descriptions.xsl +++ /dev/null @@ -1,115 +0,0 @@ -<?xml version="1.0"?> - -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:str="http://exslt.org/strings" - xmlns:exsl="http://exslt.org/common" - xmlns:db="http://docbook.org/ns/docbook" - xmlns:nixos="tag:nixos.org" - extension-element-prefixes="str exsl"> - <xsl:output method='xml' encoding="UTF-8" /> - - <xsl:template match="@*|node()"> - <xsl:copy> - <xsl:apply-templates select="@*|node()" /> - </xsl:copy> - </xsl:template> - - <xsl:template name="break-up-description"> - <xsl:param name="input" /> - <xsl:param name="buffer" /> - - <!-- Every time we have two newlines following each other, we want to - break it into </para><para>. --> - <xsl:variable name="parbreak" select="'

'" /> - - <!-- Similar to "(head:tail) = input" in Haskell. --> - <xsl:variable name="head" select="$input[1]" /> - <xsl:variable name="tail" select="$input[position() > 1]" /> - - <xsl:choose> - <xsl:when test="$head/self::text() and contains($head, $parbreak)"> - <!-- If the haystack provided to str:split() directly starts or - ends with $parbreak, it doesn't generate a <token/> for that, - so we are doing this here. --> - <xsl:variable name="splitted-raw"> - <xsl:if test="starts-with($head, $parbreak)"><token /></xsl:if> - <xsl:for-each select="str:split($head, $parbreak)"> - <token><xsl:value-of select="node()" /></token> - </xsl:for-each> - <!-- Something like ends-with($head, $parbreak), but there is - no ends-with() in XSLT, so we need to use substring(). --> - <xsl:if test=" - substring($head, string-length($head) - - string-length($parbreak) + 1) = $parbreak - "><token /></xsl:if> - </xsl:variable> - <xsl:variable name="splitted" - select="exsl:node-set($splitted-raw)/token" /> - <!-- The buffer we had so far didn't contain any text nodes that - contain a $parbreak, so we can put the buffer along with the - first token of $splitted into a para element. --> - <para xmlns="http://docbook.org/ns/docbook"> - <xsl:apply-templates select="exsl:node-set($buffer)" /> - <xsl:apply-templates select="$splitted[1]/node()" /> - </para> - <!-- We have already emitted the first splitted result, so the - last result is going to be set as the new $buffer later - because its contents may not be directly followed up by a - $parbreak. --> - <xsl:for-each select="$splitted[position() > 1 - and position() < last()]"> - <para xmlns="http://docbook.org/ns/docbook"> - <xsl:apply-templates select="node()" /> - </para> - </xsl:for-each> - <xsl:call-template name="break-up-description"> - <xsl:with-param name="input" select="$tail" /> - <xsl:with-param name="buffer" select="$splitted[last()]/node()" /> - </xsl:call-template> - </xsl:when> - <!-- Either non-text node or one without $parbreak, which we just - want to buffer and continue recursing. --> - <xsl:when test="$input"> - <xsl:call-template name="break-up-description"> - <xsl:with-param name="input" select="$tail" /> - <!-- This essentially appends $head to $buffer. --> - <xsl:with-param name="buffer"> - <xsl:if test="$buffer"> - <xsl:for-each select="exsl:node-set($buffer)"> - <xsl:apply-templates select="." /> - </xsl:for-each> - </xsl:if> - <xsl:apply-templates select="$head" /> - </xsl:with-param> - </xsl:call-template> - </xsl:when> - <!-- No more $input, just put the remaining $buffer in a para. --> - <xsl:otherwise> - <para xmlns="http://docbook.org/ns/docbook"> - <xsl:apply-templates select="exsl:node-set($buffer)" /> - </para> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - <xsl:template match="nixos:option-description"> - <xsl:choose> - <!-- - Only process nodes that are comprised of a single <para/> element, - because if that's not the case the description already contains - </para><para> in between and we need no further processing. - --> - <xsl:when test="count(db:para) > 1"> - <xsl:apply-templates select="node()" /> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="break-up-description"> - <xsl:with-param name="input" - select="exsl:node-set(db:para/node())" /> - </xsl:call-template> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - -</xsl:stylesheet> diff --git a/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml b/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml index 53f5b8bb7321..b12858cfc963 100644 --- a/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml +++ b/nixpkgs/nixos/doc/manual/release-notes/rl-1909.xml @@ -33,6 +33,15 @@ PHP 7.1 is no longer supported due to upstream not supporting this version for the entire lifecycle of the 19.09 release. </para> </listitem> + <listitem> + <para> + The binfmt module is now easier to use. Additional systems can + be added through <option>boot.binfmt.emulatedSystems</option>. + For instance, <literal>boot.binfmt.emulatedSystems = [ + "wasm32-wasi" "x86_64-windows" "aarch64-linux" ];</literal> will + set up binfmt interpreters for each of those listed systems. + </para> + </listitem> </itemizedlist> </section> @@ -47,6 +56,13 @@ The following new services were added since the last release: </para> + <itemizedlist> + <listitem> + <para> + <literal>./programs/dwm-status.nix</literal> + </para> + </listitem> + </itemizedlist> </section> <section xmlns="http://docbook.org/ns/docbook" @@ -123,6 +139,19 @@ </para> </listitem> <listitem> + <para> + IPv6 Privacy Extensions are now enabled by default for undeclared + interfaces. The previous behaviour was quite misleading — even though + the default value for + <option>networking.interfaces.*.preferTempAddress</option> was + <literal>true</literal>, undeclared interfaces would not prefer temporary + addresses. Now, interfaces not mentioned in the config will prefer + temporary addresses. EUI64 addresses can still be set as preferred by + explicitly setting the option to <literal>false</literal> for the + interface in question. + </para> + </listitem> + <listitem> <para> Since Bittorrent Sync was superseded by Resilio Sync in 2016, the <literal>bittorrentSync</literal>, <literal>bittorrentSync14</literal>, @@ -136,10 +165,22 @@ </listitem> <listitem> <para> - Several of the apache subservices have been replaced with full NixOS - modules including LimeSurvey and WordPress. - These modules can be enabled using the <option>services.limesurvey.enable</option> - and <option>services.wordpress.enable</option> options. + The httpd service no longer attempts to start the postgresql service. If you have come to depend + on this behaviour then you can preserve the behavior with the following configuration: + <literal>systemd.services.httpd.after = [ "postgresql.service" ];</literal> + </para> + <para> + The option <option>services.httpd.extraSubservices</option> has been + marked as deprecated. You may still use this feature, but it will be + removed in a future release of NixOS. You are encouraged to convert any + httpd subservices you may have written to a full NixOS module. + </para> + <para> + Most of the httpd subservices packaged with NixOS have been replaced with + full NixOS modules including LimeSurvey, WordPress, and Zabbix. These + modules can be enabled using the <option>services.limesurvey.enable</option>, + <option>services.mediawiki.enable</option>, <option>services.wordpress.enable</option>, + and <option>services.zabbixWeb.enable</option> options. </para> </listitem> <listitem> @@ -182,6 +223,31 @@ <xref linkend="opt-programs.zsh.loginShellInit" /> and <xref linkend="opt-programs.zsh.promptInit" /> may break if it relies on those options being set. </para> </listitem> + <listitem> + <para> + The <literal>prometheus-nginx-exporter</literal> package now uses the offical exporter provided by NGINX Inc. + Its metrics are differently structured and are incompatible to the old ones. For information about the metrics, + have a look at the <link xlink:href="https://github.com/nginxinc/nginx-prometheus-exporter">official repo</link>. + </para> + </listitem> + <listitem> + <para> + Nodejs 8 is scheduled EOL under the lifetime of 19.09 and has been dropped. + </para> + </listitem> + <listitem> + <para> + By default, prometheus exporters are now run with <literal>DynamicUser</literal> enabled. + Exporters that need a real user, now run under a seperate user and group which follow the pattern <literal><exporter-name>-exporter</literal>, instead of the previous default <literal>nobody</literal> and <literal>nogroup</literal>. + Only some exporters are affected by the latter, namely the exporters <literal>dovecot</literal>, <literal>node</literal>, <literal>postfix</literal> and <literal>varnish</literal>. + </para> + </listitem> + <listitem> + <para> + The <literal>ibus-qt</literal> package is not installed by default anymore when <xref linkend="opt-i18n.inputMethod.enabled" /> is set to <literal>ibus</literal>. + If IBus support in Qt 4.x applications is required, add the <literal>ibus-qt</literal> package to your <xref linkend="opt-environment.systemPackages" /> manually. + </para> + </listitem> </itemizedlist> </section> @@ -318,6 +384,31 @@ The <literal>mercurial</literal> <literal>httpd.extraSubservice</literal> has been removed from nixpkgs due to lack of maintainer. </para> </listitem> + <listitem> + <para> + The <literal>trac</literal> <literal>httpd.extraSubservice</literal> has been removed from nixpkgs because it was unmaintained. + </para> + </listitem> + <listitem> + <para> + The <literal>foswiki</literal> package and associated <literal>httpd.extraSubservice</literal> have been removed + from nixpkgs due to lack of maintainer. + </para> + </listitem> + <listitem> + <para> + The <literal>tomcat-connector</literal> <literal>httpd.extraSubservice</literal> has been removed from nixpkgs. + </para> + </listitem> + <listitem> + <para> + It's now possible to change configuration in + <link linkend="opt-services.nextcloud.enable">services.nextcloud</link> after the initial deploy + since all config parameters are persisted in an additional config file generated by the module. + Previously core configuration like database parameters were set using their imperative + installer after creating <literal>/var/lib/nextcloud</literal>. + </para> + </listitem> </itemizedlist> </section> </section> |