diff options
84 files changed, 1121 insertions, 1011 deletions
diff --git a/doc/doc-support/default.nix b/doc/doc-support/default.nix index e9cb96e37fdd..bea3e12a70b3 100644 --- a/doc/doc-support/default.nix +++ b/doc/doc-support/default.nix @@ -75,7 +75,7 @@ in pkgs.runCommand "doc-support" {} ln -s ${epub-xsl} ./epub.xsl ln -s ${xhtml-xsl} ./xhtml.xsl - ln -s ${../../nixos/doc/xmlformat.conf} ./xmlformat.conf + ln -s ${./xmlformat.conf} ./xmlformat.conf ln -s ${pkgs.documentation-highlighter} ./highlightjs echo -n "${version}" > ./version diff --git a/nixos/doc/xmlformat.conf b/doc/doc-support/xmlformat.conf index c3f39c7fd81b..c3f39c7fd81b 100644 --- a/nixos/doc/xmlformat.conf +++ b/doc/doc-support/xmlformat.conf diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 36762361d104..04658beb7f81 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -3762,12 +3762,6 @@ githubId = 14034137; name = "Mostly Void"; }; - dizfer = { - email = "david@izquierdofernandez.com"; - github = "DIzFer"; - githubId = 8852888; - name = "David Izquierdo"; - }; djacu = { email = "daniel.n.baker@gmail.com"; github = "djacu"; diff --git a/nixos/doc/manual/.gitignore b/nixos/doc/manual/.gitignore deleted file mode 100644 index 879282624217..000000000000 --- a/nixos/doc/manual/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -manual-combined.xml diff --git a/nixos/doc/manual/Makefile b/nixos/doc/manual/Makefile deleted file mode 100644 index b2b6481b20c7..000000000000 --- a/nixos/doc/manual/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -.PHONY: all -all: manual-combined.xml - -.PHONY: debug -debug: generated manual-combined.xml - -manual-combined.xml: generated *.xml **/*.xml - rm -f ./manual-combined.xml - nix-shell --pure -Q --packages xmloscopy \ - --run "xmloscopy --docbook5 ./manual.xml ./manual-combined.xml" - -.PHONY: format -format: - nix-shell --pure -Q --packages xmlformat \ - --run "find ../../ -iname '*.xml' -type f -print0 | xargs -0 -I{} -n1 \ - xmlformat --config-file '../xmlformat.conf' -i {}" - -.PHONY: fix-misc-xml -fix-misc-xml: - find . -iname '*.xml' -type f \ - -exec ../varlistentry-fixer.rb {} ';' - -.PHONY: clean -clean: - rm -f manual-combined.xml generated - -generated: - nix-build ../../release.nix \ - --attr manualGeneratedSources.x86_64-linux \ - --out-link ./generated diff --git a/nixos/doc/manual/administration/containers.chapter.md b/nixos/doc/manual/administration/containers.chapter.md index ea51f91f698f..50493b562b54 100644 --- a/nixos/doc/manual/administration/containers.chapter.md +++ b/nixos/doc/manual/administration/containers.chapter.md @@ -21,8 +21,8 @@ which is often not what you want. By contrast, in the imperative approach, containers are configured and updated independently from the host system. -```{=docbook} -<xi:include href="imperative-containers.section.xml" /> -<xi:include href="declarative-containers.section.xml" /> -<xi:include href="container-networking.section.xml" /> +```{=include=} sections +imperative-containers.section.md +declarative-containers.section.md +container-networking.section.md ``` diff --git a/nixos/doc/manual/administration/running.md b/nixos/doc/manual/administration/running.md new file mode 100644 index 000000000000..48e8c7c6668b --- /dev/null +++ b/nixos/doc/manual/administration/running.md @@ -0,0 +1,14 @@ +# Administration {#ch-running} + +This chapter describes various aspects of managing a running NixOS system, such as how to use the {command}`systemd` service manager. + +```{=include=} chapters +service-mgmt.chapter.md +rebooting.chapter.md +user-sessions.chapter.md +control-groups.chapter.md +logging.chapter.md +cleaning-store.chapter.md +containers.chapter.md +troubleshooting.chapter.md +``` diff --git a/nixos/doc/manual/administration/running.xml b/nixos/doc/manual/administration/running.xml deleted file mode 100644 index d9fcc1aee263..000000000000 --- a/nixos/doc/manual/administration/running.xml +++ /dev/null @@ -1,21 +0,0 @@ -<part xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="ch-running"> - <title>Administration</title> - <partintro xml:id="ch-running-intro"> - <para> - This chapter describes various aspects of managing a running NixOS system, - such as how to use the <command>systemd</command> service manager. - </para> - </partintro> - <xi:include href="../from_md/administration/service-mgmt.chapter.xml" /> - <xi:include href="../from_md/administration/rebooting.chapter.xml" /> - <xi:include href="../from_md/administration/user-sessions.chapter.xml" /> - <xi:include href="../from_md/administration/control-groups.chapter.xml" /> - <xi:include href="../from_md/administration/logging.chapter.xml" /> - <xi:include href="../from_md/administration/cleaning-store.chapter.xml" /> - <xi:include href="../from_md/administration/containers.chapter.xml" /> - <xi:include href="../from_md/administration/troubleshooting.chapter.xml" /> -</part> diff --git a/nixos/doc/manual/administration/troubleshooting.chapter.md b/nixos/doc/manual/administration/troubleshooting.chapter.md index 548456eaf6d6..1253607f8efc 100644 --- a/nixos/doc/manual/administration/troubleshooting.chapter.md +++ b/nixos/doc/manual/administration/troubleshooting.chapter.md @@ -3,10 +3,10 @@ This chapter describes solutions to common problems you might encounter when you manage your NixOS system. -```{=docbook} -<xi:include href="boot-problems.section.xml" /> -<xi:include href="maintenance-mode.section.xml" /> -<xi:include href="rollback.section.xml" /> -<xi:include href="store-corruption.section.xml" /> -<xi:include href="network-problems.section.xml" /> +```{=include=} sections +boot-problems.section.md +maintenance-mode.section.md +rollback.section.md +store-corruption.section.md +network-problems.section.md ``` diff --git a/nixos/doc/manual/configuration/config-syntax.chapter.md b/nixos/doc/manual/configuration/config-syntax.chapter.md index 9f8d45d58899..9e606b2b82af 100644 --- a/nixos/doc/manual/configuration/config-syntax.chapter.md +++ b/nixos/doc/manual/configuration/config-syntax.chapter.md @@ -11,8 +11,8 @@ manual](https://nixos.org/nix/manual/#chap-writing-nix-expressions), but here we give a short overview of the most important constructs useful in NixOS configuration files. -```{=docbook} -<xi:include href="config-file.section.xml" /> -<xi:include href="abstractions.section.xml" /> -<xi:include href="modularity.section.xml" /> +```{=include=} sections +config-file.section.md +abstractions.section.md +modularity.section.md ``` diff --git a/nixos/doc/manual/configuration/configuration.md b/nixos/doc/manual/configuration/configuration.md new file mode 100644 index 000000000000..4c966f3325b9 --- /dev/null +++ b/nixos/doc/manual/configuration/configuration.md @@ -0,0 +1,27 @@ +# Configuration {#ch-configuration} + +This chapter describes how to configure various aspects of a NixOS machine through the configuration file {file}`/etc/nixos/configuration.nix`. As described in [](#sec-changing-config), changes to this file only take effect after you run {command}`nixos-rebuild`. + +```{=include=} chapters +config-syntax.chapter.md +package-mgmt.chapter.md +user-mgmt.chapter.md +file-systems.chapter.md +x-windows.chapter.md +wayland.chapter.md +gpu-accel.chapter.md +xfce.chapter.md +networking.chapter.md +linux-kernel.chapter.md +subversion.chapter.md +``` + +```{=include=} chapters +@MODULE_CHAPTERS@ +``` + +```{=include=} chapters +profiles.chapter.md +kubernetes.chapter.md +``` +<!-- Apache; libvirtd virtualisation --> diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml deleted file mode 100644 index b04316cfa48e..000000000000 --- a/nixos/doc/manual/configuration/configuration.xml +++ /dev/null @@ -1,31 +0,0 @@ -<part xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="ch-configuration"> - <title>Configuration</title> - <partintro xml:id="ch-configuration-intro"> - <para> - This chapter describes how to configure various aspects of a NixOS machine - through the configuration file - <filename>/etc/nixos/configuration.nix</filename>. As described in - <xref linkend="sec-changing-config" />, changes to this file only take - effect after you run <command>nixos-rebuild</command>. - </para> - </partintro> - <xi:include href="../from_md/configuration/config-syntax.chapter.xml" /> - <xi:include href="../from_md/configuration/package-mgmt.chapter.xml" /> - <xi:include href="../from_md/configuration/user-mgmt.chapter.xml" /> - <xi:include href="../from_md/configuration/file-systems.chapter.xml" /> - <xi:include href="../from_md/configuration/x-windows.chapter.xml" /> - <xi:include href="../from_md/configuration/wayland.chapter.xml" /> - <xi:include href="../from_md/configuration/gpu-accel.chapter.xml" /> - <xi:include href="../from_md/configuration/xfce.chapter.xml" /> - <xi:include href="../from_md/configuration/networking.chapter.xml" /> - <xi:include href="../from_md/configuration/linux-kernel.chapter.xml" /> - <xi:include href="../from_md/configuration/subversion.chapter.xml" /> - <xi:include href="../generated/modules.xml" xpointer="xpointer(//section[@id='modules']/*)" /> - <xi:include href="../from_md/configuration/profiles.chapter.xml" /> - <xi:include href="../from_md/configuration/kubernetes.chapter.xml" /> -<!-- Apache; libvirtd virtualisation --> -</part> diff --git a/nixos/doc/manual/configuration/declarative-packages.section.md b/nixos/doc/manual/configuration/declarative-packages.section.md index 337cdf8472e4..02eaa56192e4 100644 --- a/nixos/doc/manual/configuration/declarative-packages.section.md +++ b/nixos/doc/manual/configuration/declarative-packages.section.md @@ -40,7 +40,7 @@ configuration use `pkgs` prefix (variable). To "uninstall" a package, simply remove it from [](#opt-environment.systemPackages) and run `nixos-rebuild switch`. -```{=docbook} -<xi:include href="customizing-packages.section.xml" /> -<xi:include href="adding-custom-packages.section.xml" /> +```{=include=} sections +customizing-packages.section.md +adding-custom-packages.section.md ``` diff --git a/nixos/doc/manual/configuration/file-systems.chapter.md b/nixos/doc/manual/configuration/file-systems.chapter.md index 901e2e4f181b..aca978be064d 100644 --- a/nixos/doc/manual/configuration/file-systems.chapter.md +++ b/nixos/doc/manual/configuration/file-systems.chapter.md @@ -36,7 +36,7 @@ dropping you to the emergency shell. You can make a mount asynchronous and non-critical by adding `options = [ "nofail" ];`. ::: -```{=docbook} -<xi:include href="luks-file-systems.section.xml" /> -<xi:include href="sshfs-file-systems.section.xml" /> +```{=include=} sections +luks-file-systems.section.md +sshfs-file-systems.section.md ``` diff --git a/nixos/doc/manual/configuration/networking.chapter.md b/nixos/doc/manual/configuration/networking.chapter.md index 529dc0610bda..abbd9766f173 100644 --- a/nixos/doc/manual/configuration/networking.chapter.md +++ b/nixos/doc/manual/configuration/networking.chapter.md @@ -3,14 +3,14 @@ This section describes how to configure networking components on your NixOS machine. -```{=docbook} -<xi:include href="network-manager.section.xml" /> -<xi:include href="ssh.section.xml" /> -<xi:include href="ipv4-config.section.xml" /> -<xi:include href="ipv6-config.section.xml" /> -<xi:include href="firewall.section.xml" /> -<xi:include href="wireless.section.xml" /> -<xi:include href="ad-hoc-network-config.section.xml" /> -<xi:include href="renaming-interfaces.section.xml" /> +```{=include=} sections +network-manager.section.md +ssh.section.md +ipv4-config.section.md +ipv6-config.section.md +firewall.section.md +wireless.section.md +ad-hoc-network-config.section.md +renaming-interfaces.section.md ``` <!-- TODO: OpenVPN, NAT --> diff --git a/nixos/doc/manual/configuration/package-mgmt.chapter.md b/nixos/doc/manual/configuration/package-mgmt.chapter.md index a6c414be59a9..1148bbe84740 100644 --- a/nixos/doc/manual/configuration/package-mgmt.chapter.md +++ b/nixos/doc/manual/configuration/package-mgmt.chapter.md @@ -12,7 +12,7 @@ NixOS has two distinct styles of package management: `nix-env` command. This style allows mixing packages from different Nixpkgs versions. It's the only choice for non-root users. -```{=docbook} -<xi:include href="declarative-packages.section.xml" /> -<xi:include href="ad-hoc-packages.section.xml" /> +```{=include=} sections +declarative-packages.section.md +ad-hoc-packages.section.md ``` diff --git a/nixos/doc/manual/configuration/profiles.chapter.md b/nixos/doc/manual/configuration/profiles.chapter.md index 2c3dea27c181..9f1f48f742ac 100644 --- a/nixos/doc/manual/configuration/profiles.chapter.md +++ b/nixos/doc/manual/configuration/profiles.chapter.md @@ -19,16 +19,16 @@ install media, many are actually intended to be used in real installs. What follows is a brief explanation on the purpose and use-case for each profile. Detailing each option configured by each one is out of scope. -```{=docbook} -<xi:include href="profiles/all-hardware.section.xml" /> -<xi:include href="profiles/base.section.xml" /> -<xi:include href="profiles/clone-config.section.xml" /> -<xi:include href="profiles/demo.section.xml" /> -<xi:include href="profiles/docker-container.section.xml" /> -<xi:include href="profiles/graphical.section.xml" /> -<xi:include href="profiles/hardened.section.xml" /> -<xi:include href="profiles/headless.section.xml" /> -<xi:include href="profiles/installation-device.section.xml" /> -<xi:include href="profiles/minimal.section.xml" /> -<xi:include href="profiles/qemu-guest.section.xml" /> +```{=include=} sections +profiles/all-hardware.section.md +profiles/base.section.md +profiles/clone-config.section.md +profiles/demo.section.md +profiles/docker-container.section.md +profiles/graphical.section.md +profiles/hardened.section.md +profiles/headless.section.md +profiles/installation-device.section.md +profiles/minimal.section.md +profiles/qemu-guest.section.md ``` diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index e0bcec1ea6b5..8c71e5108799 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -68,56 +68,6 @@ let optionIdPrefix = "test-opt-"; }; - sources = runCommand "manual-sources" { - inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ]; - nativeBuildInputs = [ pkgs.nixos-render-docs ]; - } '' - mkdir $out - cd $out - cp -r --no-preserve=all $inputs/* . - - declare -a convert_args - while read -r mf; do - if [[ "$mf" = *.chapter.md ]]; then - convert_args+=("--chapter") - else - convert_args+=("--section") - fi - - convert_args+=("from_md/''${mf%.md}.xml" "$mf") - done < <(find . -type f -name '*.md') - - nixos-render-docs manual docbook-fragment \ - --manpage-urls ${manpageUrls} \ - "''${convert_args[@]}" - ''; - - modulesDoc = runCommand "modules.xml" { - nativeBuildInputs = [ pkgs.nixos-render-docs ]; - } '' - nixos-render-docs manual docbook-section \ - --manpage-urls ${manpageUrls} \ - "$out" \ - --section \ - --section-id modules \ - --chapters ${lib.concatMapStrings (p: "${p.value} ") config.meta.doc} - ''; - - generatedSources = runCommand "generated-docbook" {} '' - mkdir $out - ln -s ${modulesDoc} $out/modules.xml - ln -s ${optionsDoc.optionsDocBook} $out/options-db.xml - ln -s ${testOptionsDoc.optionsDocBook} $out/test-options-db.xml - printf "%s" "${version}" > $out/version - ''; - - copySources = - '' - cp -prd $sources/* . # */ - ln -s ${generatedSources} ./generated - chmod -R u+w . - ''; - toc = builtins.toFile "toc.xml" '' <toc role="chunk-toc"> @@ -148,70 +98,102 @@ let "--stringparam chunk.toc ${toc}" ]; + linterFunctions = '' + # outputs the context of an xmllint error output + # LEN lines around the failing line are printed + function context { + # length of context + local LEN=6 + # lines to print before error line + local BEFORE=4 + + # xmllint output lines are: + # file.xml:1234: there was an error on line 1234 + while IFS=':' read -r file line rest; do + echo + if [[ -n "$rest" ]]; then + echo "$file:$line:$rest" + local FROM=$(($line>$BEFORE ? $line - $BEFORE : 1)) + # number lines & filter context + nl --body-numbering=a "$file" | sed -n "$FROM,+$LEN p" + else + if [[ -n "$line" ]]; then + echo "$file:$line" + else + echo "$file" + fi + fi + done + } + + function lintrng { + xmllint --debug --noout --nonet \ + --relaxng ${docbook5}/xml/rng/docbook/docbook.rng \ + "$1" \ + 2>&1 | context 1>&2 + # ^ redirect assumes xmllint doesn’t print to stdout + } + ''; + manual-combined = runCommand "nixos-manual-combined" - { inherit sources; - nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ]; + { inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ]; + nativeBuildInputs = [ pkgs.nixos-render-docs pkgs.libxml2.bin pkgs.libxslt.bin ]; meta.description = "The NixOS manual as plain docbook XML"; } '' - ${copySources} - - xmllint --xinclude --output ./manual-combined.xml ./manual.xml - xmllint --xinclude --noxincludenode \ - --output ./man-pages-combined.xml ./man-pages.xml - - # outputs the context of an xmllint error output - # LEN lines around the failing line are printed - function context { - # length of context - local LEN=6 - # lines to print before error line - local BEFORE=4 - - # xmllint output lines are: - # file.xml:1234: there was an error on line 1234 - while IFS=':' read -r file line rest; do - echo - if [[ -n "$rest" ]]; then - echo "$file:$line:$rest" - local FROM=$(($line>$BEFORE ? $line - $BEFORE : 1)) - # number lines & filter context - nl --body-numbering=a "$file" | sed -n "$FROM,+$LEN p" - else - if [[ -n "$line" ]]; then - echo "$file:$line" - else - echo "$file" - fi - fi - done - } - - function lintrng { - xmllint --debug --noout --nonet \ - --relaxng ${docbook5}/xml/rng/docbook/docbook.rng \ - "$1" \ - 2>&1 | context 1>&2 - # ^ redirect assumes xmllint doesn’t print to stdout - } + cp -r --no-preserve=all $inputs/* . + + substituteInPlace ./manual.md \ + --replace '@NIXOS_VERSION@' "${version}" + substituteInPlace ./configuration/configuration.md \ + --replace \ + '@MODULE_CHAPTERS@' \ + ${lib.escapeShellArg (lib.concatMapStringsSep "\n" (p: "${p.value}") config.meta.doc)} + substituteInPlace ./nixos-options.md \ + --replace \ + '@NIXOS_OPTIONS_JSON@' \ + ${optionsDoc.optionsJSON}/share/doc/nixos/options.json + substituteInPlace ./development/writing-nixos-tests.section.md \ + --replace \ + '@NIXOS_TEST_OPTIONS_JSON@' \ + ${testOptionsDoc.optionsJSON}/share/doc/nixos/options.json + + nixos-render-docs manual docbook \ + --manpage-urls ${manpageUrls} \ + --revision ${lib.escapeShellArg revision} \ + ./manual.md \ + ./manual-combined.xml + + ${linterFunctions} mkdir $out cp manual-combined.xml $out/ - cp man-pages-combined.xml $out/ lintrng $out/manual-combined.xml - lintrng $out/man-pages-combined.xml ''; -in rec { - inherit generatedSources; + manpages-combined = runCommand "nixos-manpages-combined.xml" + { nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ]; + meta.description = "The NixOS manpages as plain docbook XML"; + } + '' + mkdir generated + cp -prd ${./man-pages.xml} man-pages.xml + ln -s ${optionsDoc.optionsDocBook} generated/options-db.xml + + xmllint --xinclude --noxincludenode --output $out ./man-pages.xml + + ${linterFunctions} + lintrng $out + ''; + +in rec { inherit (optionsDoc) optionsJSON optionsNix optionsDocBook optionsUsedDocbook; # Generate the NixOS manual. manualHTML = runCommand "nixos-manual-html" - { inherit sources; - nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ]; + { nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ]; meta.description = "The NixOS manual in HTML format"; allowedReferences = ["out"]; } @@ -248,8 +230,7 @@ in rec { manualHTMLIndex = "${manualHTML}/share/doc/nixos/index.html"; manualEpub = runCommand "nixos-manual-epub" - { inherit sources; - nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin buildPackages.zip ]; + { nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin buildPackages.zip ]; } '' # Generate the epub manual. @@ -300,7 +281,7 @@ in rec { --param man.endnotes.are.numbered 0 \ --param man.break.after.slash 1 \ ${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \ - ${manual-combined}/man-pages-combined.xml + ${manpages-combined} '' else '' mkdir -p $out/share/man/man5 diff --git a/nixos/doc/manual/development/development.md b/nixos/doc/manual/development/development.md new file mode 100644 index 000000000000..6a0dd091b129 --- /dev/null +++ b/nixos/doc/manual/development/development.md @@ -0,0 +1,14 @@ +# Development {#ch-development} + +This chapter describes how you can modify and extend NixOS. + +```{=include=} chapters +sources.chapter.md +writing-modules.chapter.md +building-parts.chapter.md +bootspec.chapter.md +what-happens-during-a-system-switch.chapter.md +writing-documentation.chapter.md +nixos-tests.chapter.md +testing-installer.chapter.md +``` diff --git a/nixos/doc/manual/development/development.xml b/nixos/doc/manual/development/development.xml deleted file mode 100644 index 949468c9021d..000000000000 --- a/nixos/doc/manual/development/development.xml +++ /dev/null @@ -1,20 +0,0 @@ -<part xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="ch-development"> - <title>Development</title> - <partintro xml:id="ch-development-intro"> - <para> - This chapter describes how you can modify and extend NixOS. - </para> - </partintro> - <xi:include href="../from_md/development/sources.chapter.xml" /> - <xi:include href="../from_md/development/writing-modules.chapter.xml" /> - <xi:include href="../from_md/development/building-parts.chapter.xml" /> - <xi:include href="../from_md/development/bootspec.chapter.xml" /> - <xi:include href="../from_md/development/what-happens-during-a-system-switch.chapter.xml" /> - <xi:include href="../from_md/development/writing-documentation.chapter.xml" /> - <xi:include href="../from_md/development/nixos-tests.chapter.xml" /> - <xi:include href="../from_md/development/testing-installer.chapter.xml" /> -</part> diff --git a/nixos/doc/manual/development/nixos-tests.chapter.md b/nixos/doc/manual/development/nixos-tests.chapter.md index 2a4fdddeaa66..ec0e4b9f076a 100644 --- a/nixos/doc/manual/development/nixos-tests.chapter.md +++ b/nixos/doc/manual/development/nixos-tests.chapter.md @@ -5,9 +5,9 @@ NixOS tests are kept in the directory `nixos/tests`, and are executed (using Nix) by a testing framework that automatically starts one or more virtual machines containing the NixOS system(s) required for the test. -```{=docbook} -<xi:include href="writing-nixos-tests.section.xml" /> -<xi:include href="running-nixos-tests.section.xml" /> -<xi:include href="running-nixos-tests-interactively.section.xml" /> -<xi:include href="linking-nixos-tests-to-packages.section.xml" /> +```{=include=} sections +writing-nixos-tests.section.md +running-nixos-tests.section.md +running-nixos-tests-interactively.section.md +linking-nixos-tests-to-packages.section.md ``` diff --git a/nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.md b/nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.md index aad82831a3c2..9cbec729803a 100644 --- a/nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.md +++ b/nixos/doc/manual/development/what-happens-during-a-system-switch.chapter.md @@ -47,7 +47,7 @@ Most of these actions are either self-explaining but some of them have to do with our units or the activation script. For this reason, these topics are explained in the next sections. -```{=docbook} -<xi:include href="unit-handling.section.xml" /> -<xi:include href="activation-script.section.xml" /> +```{=include=} sections +unit-handling.section.md +activation-script.section.md ``` diff --git a/nixos/doc/manual/development/writing-documentation.chapter.md b/nixos/doc/manual/development/writing-documentation.chapter.md index 4986c9f0a81b..8d504dfb0b0a 100644 --- a/nixos/doc/manual/development/writing-documentation.chapter.md +++ b/nixos/doc/manual/development/writing-documentation.chapter.md @@ -83,7 +83,7 @@ Keep the following guidelines in mind when you create and add a topic: ## Adding a Topic to the Book {#sec-writing-docs-adding-a-topic} -Open the parent XML file and add an `xi:include` element to the list of +Open the parent CommonMark file and add a line to the list of chapters with the file name of the topic that you created. If you created a `section`, you add the file to the `chapter` file. If you created a `chapter`, you add the file to the `part` file. diff --git a/nixos/doc/manual/development/writing-modules.chapter.md b/nixos/doc/manual/development/writing-modules.chapter.md index a0ec4a5df96e..ae657458d768 100644 --- a/nixos/doc/manual/development/writing-modules.chapter.md +++ b/nixos/doc/manual/development/writing-modules.chapter.md @@ -189,14 +189,14 @@ in { ``` ::: -```{=docbook} -<xi:include href="option-declarations.section.xml" /> -<xi:include href="option-types.section.xml" /> -<xi:include href="option-def.section.xml" /> -<xi:include href="assertions.section.xml" /> -<xi:include href="meta-attributes.section.xml" /> -<xi:include href="importing-modules.section.xml" /> -<xi:include href="replace-modules.section.xml" /> -<xi:include href="freeform-modules.section.xml" /> -<xi:include href="settings-options.section.xml" /> +```{=include=} sections +option-declarations.section.md +option-types.section.md +option-def.section.md +assertions.section.md +meta-attributes.section.md +importing-modules.section.md +replace-modules.section.md +freeform-modules.section.md +settings-options.section.md ``` diff --git a/nixos/doc/manual/development/writing-nixos-tests.section.md b/nixos/doc/manual/development/writing-nixos-tests.section.md index d80e314e6251..3de46fda3df6 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.section.md +++ b/nixos/doc/manual/development/writing-nixos-tests.section.md @@ -470,6 +470,8 @@ In that case, `numpy` is chosen from the generic `python3Packages`. The following options can be used when writing tests. -```{=docbook} -<xi:include href="../../generated/test-options-db.xml" xpointer="test-options-list"/> +```{=include=} options +id-prefix: test-opt- +list-id: test-options-list +source: @NIXOS_TEST_OPTIONS_JSON@ ``` diff --git a/nixos/doc/manual/installation/installation.md b/nixos/doc/manual/installation/installation.md new file mode 100644 index 000000000000..140594256609 --- /dev/null +++ b/nixos/doc/manual/installation/installation.md @@ -0,0 +1,11 @@ +# Installation {#ch-installation} + +This section describes how to obtain, install, and configure NixOS for first-time use. + +```{=include=} chapters +obtaining.chapter.md +installing.chapter.md +changing-config.chapter.md +upgrading.chapter.md +building-nixos.chapter.md +``` diff --git a/nixos/doc/manual/installation/installation.xml b/nixos/doc/manual/installation/installation.xml deleted file mode 100644 index ba07d71d0ca3..000000000000 --- a/nixos/doc/manual/installation/installation.xml +++ /dev/null @@ -1,18 +0,0 @@ -<part xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="ch-installation"> - <title>Installation</title> - <partintro xml:id="ch-installation-intro"> - <para> - This section describes how to obtain, install, and configure NixOS for - first-time use. - </para> - </partintro> - <xi:include href="../from_md/installation/obtaining.chapter.xml" /> - <xi:include href="../from_md/installation/installing.chapter.xml" /> - <xi:include href="../from_md/installation/changing-config.chapter.xml" /> - <xi:include href="../from_md/installation/upgrading.chapter.xml" /> - <xi:include href="../from_md/installation/building-nixos.chapter.xml" /> -</part> diff --git a/nixos/doc/manual/installation/installing.chapter.md b/nixos/doc/manual/installation/installing.chapter.md index e1908017a7e4..cf783c2d22b6 100644 --- a/nixos/doc/manual/installation/installing.chapter.md +++ b/nixos/doc/manual/installation/installing.chapter.md @@ -602,11 +602,11 @@ With a partitioned disk. ## Additional installation notes {#sec-installation-additional-notes} -```{=docbook} -<xi:include href="installing-usb.section.xml" /> -<xi:include href="installing-pxe.section.xml" /> -<xi:include href="installing-kexec.section.xml" /> -<xi:include href="installing-virtualbox-guest.section.xml" /> -<xi:include href="installing-from-other-distro.section.xml" /> -<xi:include href="installing-behind-a-proxy.section.xml" /> +```{=include=} sections +installing-usb.section.md +installing-pxe.section.md +installing-kexec.section.md +installing-virtualbox-guest.section.md +installing-from-other-distro.section.md +installing-behind-a-proxy.section.md ``` diff --git a/nixos/doc/manual/man-configuration.xml b/nixos/doc/manual/man-configuration.xml deleted file mode 100644 index ddb1408fdcf5..000000000000 --- a/nixos/doc/manual/man-configuration.xml +++ /dev/null @@ -1,31 +0,0 @@ -<refentry xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude"> - <refmeta> - <refentrytitle><filename>configuration.nix</filename> - </refentrytitle><manvolnum>5</manvolnum> - <refmiscinfo class="source">NixOS</refmiscinfo> -<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> --> - </refmeta> - <refnamediv> - <refname><filename>configuration.nix</filename></refname> - <refpurpose>NixOS system configuration specification</refpurpose> - </refnamediv> - <refsection> - <title>Description</title> - <para> - The file <filename>/etc/nixos/configuration.nix</filename> contains the - declarative specification of your NixOS system configuration. The command - <command>nixos-rebuild</command> takes this file and realises the system - configuration specified therein. - </para> - </refsection> - <refsection> - <title>Options</title> - <para> - You can use the following options in <filename>configuration.nix</filename>. - </para> - <xi:include href="./generated/options-db.xml" - xpointer="configuration-variable-list" /> - </refsection> -</refentry> diff --git a/nixos/doc/manual/man-pages.xml b/nixos/doc/manual/man-pages.xml index 0186221bddce..52183f1f9ee0 100644 --- a/nixos/doc/manual/man-pages.xml +++ b/nixos/doc/manual/man-pages.xml @@ -14,5 +14,33 @@ <copyright><year>2007-2022</year><holder>Eelco Dolstra and the Nixpkgs/NixOS contributors</holder> </copyright> </info> - <xi:include href="man-configuration.xml" /> + <refentry> + <refmeta> + <refentrytitle><filename>configuration.nix</filename> + </refentrytitle><manvolnum>5</manvolnum> + <refmiscinfo class="source">NixOS</refmiscinfo> + <!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> --> + </refmeta> + <refnamediv> + <refname><filename>configuration.nix</filename></refname> + <refpurpose>NixOS system configuration specification</refpurpose> + </refnamediv> + <refsection> + <title>Description</title> + <para> + The file <filename>/etc/nixos/configuration.nix</filename> contains the + declarative specification of your NixOS system configuration. The command + <command>nixos-rebuild</command> takes this file and realises the system + configuration specified therein. + </para> + </refsection> + <refsection> + <title>Options</title> + <para> + You can use the following options in <filename>configuration.nix</filename>. + </para> + <xi:include href="./generated/options-db.xml" + xpointer="configuration-variable-list" /> + </refsection> + </refentry> </reference> diff --git a/nixos/doc/manual/manual.md b/nixos/doc/manual/manual.md new file mode 100644 index 000000000000..1972eaeda872 --- /dev/null +++ b/nixos/doc/manual/manual.md @@ -0,0 +1,53 @@ +# NixOS Manual {#book-nixos-manual} +## Version @NIXOS_VERSION@ + +<!-- + this is the top-level structure file for the nixos manual. + + the manual structure extends the nixpkgs commonmark further with include + blocks to allow better organization of input text. there are six types of + include blocks: preface, parts, chapters, sections, appendix, and options. + each type except `options`` corresponds to the docbook elements of (roughly) + the same name, and can itself can further include blocks to denote its + substructure. + + non-`options`` include blocks are fenced code blocks that list a number of + files to include, in the form + + ```{=include=} <type> + <file-name-1> + <file-name-2> + <...> + ``` + + `options` include blocks do not list file names but contain a list of key-value + pairs that describe the options to be included and how to convert them into + elements of the manual output type: + + ```{=include=} options + id-prefix: <options id prefix> + list-id: <variable list element id> + source: <path to options.json> + ``` + +--> + +```{=include=} preface +preface.md +``` + +```{=include=} parts +installation/installation.md +configuration/configuration.md +administration/running.md +development/development.md +``` + +```{=include=} chapters +contributing-to-this-manual.chapter.md +``` + +```{=include=} appendix +nixos-options.md +release-notes/release-notes.md +``` diff --git a/nixos/doc/manual/manual.xml b/nixos/doc/manual/manual.xml deleted file mode 100644 index 4440f8e04baa..000000000000 --- a/nixos/doc/manual/manual.xml +++ /dev/null @@ -1,23 +0,0 @@ -<book xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="book-nixos-manual"> - <info> - <title>NixOS Manual</title> - <subtitle>Version <xi:include href="./generated/version" parse="text" /> - </subtitle> - </info> - <xi:include href="preface.xml" /> - <xi:include href="installation/installation.xml" /> - <xi:include href="configuration/configuration.xml" /> - <xi:include href="administration/running.xml" /> - <xi:include href="development/development.xml" /> - <xi:include href="./from_md/contributing-to-this-manual.chapter.xml" /> - <appendix xml:id="ch-options"> - <title>Configuration Options</title> - <xi:include href="./generated/options-db.xml" - xpointer="configuration-variable-list" /> - </appendix> - <xi:include href="release-notes/release-notes.xml" /> -</book> diff --git a/nixos/doc/manual/nixos-options.md b/nixos/doc/manual/nixos-options.md new file mode 100644 index 000000000000..33b487c95a2e --- /dev/null +++ b/nixos/doc/manual/nixos-options.md @@ -0,0 +1,7 @@ +# Configuration Options {#ch-options} + +```{=include=} options +id-prefix: opt- +list-id: configuration-variable-list +source: @NIXOS_OPTIONS_JSON@ +``` diff --git a/nixos/doc/manual/preface.md b/nixos/doc/manual/preface.md new file mode 100644 index 000000000000..d5e6364780a7 --- /dev/null +++ b/nixos/doc/manual/preface.md @@ -0,0 +1,11 @@ +# Preface {#preface} + +This manual describes how to install, use and extend NixOS, a Linux distribution based on the purely functional package management system [Nix](https://nixos.org/nix), that is composed using modules and packages defined in the [Nixpkgs](https://nixos.org/nixpkgs) project. + +Additional information regarding the Nix package manager and the Nixpkgs project can be found in respectively the [Nix manual](https://nixos.org/nix/manual) and the [Nixpkgs manual](https://nixos.org/nixpkgs/manual). + +If you encounter problems, please report them on the [`Discourse`](https://discourse.nixos.org), the [Matrix room](https://matrix.to/#nix:nixos.org), or on the [`#nixos` channel on Libera.Chat](irc://irc.libera.chat/#nixos). Alternatively, consider [contributing to this manual](#chap-contributing). Bugs should be reported in [NixOS’ GitHub issue tracker](https://github.com/NixOS/nixpkgs/issues). + +::: {.note} +Commands prefixed with `#` have to be run as root, either requiring to login as root user or temporarily switching to it using `sudo` for example. +::: diff --git a/nixos/doc/manual/preface.xml b/nixos/doc/manual/preface.xml deleted file mode 100644 index c0d530c3d1b5..000000000000 --- a/nixos/doc/manual/preface.xml +++ /dev/null @@ -1,42 +0,0 @@ -<preface xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xml:id="preface"> - <title>Preface</title> - <para> - This manual describes how to install, use and extend NixOS, a Linux - distribution based on the purely functional package management system - <link xlink:href="https://nixos.org/nix">Nix</link>, that is composed - using modules and packages defined in the - <link xlink:href="https://nixos.org/nixpkgs">Nixpkgs</link> project. - </para> - <para> - Additional information regarding the Nix package manager and the Nixpkgs - project can be found in respectively the - <link xlink:href="https://nixos.org/nix/manual">Nix manual</link> and the - <link xlink:href="https://nixos.org/nixpkgs/manual">Nixpkgs manual</link>. - </para> - <para> - If you encounter problems, please report them on the - <literal - xlink:href="https://discourse.nixos.org">Discourse</literal>, - the <link - xlink:href="https://matrix.to/#nix:nixos.org">Matrix room</link>, - or on the <link - xlink:href="irc://irc.libera.chat/#nixos"> - <literal>#nixos</literal> channel on Libera.Chat</link>. - Alternatively, consider <link - xlink:href="#chap-contributing"> - contributing to this manual</link>. Bugs should be - reported in - <link - xlink:href="https://github.com/NixOS/nixpkgs/issues">NixOS’ - GitHub issue tracker</link>. - </para> - <note> - <para> - Commands prefixed with <literal>#</literal> have to be run as root, either - requiring to login as root user or temporarily switching to it using - <literal>sudo</literal> for example. - </para> - </note> -</preface> diff --git a/nixos/doc/manual/release-notes/release-notes.md b/nixos/doc/manual/release-notes/release-notes.md new file mode 100644 index 000000000000..ac61de3793e8 --- /dev/null +++ b/nixos/doc/manual/release-notes/release-notes.md @@ -0,0 +1,25 @@ +# Release Notes {#ch-release-notes} + +This section lists the release notes for each stable version of NixOS and current unstable revision. + +```{=include=} sections +rl-2305.section.md +rl-2211.section.md +rl-2205.section.md +rl-2111.section.md +rl-2105.section.md +rl-2009.section.md +rl-2003.section.md +rl-1909.section.md +rl-1903.section.md +rl-1809.section.md +rl-1803.section.md +rl-1709.section.md +rl-1703.section.md +rl-1609.section.md +rl-1603.section.md +rl-1509.section.md +rl-1412.section.md +rl-1404.section.md +rl-1310.section.md +``` diff --git a/nixos/doc/manual/release-notes/release-notes.xml b/nixos/doc/manual/release-notes/release-notes.xml deleted file mode 100644 index bb5cc677afb8..000000000000 --- a/nixos/doc/manual/release-notes/release-notes.xml +++ /dev/null @@ -1,30 +0,0 @@ -<appendix xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:xi="http://www.w3.org/2001/XInclude" - version="5.0" - xml:id="ch-release-notes"> - <title>Release Notes</title> - <para> - This section lists the release notes for each stable version of NixOS and - current unstable revision. - </para> - <xi:include href="../from_md/release-notes/rl-2305.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2211.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2205.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2111.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2105.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2009.section.xml" /> - <xi:include href="../from_md/release-notes/rl-2003.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1909.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1903.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1809.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1803.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1709.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1703.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1609.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1603.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1509.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1412.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1404.section.xml" /> - <xi:include href="../from_md/release-notes/rl-1310.section.xml" /> -</appendix> diff --git a/nixos/doc/manual/shell.nix b/nixos/doc/manual/shell.nix deleted file mode 100644 index e5ec9b8f97f7..000000000000 --- a/nixos/doc/manual/shell.nix +++ /dev/null @@ -1,8 +0,0 @@ -let - pkgs = import ../../.. { }; -in -pkgs.mkShell { - name = "nixos-manual"; - - packages = with pkgs; [ xmlformat jing xmloscopy ruby ]; -} diff --git a/nixos/doc/varlistentry-fixer.rb b/nixos/doc/varlistentry-fixer.rb deleted file mode 100755 index 02168016b554..000000000000 --- a/nixos/doc/varlistentry-fixer.rb +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env ruby - -# This script is written intended as a living, evolving tooling -# to fix oopsies within the docbook documentation. -# -# This is *not* a formatter. It, instead, handles some known cases -# where something bad happened, and fixing it manually is tedious. -# -# Read the code to see the different cases it handles. -# -# ALWAYS `make format` after fixing with this! -# ALWAYS read the changes, this tool isn't yet proven to be always right. - -require "rexml/document" -include REXML - -if ARGV.length < 1 then - $stderr.puts "Needs a filename." - exit 1 -end - -filename = ARGV.shift -doc = Document.new(File.open(filename)) - -$touched = false - -# Fixing varnames having a sibling element without spacing. -# This is to fix an initial `xmlformat` issue where `term` -# would mangle as spaces. -# -# <varlistentry> -# <term><varname>types.separatedString</varname><replaceable>sep</replaceable> <---- -# </term> -# ... -# -# Generates: types.separatedStringsep -# ^^^^ -# -# <varlistentry xml:id='fun-makeWrapper'> -# <term> -# <function>makeWrapper</function><replaceable>executable</replaceable><replaceable>wrapperfile</replaceable><replaceable>args</replaceable> <---- -# </term> -# -# Generates: makeWrapperexecutablewrapperfileargs -# ^^^^ ^^^^ ^^ ^^ -# -# <term> -# <option>--option</option><replaceable>name</replaceable><replaceable>value</replaceable> <----- -# </term> -# -# Generates: --optionnamevalue -# ^^ ^^ -doc.elements.each("//varlistentry/term") do |term| - ["varname", "function", "option", "replaceable"].each do |prev_name| - term.elements.each(prev_name) do |el| - if el.next_element and - el.next_element.name == "replaceable" and - el.next_sibling_node.class == Element - then - $touched = true - term.insert_after(el, Text.new(" ")) - end - end - end -end - - - -# <cmdsynopsis> -# <command>nixos-option</command> -# <arg> -# <option>-I</option><replaceable>path</replaceable> <------ -# </arg> -# -# Generates: -Ipath -# ^^ -doc.elements.each("//cmdsynopsis/arg") do |term| - ["option", "replaceable"].each do |prev_name| - term.elements.each(prev_name) do |el| - if el.next_element and - el.next_element.name == "replaceable" and - el.next_sibling_node.class == Element - then - $touched = true - term.insert_after(el, Text.new(" ")) - end - end - end -end - -# <cmdsynopsis> -# <arg> -# <group choice='req'> -# <arg choice='plain'> -# <option>--profile-name</option> -# </arg> -# -# <arg choice='plain'> -# <option>-p</option> -# </arg> -# </group><replaceable>name</replaceable> <---- -# </arg> -# -# Generates: [{--profile-name | -p }name] -# ^^^^ -doc.elements.each("//cmdsynopsis/arg") do |term| - ["group"].each do |prev_name| - term.elements.each(prev_name) do |el| - if el.next_element and - el.next_element.name == "replaceable" and - el.next_sibling_node.class == Element - then - $touched = true - term.insert_after(el, Text.new(" ")) - end - end - end -end - - -if $touched then - doc.context[:attribute_quote] = :quote - doc.write(output: File.open(filename, "w")) -end diff --git a/nixos/modules/services/desktops/pipewire/daemon/pipewire-aes67.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire-aes67.conf.json new file mode 100644 index 000000000000..aaffa93ca964 --- /dev/null +++ b/nixos/modules/services/desktops/pipewire/daemon/pipewire-aes67.conf.json @@ -0,0 +1,38 @@ +{ + "context.properties": {}, + "context.modules": [ + { + "name": "libpipewire-module-rt", + "args": { + "nice.level": -11 + }, + "flags": [ + "ifexists", + "nofail" + ] + }, + { + "name": "libpipewire-module-protocol-native" + }, + { + "name": "libpipewire-module-client-node" + }, + { + "name": "libpipewire-module-adapter" + }, + { + "name": "libpipewire-module-rtp-source", + "args": { + "sap.ip": "239.255.255.255", + "sap.port": 9875, + "sess.latency.msec": 10, + "local.ifname": "eth0", + "stream.props": { + "media.class": "Audio/Source", + "node.virtual": false, + "device.api": "aes67" + } + } + } + ] +} diff --git a/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json index 53fc103d2214..a47abe2213d9 100644 --- a/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json +++ b/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json @@ -3,10 +3,10 @@ "link.max-buffers": 16, "core.daemon": true, "core.name": "pipewire-0", - "default.clock.min-quantum": 16, "vm.overrides": { "default.clock.min-quantum": 1024 - } + }, + "module.x11.bell": true }, "context.spa-libs": { "audio.convert.*": "audioconvert/libspa-audioconvert", @@ -77,6 +77,11 @@ "flags": [ "ifexists", "nofail" + ], + "condition": [ + { + "module.x11.bell": true + } ] } ], diff --git a/nixos/modules/services/web-apps/onlyoffice.nix b/nixos/modules/services/web-apps/onlyoffice.nix index 6a8a28185b5b..3494f2fa21f0 100644 --- a/nixos/modules/services/web-apps/onlyoffice.nix +++ b/nixos/modules/services/web-apps/onlyoffice.nix @@ -270,7 +270,7 @@ in wantedBy = [ "multi-user.target" ]; serviceConfig = { ExecStart = "${cfg.package.fhs}/bin/onlyoffice-wrapper DocService/docservice /run/onlyoffice/config"; - ExecStartPre = onlyoffice-prestart; + ExecStartPre = [ onlyoffice-prestart ]; Group = "onlyoffice"; Restart = "always"; RuntimeDirectory = "onlyoffice"; diff --git a/nixos/release.nix b/nixos/release.nix index 946379bcd661..78a74af41242 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -144,7 +144,6 @@ in rec { manual = manualHTML; # TODO(@oxij): remove eventually manualEpub = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manualEpub)); manpages = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manpages); - manualGeneratedSources = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.generatedSources); options = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux; diff --git a/pkgs/applications/misc/protonup-qt/default.nix b/pkgs/applications/misc/protonup-qt/default.nix new file mode 100644 index 000000000000..72997d1e09a3 --- /dev/null +++ b/pkgs/applications/misc/protonup-qt/default.nix @@ -0,0 +1,33 @@ +{ appimageTools, fetchurl, lib }: +let + pname = "protonup-qt"; + version = "2.7.4"; + src = fetchurl { + url = "https://github.com/DavidoTek/ProtonUp-Qt/releases/download/v${version}/ProtonUp-Qt-${version}-x86_64.AppImage"; + sha256 = "yKc+KOQfqciqULnChVLf6y9npoSYM6Fmu7mYGEKmpkA="; + }; + appimageContents = appimageTools.extractType2 { inherit pname version src; }; +in +appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + mv $out/bin/{${pname}-${version},${pname}} + mkdir -p $out/share/{applications,pixmaps} + cp ${appimageContents}/net.davidotek.pupgui2.desktop $out/share/applications/${pname}.desktop + cp ${appimageContents}/net.davidotek.pupgui2.png $out/share/pixmaps/${pname}.png + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=net.davidotek.pupgui2' 'Exec=${pname}' \ + --replace 'Icon=net.davidotek.pupgui2' 'Icon=${pname}' + ''; + + meta = with lib; { + homepage = "https://davidotek.github.io/protonup-qt/"; + description = "Install and manage Proton-GE and Luxtorpeda for Steam and Wine-GE for Lutris with this graphical user interface."; + license = licenses.gpl3; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + mainProgram = "protonup-qt"; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ ]; + }; +} diff --git a/pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix b/pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix index 64fa0f35e543..c08e12a4de8e 100644 --- a/pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix +++ b/pkgs/applications/networking/cluster/helm/plugins/helm-diff.nix @@ -2,16 +2,18 @@ buildGoModule rec { pname = "helm-diff"; - version = "3.5.0"; + version = "3.6.0"; src = fetchFromGitHub { owner = "databus23"; repo = pname; rev = "v${version}"; - sha256 = "sha256-evFdMM2AilKQPdSCUzKo6RuC4OC4zfjj+JzFvtkSrdk="; + sha256 = "sha256-JeQP2KXoLxkyRZVFcd6Rrz5xyJd+F3plzznAVP3Um8g="; }; - vendorSha256 = "sha256-9i4ryBpaK7mMbsOpIaaZWBRjewD1MtTpf4zJ0yU0KMg="; + vendorSha256 = "sha256-d5NSqCJrk9QhV5gVOKUG/uJxuvt8X8hiQd8yJEoXPL0="; + + ldflags = [ "-s" "-w" "-X github.com/databus23/helm-diff/v3/cmd.Version=${version}" ]; # NOTE: Remove the install and upgrade hooks. postPatch = '' diff --git a/pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix b/pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix index 7d9135045f17..39a03eceacaa 100644 --- a/pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix +++ b/pkgs/applications/networking/cluster/helm/plugins/helm-secrets.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "helm-secrets"; - version = "3.8.3"; + version = "4.2.2"; src = fetchFromGitHub { owner = "jkroepke"; repo = pname; rev = "v${version}"; - hash = "sha256-FpF/d+e5T6nb0OENaYLY+3ATZ+qcAeih5/yKI+AtfKA="; + hash = "sha256-aqRgny1vU+dxpZpzwL4aSbYfTGrZbRffQy81mMBvnJk="; }; nativeBuildInputs = [ makeWrapper ]; @@ -17,9 +17,9 @@ stdenv.mkDerivation rec { # NOTE: helm-secrets is comprised of shell scripts. dontBuild = true; - # NOTE: Remove the install and upgrade hooks. + # NOTE: Fix version string postPatch = '' - sed -i '/^hooks:/,+2 d' plugin.yaml + sed -i 's/^version:.*/version: "${version}"/' plugin.yaml ''; installPhase = '' diff --git a/pkgs/applications/networking/feedreaders/rsstail/default.nix b/pkgs/applications/networking/feedreaders/rsstail/default.nix index 1cd83cda77a9..af2dbd1a9a4f 100644 --- a/pkgs/applications/networking/feedreaders/rsstail/default.nix +++ b/pkgs/applications/networking/feedreaders/rsstail/default.nix @@ -1,18 +1,17 @@ -{ lib, stdenv, fetchFromGitHub, cppcheck, libmrss, libiconv }: +{ lib, stdenv, fetchFromGitHub, libmrss, libiconv }: stdenv.mkDerivation { pname = "rsstail"; version = "2.1"; src = fetchFromGitHub { - sha256 = "12p69i3g1fwlw0bds9jqsdmzkid3k5a41w31d227i7vm12wcvjf6"; - rev = "6f2436185372b3f945a4989406c4b6a934fe8a95"; - repo = "rsstail"; owner = "folkertvanheusden"; + repo = "rsstail"; + rev = "6f2436185372b3f945a4989406c4b6a934fe8a95"; + sha256 = "12p69i3g1fwlw0bds9jqsdmzkid3k5a41w31d227i7vm12wcvjf6"; }; buildInputs = [ libmrss ] ++ lib.optionals stdenv.isDarwin [ libiconv ]; - nativeCheckInputs = [ cppcheck ]; postPatch = '' substituteInPlace Makefile --replace -liconv_hook "" @@ -21,7 +20,8 @@ stdenv.mkDerivation { makeFlags = [ "prefix=$(out)" ]; enableParallelBuilding = true; - doCheck = true; + # just runs cppcheck linter + doCheck = false; meta = with lib; { description = "Monitor RSS feeds for new entries"; @@ -29,7 +29,7 @@ stdenv.mkDerivation { RSSTail is more or less an RSS reader: it monitors an RSS feed and if it detects a new entry it'll emit only that new entry. ''; - homepage = "http://www.vanheusden.com/rsstail/"; + homepage = "https://www.vanheusden.com/rsstail/"; license = licenses.gpl2Plus; maintainers = [ maintainers.Necior ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/flexget/default.nix b/pkgs/applications/networking/flexget/default.nix index dca8f277867a..818ceb74ea0c 100644 --- a/pkgs/applications/networking/flexget/default.nix +++ b/pkgs/applications/networking/flexget/default.nix @@ -5,7 +5,7 @@ python3Packages.buildPythonApplication rec { pname = "flexget"; - version = "3.5.23"; + version = "3.5.24"; format = "pyproject"; # Fetch from GitHub in order to use `requirements.in` @@ -13,7 +13,7 @@ python3Packages.buildPythonApplication rec { owner = "flexget"; repo = "flexget"; rev = "refs/tags/v${version}"; - hash = "sha256-VWpcXwiQHpQ3X/rmm6fWfPfuUoUmWQMfOq5A87nED3A="; + hash = "sha256-4RQBaqC3nmyEq9Kqg0n9KIN9Gw4Z+uCl6hQeqo/NTls="; }; postPatch = '' diff --git a/pkgs/applications/networking/instant-messengers/webex/default.nix b/pkgs/applications/networking/instant-messengers/webex/default.nix index f28cc3c25f6e..1c2c3eb9fec7 100644 --- a/pkgs/applications/networking/instant-messengers/webex/default.nix +++ b/pkgs/applications/networking/instant-messengers/webex/default.nix @@ -55,11 +55,11 @@ stdenv.mkDerivation rec { pname = "webex"; - version = "42.10.0.24000"; + version = "42.12.0.24485"; src = fetchurl { - url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Gold/20221019145240/Webex_ubuntu.7z"; - sha256 = "03b77a3fcce76f04cf684bcdecb3bcce97c5a8b6cc36b40967cc14fa9a46c102"; + url = "https://binaries.webex.com/WebexDesktop-Ubuntu-Gold/20221206141837/Webex_ubuntu.7z"; + sha256 = "4c09c13b760abbdcc8bc1a74d137f8bc23386da4425cbefd8ea75bd0a877fdbf"; }; buildInputs = [ diff --git a/pkgs/applications/science/biology/nest/default.nix b/pkgs/applications/science/biology/nest/default.nix new file mode 100644 index 000000000000..01874763901b --- /dev/null +++ b/pkgs/applications/science/biology/nest/default.nix @@ -0,0 +1,70 @@ +{ lib +, stdenv +, fetchFromGitHub +, testers +, cmake +, gsl +, libtool +, mpi +, nest +, pkg-config +, python3 +, readline +, autoPatchelfHook +, withPython ? false +, withMpi ? false +}: + +stdenv.mkDerivation rec { + pname = "nest"; + version = "3.3"; + + src = fetchFromGitHub { + owner = "nest"; + repo = "nest-simulator"; + rev = "v${version}"; + sha256 = "sha256-wmn5LOOHlSuyPdV6O6v7j10dxdcvqpym6MfveZdL+dU="; + }; + + postPatch = '' + patchShebangs cmake/CheckFiles/check_return_val.sh + # fix PyNEST installation path + # it expects CMAKE_INSTALL_LIBDIR to be relative + substituteInPlace cmake/ProcessOptions.cmake \ + --replace "\''${CMAKE_INSTALL_LIBDIR}/python" "lib/python" + ''; + + nativeBuildInputs = [ + cmake + pkg-config + autoPatchelfHook + ]; + + buildInputs = [ + gsl + readline + libtool # libltdl + ] ++ lib.optionals withPython [ + python3 + python3.pkgs.cython + ] ++ lib.optional withMpi mpi; + + cmakeFlags = [ + "-Dwith-python=${if withPython then "ON" else "OFF"}" + "-Dwith-mpi=${if withMpi then "ON" else "OFF"}" + "-Dwith-openmp=${if stdenv.isDarwin then "OFF" else "ON"}" + ]; + + passthru.tests.version = testers.testVersion { + package = nest; + command = "nest --version"; + }; + + meta = with lib; { + description = "NEST is a command line tool for simulating neural networks"; + homepage = "https://www.nest-simulator.org/"; + license = licenses.gpl2; + maintainers = with maintainers; [ jiegec ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/version-management/fnc/default.nix b/pkgs/applications/version-management/fnc/default.nix index 7fd1b34d4560..b74200a6919c 100644 --- a/pkgs/applications/version-management/fnc/default.nix +++ b/pkgs/applications/version-management/fnc/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { makeFlags = [ "PREFIX=$(out)" ]; - NIX_CFLAGS_COMPILE = [ + NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ # Needed with GCC 12 "-Wno-error=maybe-uninitialized" ]; diff --git a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix index ba0e8a818263..c156ac288b66 100644 --- a/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix +++ b/pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nix @@ -8,6 +8,7 @@ , wayland-scanner , obs-studio , libX11 +, libxcb , vulkan-headers , vulkan-loader , libGL @@ -35,6 +36,7 @@ stdenv.mkDerivation rec { buildInputs = [ libGL libX11 + libxcb vulkan-headers vulkan-loader wayland diff --git a/pkgs/development/libraries/hunspell/dictionaries.nix b/pkgs/development/libraries/hunspell/dictionaries.nix index 3eee425d4be8..09d68fa0199d 100644 --- a/pkgs/development/libraries/hunspell/dictionaries.nix +++ b/pkgs/development/libraries/hunspell/dictionaries.nix @@ -1,6 +1,6 @@ /* hunspell dictionaries */ -{ lib, stdenv, fetchurl, fetchFromGitHub, unzip, coreutils, bash, which, zip, ispell, perl, hunspell }: +{ lib, stdenv, fetchurl, fetchzip, fetchFromGitHub, unzip, coreutils, bash, which, zip, ispell, perl, hunspell }: let @@ -878,4 +878,28 @@ rec { shortDescription = "Norwegian Nynorsk (Norway)"; license = with lib.licenses; [ gpl2Only ]; }; + + /* TOKI PONA */ + + tok = mkDict rec { + pname = "hunspell-dict-tok"; + version = "20220829"; + dictFileName = "tok"; + readmeFile = "README.en.adoc"; + + src = fetchzip { + url = "https://github.com/somasis/hunspell-tok/releases/download/${version}/hunspell-tok-${version}.tar.gz"; + sha256 = "sha256-RiAODKXPUeIcf8IFcU6Tacehq5S8GYuPTuxEiN2CXD0="; + }; + + dontBuild = true; + + meta = with lib; { + description = "Hunspell dictionary for Toki Pona"; + homepage = "https://github.com/somasis/hunspell-tok"; + license = with lib.licenses; [ cc0 publicDomain cc-by-sa-30 cc-by-sa-40 ]; + maintainers = with maintainers; [ somasis ]; + platforms = platforms.all; + }; + }; } diff --git a/pkgs/development/libraries/migraphx/default.nix b/pkgs/development/libraries/migraphx/default.nix index 27caa1f94137..15581e00e528 100644 --- a/pkgs/development/libraries/migraphx/default.nix +++ b/pkgs/development/libraries/migraphx/default.nix @@ -7,7 +7,6 @@ , rocm-cmake , hip , clang-tools-extra -, cppcheck , openmp , rocblas , rocmlir @@ -70,7 +69,6 @@ in stdenv.mkDerivation (finalAttrs: { rocm-cmake hip clang-tools-extra - cppcheck python3Packages.python ] ++ lib.optionals buildDocs [ latex diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index 53d465542b2b..29db9019b11c 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -61,6 +61,8 @@ , x11Support ? true , libcanberra , xorg +, mysofaSupport ? true +, libmysofa }: let @@ -68,7 +70,7 @@ let self = stdenv.mkDerivation rec { pname = "pipewire"; - version = "0.3.65"; + version = "0.3.66"; outputs = [ "out" @@ -86,7 +88,7 @@ let owner = "pipewire"; repo = "pipewire"; rev = version; - sha256 = "sha256-O5nu58QFlOPTaN4qNi50Wp9acxM6dWNy63BD+AnVl5w="; + sha256 = "sha256-qx4mgNRhMdha+8ap+FhVfxpsHE9TcTx29uwQIHLyMHA="; }; patches = [ @@ -102,20 +104,6 @@ let ./0090-pipewire-config-template-paths.patch # Place SPA data files in lib output to avoid dependency cycles ./0095-spa-data-dir.patch - - # backport a fix to actually install the new module - # FIXME: remove after 0.3.66 - (fetchpatch { - url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/fba7083f8ceb210c7c20aceafeb5c9a8767cf705.patch"; - hash = "sha256-aZQ4OzK0B5YPq+jQNygxPE0coG2qB0ukbYzyI8E24XM="; - }) - - # backport a fix for rust-cbindgen errors in downstream packages - # See https://github.com/NixOS/nixpkgs/pull/211872#issuecomment-1415981135 for details. - (fetchpatch { - url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/caf58ecffb4dc8e2bfa7898d0ed910cf0a82d65f.patch"; - hash = "sha256-kCQNG0j3lwT01WNfGsdUmKvDHg8tvMfS2eunPyXBV1E="; - }) ]; strictDeps = true; @@ -153,7 +141,8 @@ let ++ lib.optional zeroconfSupport avahi ++ lib.optional raopSupport openssl ++ lib.optional rocSupport roc-toolkit - ++ lib.optionals x11Support [ libcanberra xorg.libX11 xorg.libXfixes ]; + ++ lib.optionals x11Support [ libcanberra xorg.libX11 xorg.libXfixes ] + ++ lib.optional mysofaSupport libmysofa; # Valgrind binary is required for running one optional test. nativeCheckInputs = lib.optional withValgrind valgrind; @@ -188,7 +177,9 @@ let "-Dsession-managers=" "-Dvulkan=enabled" "-Dx11=${mesonEnableFeature x11Support}" + "-Dlibmysofa=${mesonEnableFeature mysofaSupport}" "-Dsdl2=disabled" # required only to build examples, causes dependency loop + "-Drlimits-install=false" # installs to /etc, we won't use this anyway ]; # Fontconfig error: Cannot load default config file @@ -239,6 +230,7 @@ let "nix-support/jack.conf.json" "nix-support/minimal.conf.json" "nix-support/pipewire.conf.json" + "nix-support/pipewire-aes67.conf.json" "nix-support/pipewire-pulse.conf.json" ]; paths-lib = [ diff --git a/pkgs/development/libraries/sqlitecpp/default.nix b/pkgs/development/libraries/sqlitecpp/default.nix index f4b2ee9e9a95..aad1ee34e5c4 100644 --- a/pkgs/development/libraries/sqlitecpp/default.nix +++ b/pkgs/development/libraries/sqlitecpp/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, sqlite, cppcheck, gtest }: +{ lib, stdenv, fetchFromGitHub, cmake, sqlite, gtest }: stdenv.mkDerivation rec { pname = "sqlitecpp"; @@ -12,7 +12,6 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake ]; - nativeCheckInputs = [ cppcheck ]; buildInputs = [ sqlite gtest ]; doCheck = true; diff --git a/pkgs/development/libraries/tbb/default.nix b/pkgs/development/libraries/tbb/default.nix index e0c48bc6dcef..ec22952cc42b 100644 --- a/pkgs/development/libraries/tbb/default.nix +++ b/pkgs/development/libraries/tbb/default.nix @@ -101,6 +101,6 @@ stdenv.mkDerivation rec { details and threading mechanisms for scalability and performance. ''; platforms = platforms.unix; - maintainers = with maintainers; [ thoughtpolice dizfer ]; + maintainers = with maintainers; [ thoughtpolice ]; }; } diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix index fdefeb86a046..73073a6b7117 100644 --- a/pkgs/development/libraries/webkitgtk/default.nix +++ b/pkgs/development/libraries/webkitgtk/default.nix @@ -69,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "webkitgtk"; - version = "2.38.4"; + version = "2.38.5"; name = "${finalAttrs.pname}-${finalAttrs.version}+abi=${if lib.versionAtLeast gtk3.version "4.0" then "5.0" else "4.${if lib.versions.major libsoup.version == "2" then "0" else "1"}"}"; outputs = [ "out" "dev" "devdoc" ]; @@ -80,7 +80,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "https://webkitgtk.org/releases/webkitgtk-${finalAttrs.version}.tar.xz"; - hash = "sha256-T0fqKaLU1fFe7z3J4tbG8Gfo3oY6P2RFXhzPlpPMHTY="; + hash = "sha256-QMIMQwIidN9Yk/IrEFT6iUw+6gVzibsIruCMWwuwwac="; }; patches = lib.optionals stdenv.isLinux [ diff --git a/pkgs/development/python-modules/ansible-doctor/default.nix b/pkgs/development/python-modules/ansible-doctor/default.nix index 0ddd26b7ffb4..96f381f56d03 100644 --- a/pkgs/development/python-modules/ansible-doctor/default.nix +++ b/pkgs/development/python-modules/ansible-doctor/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "ansible-doctor"; - version = "2.0.0"; + version = "2.0.1"; format = "pyproject"; disabled = pythonOlder "3.7"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "thegeeklab"; repo = "ansible-doctor"; rev = "refs/tags/v${version}"; - hash = "sha256-P2PC90coR+FpQkO+SUon72bDLTYJhZ5qbcOdCKuFFwE="; + hash = "sha256-xUg7+7oWxIVdKLOGIE1uxh7SSjkz/w0//OyMF1HhEJk="; }; pythonRelaxDeps = true; diff --git a/pkgs/development/python-modules/arcam-fmj/default.nix b/pkgs/development/python-modules/arcam-fmj/default.nix index 1169e1ca341f..7cba156bd684 100644 --- a/pkgs/development/python-modules/arcam-fmj/default.nix +++ b/pkgs/development/python-modules/arcam-fmj/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "arcam-fmj"; - version = "1.2.0"; + version = "1.2.1"; format = "setuptools"; disabled = pythonOlder "3.8"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "elupus"; repo = "arcam_fmj"; rev = "refs/tags/${version}"; - hash = "sha256-stoxDb25K/h55rwR0faWO0AOjSJmjZNbMbOAuUE2iSM="; + hash = "sha256-nRInKju3Q4En+SiSl6DOeeTRK56TzKPweoVXsvzs45I="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/brian2/default.nix b/pkgs/development/python-modules/brian2/default.nix new file mode 100644 index 000000000000..52149b883060 --- /dev/null +++ b/pkgs/development/python-modules/brian2/default.nix @@ -0,0 +1,53 @@ +{ lib +, buildPythonPackage +, fetchPypi +, cython +, jinja2 +, numpy +, pyparsing +, setuptools +, sympy +, pytest +, pytest-xdist +, python +}: + +buildPythonPackage rec { + pname = "brian2"; + version = "2.5.1"; + + src = fetchPypi { + pname = "Brian2"; + inherit version; + sha256 = "sha256-x1EcS7PFCsjPYsq3Lt87SJRW4J5DE/OfdFs3NuyHiLw="; + }; + + propagatedBuildInputs = [ + cython + jinja2 + numpy + pyparsing + setuptools + sympy + ]; + + checkInputs = [ + pytest + pytest-xdist + ]; + + checkPhase = '' + runHook preCheck + # Cython cache lies in home directory + export HOME=$(mktemp -d) + cd $HOME && ${python.interpreter} -c "import brian2;assert brian2.test()" + runHook postCheck + ''; + + meta = with lib; { + description = "A clock-driven simulator for spiking neural networks"; + homepage = "https://briansimulator.org/"; + license = licenses.cecill21; + maintainers = with maintainers; [ jiegec ]; + }; +} diff --git a/pkgs/development/python-modules/elastic-apm/default.nix b/pkgs/development/python-modules/elastic-apm/default.nix index 0f44f7b8fb02..b7286ad39c26 100644 --- a/pkgs/development/python-modules/elastic-apm/default.nix +++ b/pkgs/development/python-modules/elastic-apm/default.nix @@ -1,5 +1,4 @@ { lib -, asynctest , aiohttp , blinker , buildPythonPackage @@ -30,7 +29,7 @@ buildPythonPackage rec { pname = "elastic-apm"; - version = "6.14.0"; + version = "6.15.0"; format = "setuptools"; disabled = pythonOlder "3.8"; @@ -39,7 +38,7 @@ buildPythonPackage rec { owner = "elastic"; repo = "apm-agent-python"; rev = "refs/tags/v${version}"; - hash = "sha256-T1TWILlJZffTISVt8YSi8ZYSXOHieh6SV55j8W333LQ="; + hash = "sha256-Uoybe6Mx7ZLs2GaOnl278Xj6KlTEgrOuNxMRmPpSq8k="; }; propagatedBuildInputs = [ @@ -54,22 +53,18 @@ buildPythonPackage rec { ]; nativeCheckInputs = [ - pytestCheckHook - ]; - - checkInputs = [ - asynctest ecs-logging + httpx jinja2 jsonschema Logbook mock - httpx pytest-asyncio pytest-bdd - pytest-mock pytest-localserver + pytest-mock pytest-random-order + pytestCheckHook sanic-testing structlog webob diff --git a/pkgs/development/python-modules/oslo-serialization/default.nix b/pkgs/development/python-modules/oslo-serialization/default.nix index a94c79e9baf6..bb2cfbea90ad 100644 --- a/pkgs/development/python-modules/oslo-serialization/default.nix +++ b/pkgs/development/python-modules/oslo-serialization/default.nix @@ -11,12 +11,12 @@ buildPythonPackage rec { pname = "oslo-serialization"; - version = "5.0.0"; + version = "5.1.0"; src = fetchPypi { pname = "oslo.serialization"; inherit version; - sha256 = "sha256-KEUyjQ9H3Ioj/tKoIlPpCs/wqnMdvSTzec+OUObMZro="; + sha256 = "sha256-pIR98yaBwahL0TotunpuydW0SITeYyUhGS9tx1DOCYQ="; }; postPatch = '' diff --git a/pkgs/development/python-modules/pynvml/default.nix b/pkgs/development/python-modules/pynvml/default.nix index 8f02bcdbe816..bad74b2aed9c 100644 --- a/pkgs/development/python-modules/pynvml/default.nix +++ b/pkgs/development/python-modules/pynvml/default.nix @@ -9,12 +9,12 @@ buildPythonPackage rec { pname = "pynvml"; - version = "11.4.1"; + version = "11.5.0"; disabled = pythonOlder "3.6"; src = fetchPypi { inherit pname version; - sha256 = "b2e4a33b80569d093b513f5804db0c7f40cfc86f15a013ae7a8e99c5e175d5dd"; + sha256 = "sha256-0CeyG5WxCIufwngRf59ht8Z/jjOnh+n4P3NfD3GsMtA="; }; patches = [ diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix index 76c3956ec86b..598bbc41deee 100644 --- a/pkgs/development/python-modules/selenium/default.nix +++ b/pkgs/development/python-modules/selenium/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "selenium"; - version = "4.7.0"; + version = "4.8.0"; format = "setuptools"; disabled = pythonOlder "3.7"; @@ -23,7 +23,7 @@ buildPythonPackage rec { repo = "selenium"; # check if there is a newer tag with or without -python suffix rev = "refs/tags/selenium-${version}"; - hash = "sha256-7inmi8dHi6So+8AbLq85Go/GEaiV1XK/7+wt9UkTdo8="; + hash = "sha256-YTi6SNtTWuEPlQ3PTeis9osvtnWmZ7SRQbne9fefdco="; }; postPatch = '' diff --git a/pkgs/development/python-modules/simpleeval/default.nix b/pkgs/development/python-modules/simpleeval/default.nix index 28e5c2578602..57693fb3791c 100644 --- a/pkgs/development/python-modules/simpleeval/default.nix +++ b/pkgs/development/python-modules/simpleeval/default.nix @@ -7,14 +7,14 @@ buildPythonPackage rec { pname = "simpleeval"; - version = "0.9.12"; + version = "0.9.13"; format = "pyproject"; src = fetchFromGitHub { owner = "danthedeckie"; repo = pname; - rev = version; - sha256 = "0khgl729q5133fgc00d550f4r77707rkkn7r56az4v8bvx0q8xp4"; + rev = "refs/tags/${version}"; + hash = "sha256-I1GILYPE6OyotgRe0Ek/iHHv6q9/b/MlcTxMAtfZD80="; }; nativeBuildInputs = [ @@ -36,6 +36,7 @@ buildPythonPackage rec { meta = with lib; { description = "Simple, safe single expression evaluator library"; homepage = "https://github.com/danthedeckie/simpleeval"; + changelog = "https://github.com/danthedeckie/simpleeval/releases/tag/${version}"; license = licenses.mit; maintainers = with maintainers; [ johbo ]; }; diff --git a/pkgs/development/tools/rust/cargo-valgrind/default.nix b/pkgs/development/tools/rust/cargo-valgrind/default.nix index af7abb9a1abf..7b0647c14c45 100644 --- a/pkgs/development/tools/rust/cargo-valgrind/default.nix +++ b/pkgs/development/tools/rust/cargo-valgrind/default.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage rec { pname = "cargo-valgrind"; - version = "2.1.0"; + version = "2.1.1"; src = fetchFromGitHub { owner = "jfrimmel"; repo = "cargo-valgrind"; rev = "v${version}"; - sha256 = "sha256-FCz15kMSKckifYWSTMGqJbRpZ8X/AM5dSw46dg8ERcY="; + sha256 = "sha256-l/1paghG/ARD0JfzNh0xj2UD5kW6FddM8Xrd/FCygYc="; }; - cargoSha256 = "sha256-csSUe2qUIN2xKOMHWyM56FZyCwKPdfAI0NrFiDOtRiE="; + cargoSha256 = "sha256-9/kIIZDIsOhUvRT3TyXN5PGFUB+a8m2yXmzBbsPUK28="; passthru = { updateScript = nix-update-script { }; diff --git a/pkgs/development/web/nodejs/v14.nix b/pkgs/development/web/nodejs/v14.nix index 4563dd7a045a..e7dec1c12f66 100644 --- a/pkgs/development/web/nodejs/v14.nix +++ b/pkgs/development/web/nodejs/v14.nix @@ -8,7 +8,7 @@ let in buildNodejs { inherit enableNpm; - version = "14.21.2"; - sha256 = "00zzl43iis8mr8x48hww5ncj8mj5dmpn05rq7ihpffkp2q7rmw6q"; + version = "14.21.3"; + sha256 = "sha256-RY7AkuYK1wDdzwectj1DXBXaTHuz0/mbmo5YqZ5UB14="; patches = lib.optional stdenv.isDarwin ./bypass-xcodebuild.diff; } diff --git a/pkgs/development/web/nodejs/v16.nix b/pkgs/development/web/nodejs/v16.nix index c8241ababc0d..725bbc690df1 100644 --- a/pkgs/development/web/nodejs/v16.nix +++ b/pkgs/development/web/nodejs/v16.nix @@ -10,8 +10,8 @@ let in buildNodejs { inherit enableNpm; - version = "16.19.0"; - sha256 = "01k72p0hp4lhlpz1syd9cbkm2gpfww0hn10xdpmzd4i3x8dfq7sg"; + version = "16.19.1"; + sha256 = "sha256-F/txZAYZgSWzDJTdPRdWIHspdwViav4W2NxHmmWh2LU="; patches = [ ./disable-darwin-v8-system-instrumentation.patch ./bypass-darwin-xcrun-node16.patch diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix index 86accf5977b3..2a5a5ae3f677 100644 --- a/pkgs/development/web/nodejs/v18.nix +++ b/pkgs/development/web/nodejs/v18.nix @@ -9,8 +9,8 @@ let in buildNodejs { inherit enableNpm; - version = "18.14.0"; - sha256 = "sha256-Qu+d0xmT1cjoKwqwlpE1CT5qKW76J7G+mvwErADwJno="; + version = "18.14.1"; + sha256 = "sha256-7sNTQ4Jm/QrvU6lEa+ELMu5udNCOMt1UVLOC/2eT2gQ="; patches = [ ./disable-darwin-v8-system-instrumentation.patch ./bypass-darwin-xcrun-node16.patch diff --git a/pkgs/development/web/nodejs/v19.nix b/pkgs/development/web/nodejs/v19.nix index 85739c36c132..f344324291c3 100644 --- a/pkgs/development/web/nodejs/v19.nix +++ b/pkgs/development/web/nodejs/v19.nix @@ -9,8 +9,8 @@ let in buildNodejs { inherit enableNpm; - version = "19.6.0"; - sha256 = "sha256-UZxtVCqfmW8AwaPTsuXPUrfbmY2V9s7VqJPRagPeM+o="; + version = "19.6.1"; + sha256 = "sha256-dxDmwoUclWvkkm/CVAZ48/3fjm04Juo6qbjCjW6omps="; patches = [ ./revert-arm64-pointer-auth.patch ./disable-darwin-v8-system-instrumentation-node19.patch diff --git a/pkgs/games/freeorion/default.nix b/pkgs/games/freeorion/default.nix index 5b4407038015..9f9075d75a4d 100644 --- a/pkgs/games/freeorion/default.nix +++ b/pkgs/games/freeorion/default.nix @@ -5,8 +5,7 @@ , doxygen , graphviz , makeWrapper -, cppcheck -, boost16x +, boost17x , SDL2 , python3 , freetype @@ -24,8 +23,8 @@ }: stdenv.mkDerivation rec { - version = "0.4.10.2"; pname = "freeorion"; + version = "0.4.10.2"; src = fetchFromGitHub { owner = "freeorion"; @@ -35,7 +34,7 @@ stdenv.mkDerivation rec { }; buildInputs = [ - (boost16x.override { enablePython = true; python = python3; }) + (boost17x.override { enablePython = true; python = python3; }) (python3.withPackages (p: with p; [ pycodestyle ])) SDL2 freetype @@ -53,7 +52,6 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake - cppcheck doxygen graphviz makeWrapper @@ -81,7 +79,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "A free, open source, turn-based space empire and galactic conquest (4X) computer game"; - homepage = "http://www.freeorion.org"; + homepage = "https://www.freeorion.org/"; license = with licenses; [ gpl2 cc-by-sa-30 ]; platforms = platforms.linux; maintainers = with maintainers; [ tex ]; diff --git a/pkgs/misc/wiki-tui/default.nix b/pkgs/misc/wiki-tui/default.nix index 9131f66491d5..332577489faf 100644 --- a/pkgs/misc/wiki-tui/default.nix +++ b/pkgs/misc/wiki-tui/default.nix @@ -10,13 +10,13 @@ rustPlatform.buildRustPackage rec { pname = "wiki-tui"; - version = "0.6.1"; + version = "0.6.3"; src = fetchFromGitHub { owner = "Builditluc"; repo = pname; rev = "v${version}"; - hash = "sha256-WiyRBF3rWLpOZ8mxT89ImRL++Oq9+b88oSKjr4tzCGs="; + hash = "sha256-vBfD5SQnVx/UqRoyGJc4PINW/wKuHjpiUEz3WiRCR9A="; }; nativeBuildInputs = [ @@ -30,7 +30,7 @@ rustPlatform.buildRustPackage rec { Security ]; - cargoHash = "sha256-R9xxIDqkU7FeulpD7PUM6aHgA67PVgqxHKYtdrjdaUo="; + cargoHash = "sha256-xbjUdQs2t+cjplAlNVRN1Zw5CeAYv4+ir4Pvrt+/n9k="; meta = with lib; { description = "A simple and easy to use Wikipedia Text User Interface"; diff --git a/pkgs/servers/sql/rqlite/default.nix b/pkgs/servers/sql/rqlite/default.nix new file mode 100644 index 000000000000..713072953be2 --- /dev/null +++ b/pkgs/servers/sql/rqlite/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildGoModule +, fetchFromGitHub +}: + +buildGoModule rec { + pname = "rqlite"; + version = "7.6.1"; + + src = fetchFromGitHub { + owner = "rqlite"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-WvEnMAz3dKG8xMlQzm7E0TmAgvsrRED50bb4Ved1+4U="; + }; + + vendorSha256 = "sha256-qirt5g7dcjAnceejrBnfhDpA4LSEj7eOuznSlfUBUgo="; + + subPackages = [ "cmd/rqlite" "cmd/rqlited" "cmd/rqbench" ]; + + # Leaving other flags from https://github.com/rqlite/rqlite/blob/master/package.sh + # since automatically retriving those is nontrivial and inessential + ldflags = [ + "-s" "-w" + "-X github.com/rqlite/rqlite/cmd.Version=${src.rev}" + ]; + + # Tests are in a different subPackage which fails trying to access the network + doCheck = false; + + meta = with lib; { + description = "The lightweight, distributed relational database built on SQLite"; + homepage = "https://github.com/rqlite/rqlite"; + license = licenses.mit; + maintainers = with maintainers; [ dit7ya ]; + }; +} diff --git a/pkgs/servers/traefik/default.nix b/pkgs/servers/traefik/default.nix index 60eb9a22a829..4bc0a230d3cc 100644 --- a/pkgs/servers/traefik/default.nix +++ b/pkgs/servers/traefik/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "traefik"; - version = "2.9.6"; + version = "2.9.8"; # Archive with static assets for webui src = fetchzip { url = "https://github.com/traefik/traefik/releases/download/v${version}/traefik-v${version}.src.tar.gz"; - sha256 = "sha256-T1yJT45bCjGizS6bqkzc6EF9uhJ3dhXsSc5X3di6SJ4="; + sha256 = "sha256-3vrMh0zrJQhIG9VAlG/iHlOVlUFlE4qd0EkOB0ckAtY="; stripRoot = false; }; - vendorSha256 = "sha256-g/UL+cUenWW94afWIGFU2fBSpo48YcUIUaX/1M5vhNk="; + vendorSha256 = "sha256-NyI+3wYRZ3L98qwrkDfrbJK4S+Wdx/UJ8FlLAMhaL7A="; subPackages = [ "cmd/traefik" ]; diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index f99632fac2de..09771083f1c4 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -20,11 +20,11 @@ buildPythonPackage rec { # The websites yt-dlp deals with are a very moving target. That means that # downloads break constantly. Because of that, updates should always be backported # to the latest stable release. - version = "2023.1.6"; + version = "2023.2.17"; src = fetchPypi { inherit pname version; - sha256 = "sha256-Ong6NnUc7RY2j0CzuoZas5swaJ7YBW8e4jRqo4OaCw8="; + sha256 = "sha256-mvkt5e/8GTvbUSFtnr8oh02WGA0gL651Kw2fKmM4Dzo="; }; propagatedBuildInputs = [ brotli certifi mutagen pycryptodomex websockets ]; diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/__init__.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/__init__.py index 67d7bce0047d..56b68ba27a53 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/__init__.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/__init__.py @@ -29,9 +29,9 @@ def pretty_print_exc(e: BaseException, *, _desc_text: str = "error") -> None: print(textwrap.indent(extra_info, "\t"), file=sys.stderr, end="") else: print(e) - if e.__context__ is not None: + if e.__cause__ is not None: print("", file=sys.stderr) - pretty_print_exc(e.__context__, _desc_text="caused by") + pretty_print_exc(e.__cause__, _desc_text="caused by") def main() -> None: parser = argparse.ArgumentParser(description='render nixos manual bits') diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py index b3728645f75f..28ab53720936 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/docbook.py @@ -28,6 +28,9 @@ class Deflist: class Heading(NamedTuple): container_tag: str level: int + # special handling for <part> titles: whether partinfo was already closed from elsewhere + # or still needs closing. + partintro_closed: bool = False class DocBookRenderer(Renderer): __output__ = "docbook" @@ -251,7 +254,17 @@ class DocBookRenderer(Renderer): return result + f'<{tag}{attrs_str}>\n<title>' def heading_close(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: - return '</title>' + heading = self._headings[-1] + result = '</title>' + if heading.container_tag == 'part': + # generate the same ids as were previously assigned manually. if this collides we + # rely on outside schema validation to catch it! + maybe_id = "" + assert tokens[i - 2].type == 'heading_open' + if id := cast(str, tokens[i - 2].attrs.get('id', "")): + maybe_id = " xml:id=" + quoteattr(id + "-intro") + result += f"<partintro{maybe_id}>" + return result def example_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: if id := token.attrs.get('id'): @@ -266,8 +279,10 @@ class DocBookRenderer(Renderer): result = [] while len(self._headings): if level is None or self._headings[-1].level >= level: - result.append(f"</{self._headings[-1].container_tag}>") - self._headings.pop() + heading = self._headings.pop() + if heading.container_tag == 'part' and not heading.partintro_closed: + result.append("</partintro>") + result.append(f"</{heading.container_tag}>") else: break return "\n".join(result) diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual.py index ab61d699d7f5..efc8b02e8d6b 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/manual.py @@ -2,68 +2,107 @@ import argparse import json from abc import abstractmethod -from collections.abc import MutableMapping, Sequence +from collections.abc import Mapping, MutableMapping, Sequence from pathlib import Path from typing import Any, cast, NamedTuple, Optional, Union from xml.sax.saxutils import escape, quoteattr + +import markdown_it from markdown_it.token import Token from markdown_it.utils import OptionsDict -from .docbook import DocBookRenderer +from . import options +from .docbook import DocBookRenderer, Heading from .md import Converter -class RenderedSection: - id: Optional[str] - chapters: list[str] - - def __init__(self, id: Optional[str]) -> None: - self.id = id - self.chapters = [] - -class BaseConverter(Converter): - _sections: list[RenderedSection] - - def __init__(self, manpage_urls: dict[str, str]): - super().__init__(manpage_urls) - self._sections = [] - - def add_section(self, id: Optional[str], chapters: list[Path]) -> None: - self._sections.append(RenderedSection(id)) - for chpath in chapters: - try: - with open(chpath, 'r') as f: - self._md.renderer._title_seen = False # type: ignore[attr-defined] - self._sections[-1].chapters.append(self._render(f.read())) - except Exception as e: - raise RuntimeError(f"failed to render manual chapter {chpath}") from e - - @abstractmethod - def finalize(self) -> str: raise NotImplementedError() - class ManualDocBookRenderer(DocBookRenderer): - # needed to check correctness of chapters. - # we may want to use front matter instead of this kind of heuristic. - _title_seen = False + _toplevel_tag: str + + def __init__(self, toplevel_tag: str, manpage_urls: Mapping[str, str], + parser: Optional[markdown_it.MarkdownIt] = None): + super().__init__(manpage_urls, parser) + self._toplevel_tag = toplevel_tag + self.rules |= { + 'included_sections': lambda *args: self._included_thing("section", *args), + 'included_chapters': lambda *args: self._included_thing("chapter", *args), + 'included_preface': lambda *args: self._included_thing("preface", *args), + 'included_parts': lambda *args: self._included_thing("part", *args), + 'included_appendix': lambda *args: self._included_thing("appendix", *args), + 'included_options': self.included_options, + } + + def render(self, tokens: Sequence[Token], options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + wanted = { 'h1': 'title' } + wanted |= { 'h2': 'subtitle' } if self._toplevel_tag == 'book' else {} + for (i, (tag, kind)) in enumerate(wanted.items()): + if len(tokens) < 3 * (i + 1): + raise RuntimeError(f"missing {kind} ({tag}) heading") + token = tokens[3 * i] + if token.type != 'heading_open' or token.tag != tag: + assert token.map + raise RuntimeError(f"expected {kind} ({tag}) heading in line {token.map[0] + 1}", token) + for t in tokens[3 * len(wanted):]: + if t.type != 'heading_open' or (info := wanted.get(t.tag)) is None: + continue + assert t.map + raise RuntimeError( + f"only one {info[0]} heading ({t.markup} [text...]) allowed per " + f"{self._toplevel_tag}, but found a second in lines [{t.map[0] + 1}..{t.map[1]}]. " + "please remove all such headings except the first or demote the subsequent headings.", + t) + + # books get special handling because they have *two* title tags. doing this with + # generic code is more complicated than it's worth. the checks above have verified + # that both titles actually exist. + if self._toplevel_tag == 'book': + assert tokens[1].children + assert tokens[4].children + if (maybe_id := cast(str, tokens[0].attrs.get('id', ""))): + maybe_id = "xml:id=" + quoteattr(maybe_id) + return (f'<book xmlns="http://docbook.org/ns/docbook"' + f' xmlns:xlink="http://www.w3.org/1999/xlink"' + f' {maybe_id} version="5.0">' + f' <title>{self.renderInline(tokens[1].children, options, env)}</title>' + f' <subtitle>{self.renderInline(tokens[4].children, options, env)}</subtitle>' + f' {super().render(tokens[6:], options, env)}' + f'</book>') + + return super().render(tokens, options, env) def _heading_tag(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> tuple[str, dict[str, str]]: (tag, attrs) = super()._heading_tag(token, tokens, i, options, env) - if self._title_seen: - if token.tag == 'h1': - assert token.map is not None - raise RuntimeError( - "only one title heading (# [text...]) allowed per manual chapter " - f"but found a second in lines [{token.map[0]}..{token.map[1]}]. " - "please remove all such headings except the first, split your " - "chapters, or demote the subsequent headings to (##) or lower.", - token) + # render() has already verified that we don't have supernumerary headings and since the + # book tag is handled specially we can leave the check this simple + if token.tag != 'h1': return (tag, attrs) - self._title_seen = True - return ("chapter", attrs | { + return (self._toplevel_tag, attrs | { 'xmlns': "http://docbook.org/ns/docbook", 'xmlns:xlink': "http://www.w3.org/1999/xlink", }) + def _included_thing(self, tag: str, token: Token, tokens: Sequence[Token], i: int, + options: OptionsDict, env: MutableMapping[str, Any]) -> str: + result = [] + # close existing partintro. the generic render doesn't really need this because + # it doesn't have a concept of structure in the way the manual does. + if self._headings and self._headings[-1] == Heading('part', 1): + result.append("</partintro>") + self._headings[-1] = self._headings[-1]._replace(partintro_closed=True) + # must nest properly for structural includes. this requires saving at least + # the headings stack, but creating new renderers is cheap and much easier. + r = ManualDocBookRenderer(tag, self._manpage_urls, None) + for (included, path) in token.meta['included']: + try: + result.append(r.render(included, options, env)) + except Exception as e: + raise RuntimeError(f"rendering {path}") from e + return "".join(result) + def included_options(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, + env: MutableMapping[str, Any]) -> str: + return cast(str, token.meta['rendered-options']) + # TODO minimize docbook diffs with existing conversions. remove soon. def paragraph_open(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: @@ -76,127 +115,113 @@ class ManualDocBookRenderer(DocBookRenderer): return f"<programlisting>\n{escape(token.content)}</programlisting>" def fence(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, env: MutableMapping[str, Any]) -> str: - # HACK for temporarily being able to replace md-to-db.sh. pandoc used this syntax to - # allow md files to inject arbitrary docbook, and manual chapters use it. - if token.info == '{=docbook}': - return token.content info = f" language={quoteattr(token.info)}" if token.info != "" else "" return f"<programlisting{info}>\n{escape(token.content)}</programlisting>" -class DocBookSectionConverter(BaseConverter): - __renderer__ = ManualDocBookRenderer - - def finalize(self) -> str: - result = [] - - for section in self._sections: - id = "id=" + quoteattr(section.id) if section.id is not None else "" - result.append(f'<section {id}>') - result += section.chapters - result.append(f'</section>') +class DocBookConverter(Converter): + def __renderer__(self, manpage_urls: Mapping[str, str], + parser: Optional[markdown_it.MarkdownIt]) -> ManualDocBookRenderer: + return ManualDocBookRenderer('book', manpage_urls, parser) - return "\n".join(result) + _base_paths: list[Path] + _revision: str -class ManualFragmentDocBookRenderer(ManualDocBookRenderer): - _tag: str = "chapter" - - def _heading_tag(self, token: Token, tokens: Sequence[Token], i: int, options: OptionsDict, - env: MutableMapping[str, Any]) -> tuple[str, dict[str, str]]: - (tag, attrs) = super()._heading_tag(token, tokens, i, options, env) - if token.tag == 'h1': - return (self._tag, attrs | { 'xmlns:xi': "http://www.w3.org/2001/XInclude" }) - return (tag, attrs) - -class DocBookFragmentConverter(Converter): - __renderer__ = ManualFragmentDocBookRenderer + def __init__(self, manpage_urls: Mapping[str, str], revision: str): + super().__init__(manpage_urls) + self._revision = revision - def convert(self, file: Path, tag: str) -> str: - assert isinstance(self._md.renderer, ManualFragmentDocBookRenderer) + def convert(self, file: Path) -> str: + self._base_paths = [ file ] try: with open(file, 'r') as f: - self._md.renderer._title_seen = False - self._md.renderer._tag = tag return self._render(f.read()) except Exception as e: - raise RuntimeError(f"failed to render manual {tag} {file}") from e - - - -class Section: - id: Optional[str] = None - chapters: list[str] - - def __init__(self) -> None: - self.chapters = [] - -class SectionAction(argparse.Action): - def __call__(self, parser: argparse.ArgumentParser, ns: argparse.Namespace, - values: Union[str, Sequence[Any], None], opt_str: Optional[str] = None) -> None: - sections = getattr(ns, self.dest) - if sections is None: sections = [] - sections.append(Section()) - setattr(ns, self.dest, sections) - -class SectionIDAction(argparse.Action): - def __call__(self, parser: argparse.ArgumentParser, ns: argparse.Namespace, - values: Union[str, Sequence[Any], None], opt_str: Optional[str] = None) -> None: - sections = getattr(ns, self.dest) - if sections is None: raise argparse.ArgumentError(self, "no active section") - sections[-1].id = cast(str, values) - -class ChaptersAction(argparse.Action): - def __call__(self, parser: argparse.ArgumentParser, ns: argparse.Namespace, - values: Union[str, Sequence[Any], None], opt_str: Optional[str] = None) -> None: - sections = getattr(ns, self.dest) - if sections is None: raise argparse.ArgumentError(self, "no active section") - sections[-1].chapters.extend(map(Path, cast(Sequence[str], values))) - -class SingleFileAction(argparse.Action): - def __call__(self, parser: argparse.ArgumentParser, ns: argparse.Namespace, - values: Union[str, Sequence[Any], None], opt_str: Optional[str] = None) -> None: - assert isinstance(values, Sequence) - chapters = getattr(ns, self.dest) or [] - chapters.append((Path(values[0]), Path(values[1]))) - setattr(ns, self.dest, chapters) - -def _build_cli_db_section(p: argparse.ArgumentParser) -> None: - p.add_argument('--manpage-urls', required=True) - p.add_argument("outfile") - p.add_argument("--section", dest="contents", action=SectionAction, nargs=0) - p.add_argument("--section-id", dest="contents", action=SectionIDAction) - p.add_argument("--chapters", dest="contents", action=ChaptersAction, nargs='+') + raise RuntimeError(f"failed to render manual {file}") from e + + def _parse(self, src: str, env: Optional[MutableMapping[str, Any]] = None) -> list[Token]: + tokens = super()._parse(src, env) + for token in tokens: + if token.type != "fence" or not token.info.startswith("{=include=} "): + continue + typ = token.info[12:].strip() + if typ == 'options': + token.type = 'included_options' + self._parse_options(token) + elif typ in [ 'sections', 'chapters', 'preface', 'parts', 'appendix' ]: + token.type = 'included_' + typ + self._parse_included_blocks(token, env) + else: + raise RuntimeError(f"unsupported structural include type '{typ}'") + return tokens + + def _parse_included_blocks(self, token: Token, env: Optional[MutableMapping[str, Any]]) -> None: + assert token.map + included = token.meta['included'] = [] + for (lnum, line) in enumerate(token.content.splitlines(), token.map[0] + 2): + line = line.strip() + path = self._base_paths[-1].parent / line + if path in self._base_paths: + raise RuntimeError(f"circular include found in line {lnum}") + try: + self._base_paths.append(path) + with open(path, 'r') as f: + tokens = self._parse(f.read(), env) + included.append((tokens, path)) + self._base_paths.pop() + except Exception as e: + raise RuntimeError(f"processing included file {path} from line {lnum}") from e + + def _parse_options(self, token: Token) -> None: + assert token.map + + items = {} + for (lnum, line) in enumerate(token.content.splitlines(), token.map[0] + 2): + if len(args := line.split(":", 1)) != 2: + raise RuntimeError(f"options directive with no argument in line {lnum}") + (k, v) = (args[0].strip(), args[1].strip()) + if k in items: + raise RuntimeError(f"duplicate options directive {k} in line {lnum}") + items[k] = v + try: + id_prefix = items.pop('id-prefix') + varlist_id = items.pop('list-id') + source = items.pop('source') + except KeyError as e: + raise RuntimeError(f"options directive {e} missing in block at line {token.map[0] + 1}") + if items.keys(): + raise RuntimeError( + f"unsupported options directives in block at line {token.map[0] + 1}", + " ".join(items.keys())) -def _build_cli_db_fragment(p: argparse.ArgumentParser) -> None: - p.add_argument('--manpage-urls', required=True) - p.add_argument("--chapter", action=SingleFileAction, required=True, nargs=2) - p.add_argument("--section", action=SingleFileAction, required=True, nargs=2) + try: + conv = options.DocBookConverter( + self._manpage_urls, self._revision, False, 'fragment', varlist_id, id_prefix) + with open(self._base_paths[-1].parent / source, 'r') as f: + conv.add_options(json.load(f)) + token.meta['rendered-options'] = conv.finalize(fragment=True) + except Exception as e: + raise RuntimeError(f"processing options block in line {token.map[0] + 1}") from e -def _run_cli_db_section(args: argparse.Namespace) -> None: - with open(args.manpage_urls, 'r') as manpage_urls: - md = DocBookSectionConverter(json.load(manpage_urls)) - for section in args.contents: - md.add_section(section.id, section.chapters) - with open(args.outfile, 'w') as f: - f.write(md.finalize()) -def _run_cli_db_fragment(args: argparse.Namespace) -> None: + +def _build_cli_db(p: argparse.ArgumentParser) -> None: + p.add_argument('--manpage-urls', required=True) + p.add_argument('--revision', required=True) + p.add_argument('infile', type=Path) + p.add_argument('outfile', type=Path) + +def _run_cli_db(args: argparse.Namespace) -> None: with open(args.manpage_urls, 'r') as manpage_urls: - md = DocBookFragmentConverter(json.load(manpage_urls)) - for kind in [ 'chapter', 'section' ]: - for (target, file) in getattr(args, kind): - converted = md.convert(file, kind) - target.parent.mkdir(parents=True, exist_ok=True) - target.write_text(converted) + md = DocBookConverter(json.load(manpage_urls), args.revision) + converted = md.convert(args.infile) + args.outfile.write_text(converted) def build_cli(p: argparse.ArgumentParser) -> None: formats = p.add_subparsers(dest='format', required=True) - _build_cli_db_section(formats.add_parser('docbook-section')) - _build_cli_db_fragment(formats.add_parser('docbook-fragment')) + _build_cli_db(formats.add_parser('docbook')) def run_cli(args: argparse.Namespace) -> None: - if args.format == 'docbook-section': - _run_cli_db_section(args) - elif args.format == 'docbook-fragment': - _run_cli_db_fragment(args) + if args.format == 'docbook': + _run_cli_db(args) else: raise RuntimeError('format not hooked up', args) diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py index 95091d3cdd28..3cba36140bb4 100644 --- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py +++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py @@ -29,7 +29,7 @@ class BaseConverter(Converter): _options: dict[str, RenderedOption] - def __init__(self, manpage_urls: dict[str, str], + def __init__(self, manpage_urls: Mapping[str, str], revision: str, markdown_by_default: bool): super().__init__(manpage_urls) @@ -231,10 +231,11 @@ class DocBookConverter(BaseConverter): def _decl_def_footer(self) -> list[str]: return [ "</simplelist>" ] - def finalize(self) -> str: + def finalize(self, *, fragment: bool = False) -> str: result = [] - result.append('<?xml version="1.0" encoding="UTF-8"?>') + if not fragment: + result.append('<?xml version="1.0" encoding="UTF-8"?>') if self._document_type == 'appendix': result += [ '<appendix xmlns="http://docbook.org/ns/docbook"', diff --git a/pkgs/tools/text/mdcat/default.nix b/pkgs/tools/text/mdcat/default.nix index 47f74684c6f1..e8a7e4ecf5a2 100644 --- a/pkgs/tools/text/mdcat/default.nix +++ b/pkgs/tools/text/mdcat/default.nix @@ -42,10 +42,14 @@ rustPlatform.buildRustPackage rec { postInstall = '' installManPage $releaseDir/build/mdcat-*/out/mdcat.1 - installShellCompletion \ - --bash $releaseDir/build/mdcat-*/out/completions/mdcat.bash \ - --fish $releaseDir/build/mdcat-*/out/completions/mdcat.fish \ - --zsh $releaseDir/build/mdcat-*/out/completions/_mdcat + ln -sr $out/bin/{mdcat,mdless} + + for bin in mdcat mdless; do + installShellCompletion \ + --bash $releaseDir/build/mdcat-*/out/completions/$bin.bash \ + --fish $releaseDir/build/mdcat-*/out/completions/$bin.fish \ + --zsh $releaseDir/build/mdcat-*/out/completions/_$bin + done ''; meta = with lib; { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f8fae131e31f..b3877b13aee0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23015,6 +23015,8 @@ with pkgs; rover = callPackage ../development/tools/rover { }; + rqlite = callPackage ../servers/sql/rqlite { }; + rshell = python3.pkgs.callPackage ../development/embedded/rshell { }; rttr = callPackage ../development/libraries/rttr { }; @@ -30243,6 +30245,8 @@ with pkgs; pixinsight = libsForQt5.callPackage ../applications/graphics/pixinsight { }; + protonup-qt = python3Packages.callPackage ../applications/misc/protonup-qt { }; + pmbootstrap = python3Packages.callPackage ../tools/misc/pmbootstrap { }; popura = callPackage ../tools/networking/popura {}; @@ -36343,6 +36347,10 @@ with pkgs; n3 = callPackage ../applications/science/biology/N3 { }; + nest = callPackage ../applications/science/biology/nest { }; + + nest-mpi = callPackage ../applications/science/biology/nest { withMpi = true; }; + neuron = callPackage ../applications/science/biology/neuron { python = null; }; neuron-mpi = neuron.override {useMpi = true; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2e98fb16c57c..8bb654b8dc5f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1421,6 +1421,8 @@ self: super: with self; { brelpy = callPackage ../development/python-modules/brelpy { }; + brian2 = callPackage ../development/python-modules/brian2 { }; + broadlink = callPackage ../development/python-modules/broadlink { }; brother = callPackage ../development/python-modules/brother { }; @@ -6302,6 +6304,8 @@ self: super: with self; { nessclient = callPackage ../development/python-modules/nessclient { }; + nest = toPythonModule(pkgs.nest-mpi.override { withPython = true; python3 = python; }); + nest-asyncio = callPackage ../development/python-modules/nest-asyncio { }; nested-lookup = callPackage ../development/python-modules/nested-lookup { }; diff --git a/pkgs/top-level/ruby-packages.nix b/pkgs/top-level/ruby-packages.nix index 3bdb15e9d7e2..97d5ad25f63f 100644 --- a/pkgs/top-level/ruby-packages.nix +++ b/pkgs/top-level/ruby-packages.nix @@ -5,10 +5,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "10g5gk8h4mfhvgqylzbf591fqf5p78ca35cb97p9bclpv9jfy0za"; + sha256 = "1271f7nyrmb0kk93zjsb3zyxng8jlzhhg9784pwfpwvrlclashlw"; type = "gem"; }; - version = "6.1.7.2"; + version = "6.0.6"; }; activesupport = { dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"]; @@ -16,10 +16,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "14pjq2k761qaywaznpqq8ziivjk2ks1ma2cjwdflkxqgndxjmsr2"; + sha256 = "091qjiv0mvmn5k9krqkv1lfg8983mgcmrf11gxa6xkchh74csr6a"; type = "gem"; }; - version = "6.1.7.2"; + version = "6.0.6"; }; addressable = { dependencies = ["public_suffix"]; @@ -119,10 +119,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "017jh2lx3z5hqjvnqclc5bfr5q0d3zk0nqjfz73909ybr4h20kmi"; + sha256 = "0xwcnbwnbqq8jp92mvawn6y69cb53wsz84wwmk9vsfk1jjvqfw2z"; type = "gem"; }; - version = "0.2.1"; + version = "0.2.0"; }; builder = { groups = ["default"]; @@ -193,10 +193,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1a36zn77yyibqsfpka0i8vgf3yv98ic2b9wwlbc29566y8wpa2bq"; + sha256 = "193l8r1ycd3dcxa7lsb4pqcghbk56dzc5244m6y8xmv88z6m31d7"; type = "gem"; }; - version = "3.0.6"; + version = "3.0.5"; }; charlock_holmes = { groups = ["default"]; @@ -360,10 +360,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0csgcp2kkmciavnic1yrb8z405dg4lqkzdlw2zscahvggpwr0j2p"; + sha256 = "1fxrq0b1x5gr2gr9md6mkwgaj8519gf1sbyqs88yqphbigf5iy75"; type = "gem"; }; - version = "0.2.0"; + version = "0.1.1"; }; cocoapods-downloader = { groups = ["default"]; @@ -401,10 +401,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "06rvrsb5p4j9pwqg7xzx8kv0v4x3wwjbiw6y2i905qhyqxqrww2l"; + sha256 = "0vpn0y2r91cv9kr2kh6rwh51ipi90iyjfya8ir9grxh1ngv179ck"; type = "gem"; }; - version = "2.2.4"; + version = "2.2.2"; }; cocoapods-git_url_rewriter = { groups = ["default"]; @@ -417,15 +417,15 @@ version = "1.0.1"; }; cocoapods-keys = { - dependencies = ["dotenv" "ruby-keychain"]; + dependencies = ["dotenv" "osx_keychain"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1zycjq1i3kqzpixngm1jp66r075yrb54qcd0xxxa8rmxngimqhff"; + sha256 = "153cxxsi77dygc4qrij6qs44dbvc7dw31jx06cmf0ajrhv9qjnxl"; type = "gem"; }; - version = "2.3.1"; + version = "2.2.1"; }; cocoapods-open = { groups = ["default"]; @@ -587,20 +587,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1q4ai2i4rswhq5l46ny5066z8pavj3j0qvr9hbgqvzj677fa335f"; + sha256 = "0f3v6ffikj694h925zvfzgx995q6l1ixnqpph3qpnjdsyjpsmbn8"; type = "gem"; }; - version = "0.23.8"; + version = "0.23.6"; }; concurrent-ruby = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1qnsflsbjj38im8xq35g0vihlz96h09wjn2dad5g543l3vvrkrx5"; + sha256 = "0s4fpn3mqiizpmpy2a24k4v365pv75y50292r8ajrv4i1p5b2k14"; type = "gem"; }; - version = "1.2.0"; + version = "1.1.10"; }; connection_pool = { groups = ["default"]; @@ -627,10 +627,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1lgga9ina9gnpp9ycj8lpqkc5hm5qlxb41s4pfg0w6fnnpgmairc"; + sha256 = "1195gisqv1kn4lpshn6frlnjgx5r9a0gnpkzjxzsi6wfmfys1mwy"; type = "gem"; }; - version = "1.0.5"; + version = "1.0.1"; }; curses = { groups = ["default"]; @@ -709,10 +709,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qbj8lvl8lzrbpfj9612iiwxf53drb8jg1l4bd1mcqyds8lw9z9z"; + sha256 = "0kqfwfz3pf6mb22r48ybbp7hkzy2qafdpp1bv1knjd74zyilv73h"; type = "gem"; }; - version = "7.5.0"; + version = "7.4.0"; }; dnsruby = { dependencies = ["simpleidn"]; @@ -793,10 +793,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "08s75vs9cxlc4r1q2bjg4br8g9wc5lc5x5vl0vv4zq5ivxsdpgi7"; + sha256 = "11bz1v1cxabm8672gabrw542zyg51dizlcvdck6vvwzagxbjv9zx"; type = "gem"; }; - version = "1.12.0"; + version = "1.11.0"; }; escape = { groups = ["default"]; @@ -814,10 +814,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "17ix0mijpsy3y0c6ywrk5ibarmvqzjsirjyprpsy3hwax8fdm85v"; + sha256 = "0kd7c61f28f810fgxg480j7457nlvqarza9c2ra0zhav0dd80288"; type = "gem"; }; - version = "0.16.0"; + version = "0.15.0"; }; eventmachine = { groups = ["default"]; @@ -834,10 +834,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0j826kfvzn7nc5pv950n270r0sx1702k988ad11cdlav3dcxxw09"; + sha256 = "1v71iii13cnlkck20xv0yrbz0g60qn88f4r6518k8vk31sddw4hx"; type = "gem"; }; - version = "0.99.0"; + version = "0.93.1"; }; execjs = { groups = ["default"]; @@ -855,20 +855,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1f20vjx0ywx0zdb4dfx4cpa7kd51z6vg7dw5hs35laa45dy9g9pj"; + sha256 = "0mqv17hfmph4ylmb2bqyccy64gsgpmzapq5yrmf5yjsqkvw9rxbv"; type = "gem"; }; - version = "2.7.4"; + version = "2.6.0"; }; faraday-net_http = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"; + sha256 = "13b717ddw90iaf4vijy06srmkvrfbzsnyjap93yll0nibad4dbxq"; type = "gem"; }; - version = "3.0.2"; + version = "3.0.1"; }; ffi = { groups = ["default"]; @@ -1023,10 +1023,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0llbqaziga5vawfs71r1ijfiw9allsd15wsrm5vr0sqd3yn7ak89"; + sha256 = "sha256-bkSvvD2SClHJ5FyERpyqZaWp0im7NNhn+wplbmnZD84="; type = "gem"; }; - version = "1.13.2"; + version = "1.13.1"; }; github-pages = { dependencies = ["github-pages-health-check" "jekyll" "jekyll-avatar" "jekyll-coffeescript" "jekyll-commonmark-ghpages" "jekyll-default-layout" "jekyll-feed" "jekyll-gist" "jekyll-github-metadata" "jekyll-include-cache" "jekyll-mentions" "jekyll-optional-front-matter" "jekyll-paginate" "jekyll-readme-index" "jekyll-redirect-from" "jekyll-relative-links" "jekyll-remote-theme" "jekyll-sass-converter" "jekyll-seo-tag" "jekyll-sitemap" "jekyll-swiss" "jekyll-theme-architect" "jekyll-theme-cayman" "jekyll-theme-dinky" "jekyll-theme-hacker" "jekyll-theme-leap-day" "jekyll-theme-merlot" "jekyll-theme-midnight" "jekyll-theme-minimal" "jekyll-theme-modernist" "jekyll-theme-primer" "jekyll-theme-slate" "jekyll-theme-tactile" "jekyll-theme-time-machine" "jekyll-titles-from-headings" "jemoji" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "minima" "nokogiri" "rouge" "terminal-table"]; @@ -1034,10 +1034,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0brk2sgk01mly2hb1h5hm3ip1l6hjr4xx9zkqfhs5k3swlwnwzq9"; + sha256 = "0kg03q6hvz191pyqhbhz3qis5niy3qvrxsnd3sdxcqz6a750wmw6"; type = "gem"; }; - version = "228"; + version = "227"; }; github-pages-health-check = { dependencies = ["addressable" "dnsruby" "octokit" "public_suffix" "typhoeus"]; @@ -1055,10 +1055,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1m3ypny84jyvlxf060p3q3d8pb4yihxa2br5hh012bgc11d09nky"; + sha256 = "0yvh8vv9kgd06hc8c1pl2hq56w56vr0n7dr5mz19fx4p2v89y7xb"; type = "gem"; }; - version = "1.9.0"; + version = "1.8.1"; }; glib2 = { dependencies = ["native-package-installer" "pkg-config"]; @@ -1088,10 +1088,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qn87vxdsaq1szcvq39rnz38cgqllncdxmiyghnbzl7x5aah8sbw"; + sha256 = "0xbgh9d8nbvsvyzqnd0mzhz0nr9hx4qn025kmz6d837lry4lc6gw"; type = "gem"; }; - version = "2.0.22"; + version = "2.0.20"; }; gtk2 = { dependencies = ["atk" "gdk_pixbuf2" "pango"]; @@ -1110,10 +1110,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1vcr5wcvfbsq91302playk3i98wdisspkybcmajl04agv4k8xr68"; + sha256 = "03qiz6kbk260v3613z4wrk8iy1mi06j631fglcskfxyhf18lpy05"; type = "gem"; }; - version = "6.1.1"; + version = "6.0.8"; }; hashie = { groups = ["default"]; @@ -1130,10 +1130,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1f8cr014j7mdqpdb9q17fp5vb5b8n1pswqaif91s3ylg5x3pygfn"; + sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d"; type = "gem"; }; - version = "2.1.0"; + version = "2.0.3"; }; hike = { groups = ["default"]; @@ -1244,10 +1244,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1vdcchz7jli1p0gnc669a7bj3q1fv09y9ppf0y3k0vb1jwdwrqwi"; + sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3"; type = "gem"; }; - version = "1.12.0"; + version = "0.9.5"; }; iconv = { groups = ["default"]; @@ -1264,20 +1264,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0dy04jx3n1ddz744b80mg7hp87miysnjp0h21lqr43hpmhdglxih"; + sha256 = "1xjr8nxpq6vsa4kd7pvd14xxiba9y4dais1yyz4dj567hsqdrhcm"; type = "gem"; }; - version = "0.1.5"; + version = "0.1.4"; }; ipaddr = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ypic2hrmvvcgw7al72raphqv5cs1zvq4w284pwrkvfqsrqrqrsf"; + sha256 = "13qd34nzpgp3fxfjbvaqg3dcnfr0cgl5vjvcqy0hfllbvfcklnbq"; type = "gem"; }; - version = "1.2.5"; + version = "1.2.4"; }; jaro_winkler = { groups = ["default"]; @@ -1306,10 +1306,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0m9yzkiwm751wbyq3aq1355afcx240r24nrick1fzv578bis4kyy"; + sha256 = "0wzb3ysr43f9acpdfhnndnqh1ypir01w4s4clzi38l9mxkfc4d75"; type = "gem"; }; - version = "3.9.3"; + version = "3.9.2"; }; jekyll-avatar = { dependencies = ["jekyll"]; @@ -1350,10 +1350,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1zps7bb9kc4qf32b9y9h47z08wpsziklg0jnhcrcz2wxn09fijgd"; + sha256 = "0xkqq0cyca84hxs47ilkg3sjavwjvc6wijz4n0zd4nxj01jz54bh"; type = "gem"; }; - version = "0.4.0"; + version = "0.2.0"; }; jekyll-default-layout = { dependencies = ["jekyll"]; @@ -1732,40 +1732,40 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393"; + sha256 = "1mnvb80cdg7fzdcs3xscv21p28w4igk5sj5m7m81xp8v2ks87jj0"; type = "gem"; }; - version = "1.6.2"; + version = "1.6.1"; }; json = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0nalhin1gda4v8ybk6lq8f407cgfrj6qzn234yra4ipkmlbfmal6"; + sha256 = "0yk5d10yvspkc5jyvx9gc1a9pn1z8v4k2hvjk1l88zixwf3wf3cl"; type = "gem"; }; - version = "2.6.3"; + version = "2.6.2"; }; json_pure = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0kn736pb52j8b9xxq6l8wqp2chs74aa14vfnp0rijjn086m8b4f3"; + sha256 = "04d8lc6mc09bqmcrlygh51an8r0j7l3p9aghjkc1g6i4fvmrmxfc"; type = "gem"; }; - version = "2.6.3"; + version = "2.6.2"; }; jwt = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "09yj3z5snhaawh2z1w45yyihzmh57m6m7dp8ra8gxavhj5kbiq5p"; + sha256 = "0kcmnx6rgjyd7sznai9ccns2nh7p7wnw3mi8a7vf2wkm51azwddq"; type = "gem"; }; - version = "2.7.0"; + version = "2.5.0"; }; kramdown = { dependencies = ["rexml"]; @@ -1815,10 +1815,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1xz5mrp103i95r4wfxny1f5x7h7vgnxv2p9cdkmmdjzrsk23rijs"; + sha256 = "1jbqw7hkx08i5dj74fwfdc16980hsj3mhrxp4mmjxsdzw1kndrvp"; type = "gem"; }; - version = "4.0.0"; + version = "3.2.4"; }; link_header = { groups = ["default"]; @@ -1835,10 +1835,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1czxv2i1gv3k7hxnrgfjb0z8khz74l4pmfwd70c7kr25l2qypksg"; + sha256 = "0zhg5ha8zy8zw9qr3fl4wgk4r5940n4128xm2pn4shpbzdbsj5by"; type = "gem"; }; - version = "4.0.4"; + version = "4.0.3"; }; listen = { dependencies = ["rb-fsevent" "rb-inotify"]; @@ -1846,10 +1846,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "13rgkfar8pp31z1aamxf5y7cfq88wv6rxxcwy7cmm177qq508ycn"; + sha256 = "0agybr37wpjv3xy4ipcmsvsibgdgphzrwbvcj4vfiykpmakwm01v"; type = "gem"; }; - version = "3.8.0"; + version = "3.7.1"; }; loofah = { dependencies = ["crass" "nokogiri"]; @@ -1857,7 +1857,7 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "08qhzck271anrx9y6qa6mh8hwwdzsgwld8q0000rcd7yvvpnjr3c"; + sha256 = "sha256-bGRp797+NJYBAACjRvnTv3EOEaxGYeNTz1aFIyb7ECM="; type = "gem"; }; version = "2.19.1"; @@ -1961,10 +1961,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0slh78f9z6n0l1i2km7m48yz7l4fjrk88sj1f4mh1wb39sl2yc37"; + sha256 = "1aj604x11d9pksbljh0l38f70b558rhdgji1s9i763hiagvvx2hs"; type = "gem"; }; - version = "4.12.0"; + version = "4.11.0"; }; mini_mime = { groups = ["default"]; @@ -1981,10 +1981,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp"; + sha256 = "0rapl1sfmfi3bfr68da4ca16yhc0pp93vjwkj7y3rdqrzy3b41hy"; type = "gem"; }; - version = "2.8.1"; + version = "2.8.0"; }; minima = { dependencies = ["jekyll" "jekyll-feed" "jekyll-seo-tag"]; @@ -2002,10 +2002,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1kjy67qajw4rnkbjs5jyk7kc3lyhz5613fwj1i8f6ppdk4zampy0"; + sha256 = "0516ypqlx0mlcfn5xh7qppxqc3xndn1fnadxawa8wld5dkcimy30"; type = "gem"; }; - version = "5.17.0"; + version = "5.16.3"; }; molinillo = { groups = ["default"]; @@ -2063,10 +2063,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1gjvj215qdhwk3292sc7xsn6fmwnnaq2xs35hh5hc8d8j22izlbn"; + sha256 = "0xsy70mg4p854jska7ff7cy8fyn9nhlkrmfdvkkfmk8qxairbfq1"; type = "gem"; }; - version = "0.5.5"; + version = "0.5.4"; }; nanaimo = { groups = ["default"]; @@ -2199,10 +2199,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qr6psd9qgv83pklpw7cpmshkcasnv8d777ksmvwsacwfvvkmnxj"; + sha256 = "sha256-0+4A8mwVF2PaFpHH/Ghx3dA+Uy90+FEB9aztwtCZ6Vg="; type = "gem"; }; - version = "1.14.1"; + version = "1.13.10"; }; octokit = { dependencies = ["faraday" "sawyer"]; @@ -2215,27 +2215,16 @@ }; version = "4.25.1"; }; - og-corefoundation = { - dependencies = ["ffi"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0xmz13rb92xy55askn5f3kkmz14qwyyhkdsikk2gd1ydicnaqkh8"; - type = "gem"; - }; - version = "0.2.3"; - }; openssl = { dependencies = ["ipaddr"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0rm9nzz2p204dgcplq9v53jr62m74w63vz01rk8dfmcgifkxhnff"; + sha256 = "0xx01in25q31rpxmq2qlimi44zarsp4px7046xnc6in0pa127xsk"; type = "gem"; }; - version = "2.2.3"; + version = "2.2.2"; }; optimist = { groups = ["default"]; @@ -2258,6 +2247,17 @@ }; version = "1.0.1"; }; + osx_keychain = { + dependencies = ["RubyInline"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10hr3lihq7s5fv18dp0g4mfncvapkcwcd6xnn5483ximyd7rhfx0"; + type = "gem"; + }; + version = "1.0.2"; + }; ovirt-engine-sdk = { dependencies = ["json"]; groups = ["default"]; @@ -2275,10 +2275,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1hi3jcm9s7hkv35gzgdh3nxs0s9h7kkqwv1x6kalww15msk60fxd"; + sha256 = "0zk3fwwx8zzxhmfmlgzzr050jzsl58ma54wy99xy4xx0ibmw48pv"; type = "gem"; }; - version = "1.1.0"; + version = "1.0.4"; }; pango = { dependencies = ["cairo-gobject" "gobject-introspection"]; @@ -2307,20 +2307,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0cdjcasyg7w05kk82dqysq29f1qcf8y5sw8iak5flpxjbdil50qv"; + sha256 = "1q31n7yj59wka8xl8s5wkf66hm4pgvblx95czyxffprdnlhrir2p"; type = "gem"; }; - version = "3.2.1.0"; + version = "3.1.2.1"; }; paru = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0mzy0s4cdqm5nvgyj55idc2pv51k3zlgw6sa7825dcyrk2ihcx0c"; + sha256 = "1v6my9g7bwjlx92hr9w0blnrcrai1yg3yz6k9xz0i6mq8lml2k87"; type = "gem"; }; - version = "1.1.0"; + version = "1.0.3"; }; pastel = { dependencies = ["tty-color"]; @@ -2369,20 +2369,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1wd6nl81nbdwck04hccsm7wf23ghpi8yddd9j4rbwyvyj0sbsff1"; + sha256 = "09a5z9qhxnybahx162q2q1cygdhxfp6cihdivvzh32jlwc37z1x3"; type = "gem"; }; - version = "1.4.5"; + version = "1.4.4"; }; pkg-config = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "02fw2pzrmvwp67nbndpy8a2ln74fd8kmsiffw77z7g1mp58ww651"; + sha256 = "0v9vmkmpha34lwdhig08kb7z4wk3xmw49dvkl99nz9llxhzqr5hl"; type = "gem"; }; - version = "1.5.1"; + version = "1.4.9"; }; polyglot = { groups = ["default"]; @@ -2410,10 +2410,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1bbw4czjr2ch6m57rgjib5a35hx3g18975vwzm2iwq13pvdj9hzk"; + sha256 = "1l5pk6w63bj7cxy4y9mqvpclw6r0pcm7xa44c33vx3f960px8wk8"; type = "gem"; }; - version = "1.2.0"; + version = "1.0.2"; }; pry = { dependencies = ["coderay" "method_source"]; @@ -2421,10 +2421,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0k9kqkd9nps1w1r1rb7wjr31hqzkka2bhi8b518x78dcxppm9zn4"; + sha256 = "0m445x8fwcjdyv2bc0glzss2nbm1ll51bq45knixapc7cl3dzdlr"; type = "gem"; }; - version = "0.14.2"; + version = "0.14.1"; }; pry-byebug = { dependencies = ["byebug" "pry"]; @@ -2443,10 +2443,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pp43n69p6bjvc640wgcz295w1q2v9awcqgbwcqn082dbvq5xvnx"; + sha256 = "0wyvql6pb6m8jl8bsamabxhxhd86bnqblspaxzz05sl0fm2ynj0r"; type = "gem"; }; - version = "1.4.0"; + version = "1.3.0"; }; public_suffix = { groups = ["default"]; @@ -2464,30 +2464,30 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1ymaq2m30yx35sninw8mjknsjw23k6458ph9k350khwwn1hh2d1k"; + sha256 = "1yabmxmqprb2x58awiasidsiwpplscmyar9dzwh5l8jgaw4i3wra"; type = "gem"; }; - version = "6.1.0"; + version = "6.0.0"; }; racc = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "09jgz6r0f7v84a7jz9an85q8vvmp743dqcsdm3z9c8rqcqv6pljq"; + sha256 = "0la56m0z26j3mfn1a9lf2l03qx1xifanndf9p3vx1azf6sqy7v9d"; type = "gem"; }; - version = "1.6.2"; + version = "1.6.0"; }; rack = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0qvp6h2abmlsl4sqjsvac03cr2mxq6143gbx4kq52rpazp021qsb"; + sha256 = "0axc6w0rs4yj0pksfll1hjgw1k6a5q0xi2lckh91knfb72v348pa"; type = "gem"; }; - version = "2.2.6.2"; + version = "2.2.4"; }; rack-protection = { dependencies = ["rack"]; @@ -2495,10 +2495,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis"; + sha256 = "0jmixih0qrsdz60dhznkk29v50ks55cqq51jjf0yn3amqghh4bhk"; type = "gem"; }; - version = "3.0.5"; + version = "3.0.2"; }; rails-dom-testing = { dependencies = ["activesupport" "nokogiri"]; @@ -2517,10 +2517,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ygav4xyq943qqyhjmi3mzirn180j565mc9h5j4css59x1sn0cmz"; + sha256 = "sha256-iV0Mh6K2YjiR6FwdUHx/FqzaTnfZRpL1N981unE5i9U="; type = "gem"; }; - version = "1.5.0"; + version = "1.4.4"; }; rainbow = { groups = ["default"]; @@ -2589,10 +2589,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0dgj5n7rj83981fvrhswfwsh88x42p7r00nvd80hkxmdcjvda2h6"; + sha256 = "0wd4j2irk88qcrxbhhbrsr6rswz8ckva7n0hsjyffnmx1ya60n8y"; type = "gem"; }; - version = "2.8.4"; + version = "2.7.0"; }; rchardet = { groups = ["default"]; @@ -2630,10 +2630,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1sg9sbf9pm91l7lac7fs4silabyn0vflxwaa2x3lrzsm0ff8ilca"; + sha256 = "0bvk8yyns5s1ls437z719y5sdv9fr8kfs8dmr6g8s761dv5n8zvi"; type = "gem"; }; - version = "3.6.0"; + version = "3.5.1"; }; redis = { dependencies = ["redis-client"]; @@ -2641,10 +2641,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "10r5z5mg1x5kjx3wvwx5d8bqgd2j8pc4dlaasq7nmnl3nsn7sn9k"; + sha256 = "1s2hvsq0nyxmh27cqv00zk0s6bb4dlxfhzng5x0w8qijpw0vx9h5"; type = "gem"; }; - version = "5.0.6"; + version = "5.0.5"; }; redis-client = { dependencies = ["connection_pool"]; @@ -2652,10 +2652,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1q9h6mgr3nnxlc65r3f78cn208i4l8y2jqa1g6wwjl620za3ay9q"; + sha256 = "1hkwqi18cbiil787ivvh2s8i6csrn0z3qb4ccp2vhrc2w6ay6ncq"; type = "gem"; }; - version = "0.12.1"; + version = "0.10.0"; }; redis-rack = { dependencies = ["rack" "redis-store"]; @@ -2684,10 +2684,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0d6241adx6drsfzz74nx1ld3394nm6fjpv3ammzr0g659krvgf7q"; + sha256 = "0mm5sykyblc61a82zz3dag6yy3mvflj2z47060kjzjj5793blqzi"; type = "gem"; }; - version = "2.7.0"; + version = "2.6.0"; }; rest-client = { dependencies = ["http-accept" "http-cookie" "mime-types" "netrc"]; @@ -2722,15 +2722,14 @@ version = "3.2.5"; }; rmagick = { - dependencies = ["pkg-config"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "11skr2l49cml2wgm74zzcxwdyw0vn0abynhhq1m08jpzr309x730"; + sha256 = "0v269bx6bhnrlxpsmhr8xjv64dwnnykiw9hr58dwghsps1qb8ib7"; type = "gem"; }; - version = "5.1.0"; + version = "5.0.0"; }; rouge = { groups = ["default"]; @@ -2769,10 +2768,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0da45cvllbv39sdbsl65vp5djb2xf5m10mxc9jm7rsqyyxjw4h1f"; + sha256 = "1ibb81slc35q5yp276sixp3yrvj9q92wlmi1glbnwlk6g49z8rn4"; type = "gem"; }; - version = "3.12.1"; + version = "3.12.0"; }; rspec-expectations = { dependencies = ["diff-lcs" "rspec-support"]; @@ -2780,10 +2779,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "03ba3lfdsj9zl00v1yvwgcx87lbadf87livlfa5kgqssn9qdnll6"; + sha256 = "0qldsmjhqr4344zdlamzggr3y98wdk2c4hihkhwx8imk800gkl8v"; type = "gem"; }; - version = "3.12.2"; + version = "3.12.0"; }; rspec-mocks = { dependencies = ["diff-lcs" "rspec-support"]; @@ -2791,10 +2790,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0sq2cc9pm5gq411y7iwfvzbmgv3g91lyf7y7cqn1lr3yf1v122nc"; + sha256 = "1yvwnb0x5d6d4ff3wlgahk0wcw72ic51gd2snr1xxc5ify41kabv"; type = "gem"; }; - version = "3.12.3"; + version = "3.12.0"; }; rspec-support = { groups = ["default"]; @@ -2812,10 +2811,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1jsiy93y5c2sx2sr5jmdah208idw038m2fpihgan4klmldm3r1pm"; + sha256 = "1xhm882zzs4z4ivknrymh6lgnd3p90b651dn0fp32dciajdxr9f1"; type = "gem"; }; - version = "1.45.1"; + version = "1.37.1"; }; rubocop-ast = { dependencies = ["parser"]; @@ -2823,10 +2822,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1zqk8dgjjhm0zll2rxqvvb8fl5vin7mmbc1ndn1a2q4276ri6ydc"; + sha256 = "1qiq3q66w57im0ryrvnd1yq0g2s2safhywpv94441kvc1amayjzy"; type = "gem"; }; - version = "1.26.0"; + version = "1.23.0"; }; rubocop-performance = { dependencies = ["rubocop" "rubocop-ast"]; @@ -2834,10 +2833,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1n7g0vg06ldjaq4f8c11c7yqy99zng1qdrkkk4kfziippy24yxnc"; + sha256 = "1h06a2asg8pjq7l0k885126n60y54rgw0qr957qarpv7qligzn4c"; type = "gem"; }; - version = "1.16.0"; + version = "1.15.0"; }; ruby-graphviz = { dependencies = ["rexml"]; @@ -2850,17 +2849,6 @@ }; version = "1.2.5"; }; - ruby-keychain = { - dependencies = ["ffi" "og-corefoundation"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1g57fr1r39bfh1r887hp87mawfg3miidagvpqyqq3l0152ya43wr"; - type = "gem"; - }; - version = "0.4.0"; - }; ruby-libvirt = { groups = ["default"]; platforms = []; @@ -2932,6 +2920,17 @@ }; version = "0.0.5"; }; + RubyInline = { + dependencies = ["ZenTest"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zq24qvkqzjsrcwyz9lp3pm602kqw08cp3g1acf3zy0nc7npvx9p"; + type = "gem"; + }; + version = "3.12.6"; + }; rubyzip = { groups = ["default"]; platforms = []; @@ -2947,10 +2946,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0wnfgxx59nq2wpvi8ll7bqw9x99x5hps6i38xdjrwbb5a3896d58"; + sha256 = "02h1cv73znwfgy61mqmfylcfvwyyp3lddiz3njgivfx234mpz50x"; type = "gem"; }; - version = "1.5.1"; + version = "1.5.0.1"; }; safe_yaml = { groups = ["default"]; @@ -3022,20 +3021,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1ffbd7jimj73fwdg7gf26bfc41a06aqi7zrwj90pkkwxipjljrzl"; + sha256 = "1yzv7gn539aqwpada2mvfrnbdygr3d61ryp68ncp3kpx6nbz1x25"; type = "gem"; }; - version = "0.17.0"; + version = "0.16.0"; }; sequel = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1yf5sqw15gj5vmrbklw144y0wg8r92fwczfg64znwn61k9bz9j21"; + sha256 = "1qg80fqxs1rabsg3xrkfkkicnn1z2p02xsb1lxv78a6iw5p17d73"; type = "gem"; }; - version = "5.65.0"; + version = "5.61.0"; }; sequel_pg = { dependencies = ["pg" "sequel"]; @@ -3043,10 +3042,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "01j51vn47ynyhlxpgz6wj8swm3d8g1hrad1678s0sd43kh2hqxdg"; + sha256 = "15ndf1wr45vyqiyc3059f8zv0wp11i6xqfqclsa0v3qf739jb1zw"; type = "gem"; }; - version = "1.17.1"; + version = "1.17.0"; }; simplecov = { dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"]; @@ -3054,10 +3053,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"; + sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr"; type = "gem"; }; - version = "0.22.0"; + version = "0.21.2"; }; simplecov-html = { groups = ["default"]; @@ -3096,10 +3095,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1ryfja9yd3fq8n1p5yi3qnd0pjk7bkycmxxmbb1bj0axlr1pdv20"; + sha256 = "0c2vmy0j5amy9fihs2gz2ssm4bdpqqh4llyjfl6qqqry7f87c6xz"; type = "gem"; }; - version = "3.0.5"; + version = "3.0.2"; }; slather = { dependencies = ["CFPropertyList" "activesupport" "clamp" "nokogiri" "xcodeproj"]; @@ -3107,10 +3106,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0kdigir21jinkkj4q3cjsswix26lmff1rmnwjz2ywc6y9d8ib9ak"; + sha256 = "0wy8ws5n2gvxgkncbhrp4vkwjcbphcczw4k7y3g2wfl8fdmv5b4n"; type = "gem"; }; - version = "2.7.4"; + version = "2.7.2"; }; slop = { groups = ["default"]; @@ -3148,10 +3147,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pdy2f5phffknx98j2f5k72s52ayp456m3jkg08vx396yg59l0gi"; + sha256 = "0smcpi3x87chkdqdclhgh36xlbwm7r44r58m3k1w4mcikdwlpjl7"; type = "gem"; }; - version = "0.48.0"; + version = "0.47.2"; }; sqlite3 = { dependencies = ["mini_portile2"]; @@ -3159,10 +3158,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0f24qp50mc1qg8yvv7b3x73mh78d6mzd3b7rqib1ixfbsdiayx1x"; + sha256 = "1i95rgfxdj2rhxifps27dz7fjfdih5iyl7b01di9gdmh9m04ylk6"; type = "gem"; }; - version = "1.6.0"; + version = "1.5.3"; }; string_inflection = { groups = ["default"]; @@ -3180,10 +3179,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0zkq75hcqnxnipvccsd2f7vqcra6rplzvn1ds73sna6lcy8s6sxa"; + sha256 = "1im3kskcrmwa12q4pxilps7dyf9jlc82saasp6lkn5q7zqi7ilfh"; type = "gem"; }; - version = "6.0.0"; + version = "4.3.0"; }; syntax_tree-haml = { dependencies = ["haml" "prettier_print" "syntax_tree"]; @@ -3191,10 +3190,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0nnq6z8xhvcv3yc7rf64np3f8dx6j8gmvbi6ws3lwccq4w5cmqnk"; + sha256 = "0n2ag309fzz9qvj634aibv2khfc45vvsg1sra227ssn3xwcvx4vq"; type = "gem"; }; - version = "3.0.0"; + version = "2.0.0"; }; syntax_tree-rbs = { dependencies = ["prettier_print" "rbs" "syntax_tree"]; @@ -3212,30 +3211,31 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0yvchq3j0splz70796a27hr1v6ifhyab5ddc9fl1x734nhmsy4rb"; + sha256 = "0zf6cavsmj87lszy0b5mzw6mdg0dbsb7f52xy2fx06y9abv78xxw"; type = "gem"; }; - version = "1.1.3"; + version = "1.1.2"; }; temple = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "07k5wr2ypsmsbyc9d1plhdki4xr7vvggld8r1i49iljkrpx5nbqc"; + sha256 = "1kzp8c08jl137v62rafmr81b7hg01q3d1q70fr5y5cmmranfpml1"; type = "gem"; }; - version = "0.10.0"; + version = "0.9.1"; }; terminal-table = { + dependencies = ["unicode-display_width"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0hbmzfr17ji5ws5x5z3kypmb5irwwss7q7kkad0gs005ibqrxv0a"; + sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk"; type = "gem"; }; - version = "1.6.0"; + version = "1.8.0"; }; thor = { groups = ["default"]; @@ -3247,6 +3247,16 @@ }; version = "1.2.1"; }; + thread_safe = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy"; + type = "gem"; + }; + version = "0.3.6"; + }; thrift = { groups = ["default"]; platforms = []; @@ -3293,10 +3303,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0adc8qblz8ii668r3rksjx83p675iryh52rvdvysimx2hkbasj7d"; + sha256 = "0697qz1akblf8r3wi0s2dsjh468hfsd57fb0mrp93z35y2ni6bhh"; type = "gem"; }; - version = "1.6.12"; + version = "1.6.11"; }; tty-color = { groups = ["default"]; @@ -3341,15 +3351,15 @@ version = "1.4.0"; }; tzinfo = { - dependencies = ["concurrent-ruby"]; + dependencies = ["thread_safe"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd"; + sha256 = "0rw89y3zj0wcybcyiazgcprg6hi42k8ipp1n2lbl95z1dmpgmly6"; type = "gem"; }; - version = "2.0.6"; + version = "1.2.10"; }; uglifier = { dependencies = ["execjs"]; @@ -3388,10 +3398,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a"; + sha256 = "1204c1jx2g89pc25qk5150mk7j5k90692i7ihgfzqnad6qni74h2"; type = "gem"; }; - version = "2.4.2"; + version = "1.8.0"; }; uuid4r = { groups = ["default"]; @@ -3472,19 +3482,29 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "028ld9qmgdllxrl7d0qkl65s58wb1n3gv8yjs28g43a8b1hplxk1"; + sha256 = "18hihq3hxs2ywxh3ixm366cawwy4k733mh680ldaa1vxjiraxj58"; + type = "gem"; + }; + version = "2.6.1"; + }; + ZenTest = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vss0ldskqprnlvl5pczcl8p346p2ib1sc6hyprbprh6gjq4v16y"; type = "gem"; }; - version = "2.6.7"; + version = "4.12.1"; }; zookeeper = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1hc87pbmgc53lksa1aql61kxn9d2kjzmlhnjxa5rcn01qhm3pkvg"; + sha256 = "0gbmc76cxi4nlhrdch8ykinyzp5f2m6d272g8xhn5rjg3fjp15l1"; type = "gem"; }; - version = "1.5.5"; + version = "1.5.3"; }; } |