Merge master into staging-next

This commit is contained in:
github-actions[bot] 2023-01-26 00:02:34 +00:00 committed by GitHub
commit e91d2acb23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 910 additions and 886 deletions

View File

@ -176,36 +176,6 @@ let
lintrng $out/man-pages-combined.xml
'';
olinkDB = runCommand "manual-olinkdb"
{ inherit sources;
nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ];
}
''
xsltproc \
${manualXsltprocOptions} \
--stringparam collect.xref.targets only \
--stringparam targets.filename "$out/manual.db" \
--nonet \
${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
${manual-combined}/manual-combined.xml
cat > "$out/olinkdb.xml" <<EOF
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE targetset SYSTEM
"file://${docbook_xsl_ns}/xml/xsl/docbook/common/targetdatabase.dtd" [
<!ENTITY manualtargets SYSTEM "file://$out/manual.db">
]>
<targetset>
<targetsetinfo>
Allows for cross-referencing olinks between the manpages
and manual.
</targetsetinfo>
<document targetdoc="manual">&manualtargets;</document>
</targetset>
EOF
'';
in rec {
inherit generatedSources;
@ -224,7 +194,6 @@ in rec {
mkdir -p $dst
xsltproc \
${manualXsltprocOptions} \
--stringparam target.database.document "${olinkDB}/olinkdb.xml" \
--stringparam id.warnings "1" \
--nonet --output $dst/ \
${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
@ -261,7 +230,6 @@ in rec {
xsltproc \
${manualXsltprocOptions} \
--stringparam target.database.document "${olinkDB}/olinkdb.xml" \
--nonet --xinclude --output $dst/epub/ \
${docbook_xsl_ns}/xml/xsl/docbook/epub/docbook.xsl \
${manual-combined}/manual-combined.xml
@ -295,7 +263,6 @@ in rec {
--param man.output.base.dir "'$out/share/man/'" \
--param man.endnotes.are.numbered 0 \
--param man.break.after.slash 1 \
--stringparam target.database.document "${olinkDB}/olinkdb.xml" \
${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \
${manual-combined}/man-pages-combined.xml
'';

View File

@ -109,29 +109,7 @@ in rec {
{ meta.description = "List of NixOS options in JSON format";
nativeBuildInputs = [
pkgs.brotli
(let
# python3Minimal can't be overridden with packages on Darwin, due to a missing framework.
# Instead of modifying stdenv, we take the easy way out, since most people on Darwin will
# just be hacking on the Nixpkgs manual (which also uses make-options-doc).
python = if pkgs.stdenv.isDarwin then pkgs.python3 else pkgs.python3Minimal;
self = (python.override {
inherit self;
includeSiteCustomize = true;
});
in self.withPackages (p:
let
# TODO add our own small test suite when rendering is split out into a new tool
markdown-it-py = p.markdown-it-py.override {
disableTests = true;
};
mdit-py-plugins = p.mdit-py-plugins.override {
inherit markdown-it-py;
disableTests = true;
};
in [
markdown-it-py
mdit-py-plugins
]))
pkgs.python3Minimal
];
options = builtins.toFile "options.json"
(builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix));
@ -141,8 +119,6 @@ in rec {
if baseOptionsJSON == null
then builtins.toFile "base.json" "{}"
else baseOptionsJSON;
MANPAGE_URLS = pkgs.path + "/doc/manpage-urls.json";
}
''
# Export list of options in different format.
@ -153,7 +129,6 @@ in rec {
python ${./mergeJSON.py} \
${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
${if allowDocBook then "--warn-on-docbook" else "--error-on-docbook"} \
${lib.optionalString markdownByDefault "--markdown-by-default"} \
$baseJSON $options \
> $dst/options.json
@ -172,21 +147,45 @@ in rec {
fi >"$out"
'';
# Convert options.json into an XML file.
# The actual generation of the xml file is done in nix purely for the convenience
# of not having to generate the xml some other way
optionsXML = pkgs.runCommand "options.xml" {} ''
export NIX_STORE_DIR=$TMPDIR/store
export NIX_STATE_DIR=$TMPDIR/state
${pkgs.nix}/bin/nix-instantiate \
--eval --xml --strict ${./optionsJSONtoXML.nix} \
--argstr file ${optionsJSON}/share/doc/nixos/options.json \
> "$out"
'';
optionsDocBook = pkgs.runCommand "options-docbook.xml" {
MANPAGE_URLS = pkgs.path + "/doc/manpage-urls.json";
OTD_DOCUMENT_TYPE = documentType;
OTD_VARIABLE_LIST_ID = variablelistId;
OTD_OPTION_ID_PREFIX = optionIdPrefix;
OTD_REVISION = revision;
optionsDocBook = pkgs.runCommand "options-docbook.xml" {} ''
optionsXML=${optionsXML}
if grep /nixpkgs/nixos/modules $optionsXML; then
nativeBuildInputs = [
(let
# python3Minimal can't be overridden with packages on Darwin, due to a missing framework.
# Instead of modifying stdenv, we take the easy way out, since most people on Darwin will
# just be hacking on the Nixpkgs manual (which also uses make-options-doc).
python = if pkgs.stdenv.isDarwin then pkgs.python3 else pkgs.python3Minimal;
self = (python.override {
inherit self;
includeSiteCustomize = true;
});
in self.withPackages (p:
let
# TODO add our own small test suite when rendering is split out into a new tool
markdown-it-py = p.markdown-it-py.override {
disableTests = true;
};
mdit-py-plugins = p.mdit-py-plugins.override {
inherit markdown-it-py;
disableTests = true;
};
in [
markdown-it-py
mdit-py-plugins
]))
];
} ''
python ${./optionsToDocbook.py} \
${lib.optionalString markdownByDefault "--markdown-by-default"} \
${optionsJSON}/share/doc/nixos/options.json \
> options.xml
if grep /nixpkgs/nixos/modules options.xml; then
echo "The manual appears to depend on the location of Nixpkgs, which is bad"
echo "since this prevents sharing via the NixOS channel. This is typically"
echo "caused by an option default that refers to a relative path (see above"
@ -194,14 +193,7 @@ in rec {
exit 1
fi
${pkgs.python3Minimal}/bin/python ${./sortXML.py} $optionsXML sorted.xml
${pkgs.libxslt.bin}/bin/xsltproc \
--stringparam documentType '${documentType}' \
--stringparam revision '${revision}' \
--stringparam variablelistId '${variablelistId}' \
--stringparam optionIdPrefix '${optionIdPrefix}' \
-o intermediate.xml ${./options-to-docbook.xsl} sorted.xml
${pkgs.libxslt.bin}/bin/xsltproc \
-o "$out" ${./postprocess-option-descriptions.xsl} intermediate.xml
-o "$out" ${./postprocess-option-descriptions.xsl} options.xml
'';
}

View File

@ -3,19 +3,6 @@ import json
import os
import sys
from typing import Any, Dict, List
from collections.abc import MutableMapping, Sequence
import inspect
# for MD conversion
import markdown_it
import markdown_it.renderer
from markdown_it.token import Token
from markdown_it.utils import OptionsDict
from mdit_py_plugins.container import container_plugin
from mdit_py_plugins.deflist import deflist_plugin
from mdit_py_plugins.myst_role import myst_role_plugin
import re
from xml.sax.saxutils import escape, quoteattr
JSON = Dict[str, Any]
@ -55,236 +42,9 @@ def unpivot(options: Dict[Key, Option]) -> Dict[str, JSON]:
result[opt.name] = opt.value
return result
manpage_urls = json.load(open(os.getenv('MANPAGE_URLS')))
class Renderer(markdown_it.renderer.RendererProtocol):
__output__ = "docbook"
def __init__(self, parser=None):
self.rules = {
k: v
for k, v in inspect.getmembers(self, predicate=inspect.ismethod)
if not (k.startswith("render") or k.startswith("_"))
} | {
"container_{.note}_open": self._note_open,
"container_{.note}_close": self._note_close,
"container_{.important}_open": self._important_open,
"container_{.important}_close": self._important_close,
"container_{.warning}_open": self._warning_open,
"container_{.warning}_close": self._warning_close,
}
def render(self, tokens: Sequence[Token], options: OptionsDict, env: MutableMapping) -> str:
assert '-link-tag-stack' not in env
env['-link-tag-stack'] = []
assert '-deflist-stack' not in env
env['-deflist-stack'] = []
def do_one(i, token):
if token.type == "inline":
assert token.children is not None
return self.renderInline(token.children, options, env)
elif token.type in self.rules:
return self.rules[token.type](tokens[i], tokens, i, options, env)
else:
raise NotImplementedError("md token not supported yet", token)
return "".join(map(lambda arg: do_one(*arg), enumerate(tokens)))
def renderInline(self, tokens: Sequence[Token], options: OptionsDict, env: MutableMapping) -> str:
# HACK to support docbook links and xrefs. link handling is only necessary because the docbook
# manpage stylesheet converts - in urls to a mathematical minus, which may be somewhat incorrect.
for i, token in enumerate(tokens):
if token.type != 'link_open':
continue
token.tag = 'link'
# turn [](#foo) into xrefs
if token.attrs['href'][0:1] == '#' and tokens[i + 1].type == 'link_close':
token.tag = "xref"
# turn <x> into links without contents
if tokens[i + 1].type == 'text' and tokens[i + 1].content == token.attrs['href']:
tokens[i + 1].content = ''
def do_one(i, token):
if token.type in self.rules:
return self.rules[token.type](tokens[i], tokens, i, options, env)
else:
raise NotImplementedError("md node not supported yet", token)
return "".join(map(lambda arg: do_one(*arg), enumerate(tokens)))
def text(self, token, tokens, i, options, env):
return escape(token.content)
def paragraph_open(self, token, tokens, i, options, env):
return "<para>"
def paragraph_close(self, token, tokens, i, options, env):
return "</para>"
def hardbreak(self, token, tokens, i, options, env):
return "<literallayout>\n</literallayout>"
def softbreak(self, token, tokens, i, options, env):
# should check options.breaks() and emit hard break if so
return "\n"
def code_inline(self, token, tokens, i, options, env):
return f"<literal>{escape(token.content)}</literal>"
def code_block(self, token, tokens, i, options, env):
return f"<programlisting>{escape(token.content)}</programlisting>"
def link_open(self, token, tokens, i, options, env):
env['-link-tag-stack'].append(token.tag)
(attr, start) = ('linkend', 1) if token.attrs['href'][0] == '#' else ('xlink:href', 0)
return f"<{token.tag} {attr}={quoteattr(token.attrs['href'][start:])}>"
def link_close(self, token, tokens, i, options, env):
return f"</{env['-link-tag-stack'].pop()}>"
def list_item_open(self, token, tokens, i, options, env):
return "<listitem>"
def list_item_close(self, token, tokens, i, options, env):
return "</listitem>\n"
# HACK open and close para for docbook change size. remove soon.
def bullet_list_open(self, token, tokens, i, options, env):
return "<para><itemizedlist>\n"
def bullet_list_close(self, token, tokens, i, options, env):
return "\n</itemizedlist></para>"
def em_open(self, token, tokens, i, options, env):
return "<emphasis>"
def em_close(self, token, tokens, i, options, env):
return "</emphasis>"
def strong_open(self, token, tokens, i, options, env):
return "<emphasis role=\"strong\">"
def strong_close(self, token, tokens, i, options, env):
return "</emphasis>"
def fence(self, token, tokens, i, options, env):
info = f" language={quoteattr(token.info)}" if token.info != "" else ""
return f"<programlisting{info}>{escape(token.content)}</programlisting>"
def blockquote_open(self, token, tokens, i, options, env):
return "<para><blockquote>"
def blockquote_close(self, token, tokens, i, options, env):
return "</blockquote></para>"
def _note_open(self, token, tokens, i, options, env):
return "<para><note>"
def _note_close(self, token, tokens, i, options, env):
return "</note></para>"
def _important_open(self, token, tokens, i, options, env):
return "<para><important>"
def _important_close(self, token, tokens, i, options, env):
return "</important></para>"
def _warning_open(self, token, tokens, i, options, env):
return "<para><warning>"
def _warning_close(self, token, tokens, i, options, env):
return "</warning></para>"
# markdown-it emits tokens based on the html syntax tree, but docbook is
# slightly different. html has <dl>{<dt/>{<dd/>}}</dl>,
# docbook has <variablelist>{<varlistentry><term/><listitem/></varlistentry>}<variablelist>
# we have to reject multiple definitions for the same term for time being.
def dl_open(self, token, tokens, i, options, env):
env['-deflist-stack'].append({})
return "<para><variablelist>"
def dl_close(self, token, tokens, i, options, env):
env['-deflist-stack'].pop()
return "</variablelist></para>"
def dt_open(self, token, tokens, i, options, env):
env['-deflist-stack'][-1]['has-dd'] = False
return "<varlistentry><term>"
def dt_close(self, token, tokens, i, options, env):
return "</term>"
def dd_open(self, token, tokens, i, options, env):
if env['-deflist-stack'][-1]['has-dd']:
raise Exception("multiple definitions per term not supported")
env['-deflist-stack'][-1]['has-dd'] = True
return "<listitem>"
def dd_close(self, token, tokens, i, options, env):
return "</listitem></varlistentry>"
def myst_role(self, token, tokens, i, options, env):
if token.meta['name'] == 'command':
return f"<command>{escape(token.content)}</command>"
if token.meta['name'] == 'file':
return f"<filename>{escape(token.content)}</filename>"
if token.meta['name'] == 'var':
return f"<varname>{escape(token.content)}</varname>"
if token.meta['name'] == 'env':
return f"<envar>{escape(token.content)}</envar>"
if token.meta['name'] == 'option':
return f"<option>{escape(token.content)}</option>"
if token.meta['name'] == 'manpage':
[page, section] = [ s.strip() for s in token.content.rsplit('(', 1) ]
section = section[:-1]
man = f"{page}({section})"
title = f"<refentrytitle>{escape(page)}</refentrytitle>"
vol = f"<manvolnum>{escape(section)}</manvolnum>"
ref = f"<citerefentry>{title}{vol}</citerefentry>"
if man in manpage_urls:
return f"<link xlink:href={quoteattr(manpage_urls[man])}>{ref}</link>"
else:
return ref
raise NotImplementedError("md node not supported yet", token)
md = (
markdown_it.MarkdownIt(renderer_cls=Renderer)
# TODO maybe fork the plugin and have only a single rule for all?
.use(container_plugin, name="{.note}")
.use(container_plugin, name="{.important}")
.use(container_plugin, name="{.warning}")
.use(deflist_plugin)
.use(myst_role_plugin)
)
# converts in-place!
def convertMD(options: Dict[str, Any]) -> str:
def convertString(path: str, text: str) -> str:
try:
rendered = md.render(text)
return rendered
except:
print(f"error in {path}")
raise
def optionIs(option: Dict[str, Any], key: str, typ: str) -> bool:
if key not in option: return False
if type(option[key]) != dict: return False
if '_type' not in option[key]: return False
return option[key]['_type'] == typ
def convertCode(name: str, option: Dict[str, Any], key: str):
rendered = f"{key}-db"
if optionIs(option, key, 'literalMD'):
option[rendered] = convertString(name, f"*{key.capitalize()}:*\n{option[key]['text']}")
elif optionIs(option, key, 'literalExpression'):
code = option[key]['text']
# for multi-line code blocks we only have to count ` runs at the beginning
# of a line, but this is much easier.
multiline = '\n' in code
longest, current = (0, 0)
for c in code:
current = current + 1 if c == '`' else 0
longest = max(current, longest)
# inline literals need a space to separate ticks from content, code blocks
# need newlines. inline literals need one extra tick, code blocks need three.
ticks, sep = ('`' * (longest + (3 if multiline else 1)), '\n' if multiline else ' ')
code = f"{ticks}{sep}{code}{sep}{ticks}"
option[rendered] = convertString(name, f"*{key.capitalize()}:*\n{code}")
elif optionIs(option, key, 'literalDocBook'):
option[rendered] = f"<para><emphasis>{key.capitalize()}:</emphasis> {option[key]['text']}</para>"
elif key in option:
raise Exception(f"{name} {key} has unrecognized type", option[key])
for (name, option) in options.items():
try:
if optionIs(option, 'description', 'mdDoc'):
option['description'] = convertString(name, option['description']['text'])
elif markdownByDefault:
option['description'] = convertString(name, option['description'])
else:
option['description'] = ("<nixos:option-description><para>" +
option['description'] +
"</para></nixos:option-description>")
convertCode(name, option, 'example')
convertCode(name, option, 'default')
if 'relatedPackages' in option:
option['relatedPackages'] = convertString(name, option['relatedPackages'])
except Exception as e:
raise Exception(f"Failed to render option {name}: {str(e)}")
return options
warningsAreErrors = False
warnOnDocbook = False
errorOnDocbook = False
markdownByDefault = False
optOffset = 0
for arg in sys.argv[1:]:
if arg == "--warnings-are-errors":
@ -296,9 +56,6 @@ for arg in sys.argv[1:]:
elif arg == "--error-on-docbook":
optOffset += 1
errorOnDocbook = True
if arg == "--markdown-by-default":
optOffset += 1
markdownByDefault = True
options = pivot(json.load(open(sys.argv[1 + optOffset], 'r')))
overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
@ -404,4 +161,4 @@ if hasWarnings and warningsAreErrors:
file=sys.stderr)
sys.exit(1)
json.dump(convertMD(unpivot(options)), fp=sys.stdout)
json.dump(unpivot(options), fp=sys.stdout)

View File

@ -1,179 +0,0 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:nixos="tag:nixos.org"
xmlns="http://docbook.org/ns/docbook"
extension-element-prefixes="str"
>
<xsl:output method='xml' encoding="UTF-8" />
<xsl:param name="revision" />
<xsl:param name="documentType" />
<xsl:param name="program" />
<xsl:param name="variablelistId" />
<xsl:param name="optionIdPrefix" />
<xsl:template match="/expr/list">
<xsl:choose>
<xsl:when test="$documentType = 'appendix'">
<appendix xml:id="appendix-configuration-options">
<title>Configuration Options</title>
<xsl:call-template name="variable-list"/>
</appendix>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="variable-list"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="variable-list">
<variablelist>
<xsl:attribute name="id" namespace="http://www.w3.org/XML/1998/namespace"><xsl:value-of select="$variablelistId"/></xsl:attribute>
<xsl:for-each select="attrs">
<xsl:variable name="id" select="
concat($optionIdPrefix,
translate(
attr[@name = 'name']/string/@value,
'*&lt; >[]:&quot;',
'________'
))" />
<varlistentry>
<term xlink:href="#{$id}">
<xsl:attribute name="xml:id"><xsl:value-of select="$id"/></xsl:attribute>
<option>
<xsl:value-of select="attr[@name = 'name']/string/@value" />
</option>
</term>
<listitem>
<xsl:value-of disable-output-escaping="yes"
select="attr[@name = 'description']/string/@value" />
<xsl:if test="attr[@name = 'type']">
<para>
<emphasis>Type:</emphasis>
<xsl:text> </xsl:text>
<xsl:value-of select="attr[@name = 'type']/string/@value"/>
<xsl:if test="attr[@name = 'readOnly']/bool/@value = 'true'">
<xsl:text> </xsl:text>
<emphasis>(read only)</emphasis>
</xsl:if>
</para>
</xsl:if>
<xsl:if test="attr[@name = 'default-db']">
<xsl:value-of disable-output-escaping="yes"
select="attr[@name = 'default-db']/string/@value" />
</xsl:if>
<xsl:if test="attr[@name = 'example-db']">
<xsl:value-of disable-output-escaping="yes"
select="attr[@name = 'example-db']/string/@value" />
</xsl:if>
<xsl:if test="attr[@name = 'relatedPackages']">
<para>
<emphasis>Related packages:</emphasis>
</para>
<xsl:value-of disable-output-escaping="yes"
select="attr[@name = 'relatedPackages']/string/@value" />
</xsl:if>
<xsl:if test="count(attr[@name = 'declarations']/list/*) != 0">
<para>
<emphasis>Declared by:</emphasis>
</para>
<xsl:apply-templates select="attr[@name = 'declarations']" />
</xsl:if>
<xsl:if test="count(attr[@name = 'definitions']/list/*) != 0">
<para>
<emphasis>Defined by:</emphasis>
</para>
<xsl:apply-templates select="attr[@name = 'definitions']" />
</xsl:if>
</listitem>
</varlistentry>
</xsl:for-each>
</variablelist>
</xsl:template>
<xsl:template match="attrs[attr[@name = '_type' and string[@value = 'literalDocBook']]]" mode = "top">
<xsl:value-of disable-output-escaping="yes" select="attr[@name = 'text']/string/@value" />
</xsl:template>
<xsl:template match="attr[@name = 'declarations' or @name = 'definitions']">
<simplelist>
<!--
Example:
opt.declarations = [ { name = "foo/bar.nix"; url = "https://github.com/....."; } ];
-->
<xsl:for-each select="list/attrs[attr[@name = 'name']]">
<member><filename>
<xsl:if test="attr[@name = 'url']">
<xsl:attribute name="xlink:href"><xsl:value-of select="attr[@name = 'url']/string/@value"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="attr[@name = 'name']/string/@value"/>
</filename></member>
</xsl:for-each>
<!--
When the declarations/definitions are raw strings,
fall back to hardcoded location logic, specific to Nixpkgs.
-->
<xsl:for-each select="list/string">
<member><filename>
<!-- Hyperlink the filename either to the NixOS Subversion
repository (if its a module and we have a revision number),
or to the local filesystem. -->
<xsl:choose>
<xsl:when test="not(starts-with(@value, '/'))">
<xsl:choose>
<xsl:when test="$revision = 'local'">
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/master/<xsl:value-of select="@value"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/<xsl:value-of select="$revision"/>/<xsl:value-of select="@value"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$revision != 'local' and $program = 'nixops' and contains(@value, '/nix/')">
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixops/blob/<xsl:value-of select="$revision"/>/nix/<xsl:value-of select="substring-after(@value, '/nix/')"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="xlink:href">file://<xsl:value-of select="@value"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!-- Print the filename and make it user-friendly by replacing the
/nix/store/<hash> prefix by the default location of nixos
sources. -->
<xsl:choose>
<xsl:when test="not(starts-with(@value, '/'))">
&lt;nixpkgs/<xsl:value-of select="@value"/>&gt;
</xsl:when>
<xsl:when test="contains(@value, 'nixops') and contains(@value, '/nix/')">
&lt;nixops/<xsl:value-of select="substring-after(@value, '/nix/')"/>&gt;
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@value" />
</xsl:otherwise>
</xsl:choose>
</filename></member>
</xsl:for-each>
</simplelist>
</xsl:template>
</xsl:stylesheet>

View File

@ -1,6 +0,0 @@
{ file }:
builtins.attrValues
(builtins.mapAttrs
(name: def: def // { inherit name; })
(builtins.fromJSON (builtins.readFile file)))

View File

@ -0,0 +1,343 @@
import collections
import json
import os
import sys
from typing import Any, Dict, List
from collections.abc import MutableMapping, Sequence
import inspect
# for MD conversion
import markdown_it
import markdown_it.renderer
from markdown_it.token import Token
from markdown_it.utils import OptionsDict
from mdit_py_plugins.container import container_plugin
from mdit_py_plugins.deflist import deflist_plugin
from mdit_py_plugins.myst_role import myst_role_plugin
from xml.sax.saxutils import escape, quoteattr
manpage_urls = json.load(open(os.getenv('MANPAGE_URLS')))
class Renderer(markdown_it.renderer.RendererProtocol):
__output__ = "docbook"
def __init__(self, parser=None):
self.rules = {
k: v
for k, v in inspect.getmembers(self, predicate=inspect.ismethod)
if not (k.startswith("render") or k.startswith("_"))
} | {
"container_{.note}_open": self._note_open,
"container_{.note}_close": self._note_close,
"container_{.important}_open": self._important_open,
"container_{.important}_close": self._important_close,
"container_{.warning}_open": self._warning_open,
"container_{.warning}_close": self._warning_close,
}
def render(self, tokens: Sequence[Token], options: OptionsDict, env: MutableMapping) -> str:
assert '-link-tag-stack' not in env
env['-link-tag-stack'] = []
assert '-deflist-stack' not in env
env['-deflist-stack'] = []
def do_one(i, token):
if token.type == "inline":
assert token.children is not None
return self.renderInline(token.children, options, env)
elif token.type in self.rules:
return self.rules[token.type](tokens[i], tokens, i, options, env)
else:
raise NotImplementedError("md token not supported yet", token)
return "".join(map(lambda arg: do_one(*arg), enumerate(tokens)))
def renderInline(self, tokens: Sequence[Token], options: OptionsDict, env: MutableMapping) -> str:
# HACK to support docbook links and xrefs. link handling is only necessary because the docbook
# manpage stylesheet converts - in urls to a mathematical minus, which may be somewhat incorrect.
for i, token in enumerate(tokens):
if token.type != 'link_open':
continue
token.tag = 'link'
# turn [](#foo) into xrefs
if token.attrs['href'][0:1] == '#' and tokens[i + 1].type == 'link_close':
token.tag = "xref"
# turn <x> into links without contents
if tokens[i + 1].type == 'text' and tokens[i + 1].content == token.attrs['href']:
tokens[i + 1].content = ''
def do_one(i, token):
if token.type in self.rules:
return self.rules[token.type](tokens[i], tokens, i, options, env)
else:
raise NotImplementedError("md node not supported yet", token)
return "".join(map(lambda arg: do_one(*arg), enumerate(tokens)))
def text(self, token, tokens, i, options, env):
return escape(token.content)
def paragraph_open(self, token, tokens, i, options, env):
return "<para>"
def paragraph_close(self, token, tokens, i, options, env):
return "</para>"
def hardbreak(self, token, tokens, i, options, env):
return "<literallayout>\n</literallayout>"
def softbreak(self, token, tokens, i, options, env):
# should check options.breaks() and emit hard break if so
return "\n"
def code_inline(self, token, tokens, i, options, env):
return f"<literal>{escape(token.content)}</literal>"
def code_block(self, token, tokens, i, options, env):
return f"<programlisting>{escape(token.content)}</programlisting>"
def link_open(self, token, tokens, i, options, env):
env['-link-tag-stack'].append(token.tag)
(attr, start) = ('linkend', 1) if token.attrs['href'][0] == '#' else ('xlink:href', 0)
return f"<{token.tag} {attr}={quoteattr(token.attrs['href'][start:])}>"
def link_close(self, token, tokens, i, options, env):
return f"</{env['-link-tag-stack'].pop()}>"
def list_item_open(self, token, tokens, i, options, env):
return "<listitem>"
def list_item_close(self, token, tokens, i, options, env):
return "</listitem>\n"
# HACK open and close para for docbook change size. remove soon.
def bullet_list_open(self, token, tokens, i, options, env):
return "<para><itemizedlist>\n"
def bullet_list_close(self, token, tokens, i, options, env):
return "\n</itemizedlist></para>"
def em_open(self, token, tokens, i, options, env):
return "<emphasis>"
def em_close(self, token, tokens, i, options, env):
return "</emphasis>"
def strong_open(self, token, tokens, i, options, env):
return "<emphasis role=\"strong\">"
def strong_close(self, token, tokens, i, options, env):
return "</emphasis>"
def fence(self, token, tokens, i, options, env):
info = f" language={quoteattr(token.info)}" if token.info != "" else ""
return f"<programlisting{info}>{escape(token.content)}</programlisting>"
def blockquote_open(self, token, tokens, i, options, env):
return "<para><blockquote>"
def blockquote_close(self, token, tokens, i, options, env):
return "</blockquote></para>"
def _note_open(self, token, tokens, i, options, env):
return "<para><note>"
def _note_close(self, token, tokens, i, options, env):
return "</note></para>"
def _important_open(self, token, tokens, i, options, env):
return "<para><important>"
def _important_close(self, token, tokens, i, options, env):
return "</important></para>"
def _warning_open(self, token, tokens, i, options, env):
return "<para><warning>"
def _warning_close(self, token, tokens, i, options, env):
return "</warning></para>"
# markdown-it emits tokens based on the html syntax tree, but docbook is
# slightly different. html has <dl>{<dt/>{<dd/>}}</dl>,
# docbook has <variablelist>{<varlistentry><term/><listitem/></varlistentry>}<variablelist>
# we have to reject multiple definitions for the same term for time being.
def dl_open(self, token, tokens, i, options, env):
env['-deflist-stack'].append({})
return "<para><variablelist>"
def dl_close(self, token, tokens, i, options, env):
env['-deflist-stack'].pop()
return "</variablelist></para>"
def dt_open(self, token, tokens, i, options, env):
env['-deflist-stack'][-1]['has-dd'] = False
return "<varlistentry><term>"
def dt_close(self, token, tokens, i, options, env):
return "</term>"
def dd_open(self, token, tokens, i, options, env):
if env['-deflist-stack'][-1]['has-dd']:
raise Exception("multiple definitions per term not supported")
env['-deflist-stack'][-1]['has-dd'] = True
return "<listitem>"
def dd_close(self, token, tokens, i, options, env):
return "</listitem></varlistentry>"
def myst_role(self, token, tokens, i, options, env):
if token.meta['name'] == 'command':
return f"<command>{escape(token.content)}</command>"
if token.meta['name'] == 'file':
return f"<filename>{escape(token.content)}</filename>"
if token.meta['name'] == 'var':
return f"<varname>{escape(token.content)}</varname>"
if token.meta['name'] == 'env':
return f"<envar>{escape(token.content)}</envar>"
if token.meta['name'] == 'option':
return f"<option>{escape(token.content)}</option>"
if token.meta['name'] == 'manpage':
[page, section] = [ s.strip() for s in token.content.rsplit('(', 1) ]
section = section[:-1]
man = f"{page}({section})"
title = f"<refentrytitle>{escape(page)}</refentrytitle>"
vol = f"<manvolnum>{escape(section)}</manvolnum>"
ref = f"<citerefentry>{title}{vol}</citerefentry>"
if man in manpage_urls:
return f"<link xlink:href={quoteattr(manpage_urls[man])}>{ref}</link>"
else:
return ref
raise NotImplementedError("md node not supported yet", token)
md = (
markdown_it.MarkdownIt(renderer_cls=Renderer)
# TODO maybe fork the plugin and have only a single rule for all?
.use(container_plugin, name="{.note}")
.use(container_plugin, name="{.important}")
.use(container_plugin, name="{.warning}")
.use(deflist_plugin)
.use(myst_role_plugin)
)
# converts in-place!
def convertMD(options: Dict[str, Any]) -> str:
def optionIs(option: Dict[str, Any], key: str, typ: str) -> bool:
if key not in option: return False
if type(option[key]) != dict: return False
if '_type' not in option[key]: return False
return option[key]['_type'] == typ
def convertCode(name: str, option: Dict[str, Any], key: str):
if optionIs(option, key, 'literalMD'):
option[key] = md.render(f"*{key.capitalize()}:*\n{option[key]['text']}")
elif optionIs(option, key, 'literalExpression'):
code = option[key]['text']
# for multi-line code blocks we only have to count ` runs at the beginning
# of a line, but this is much easier.
multiline = '\n' in code
longest, current = (0, 0)
for c in code:
current = current + 1 if c == '`' else 0
longest = max(current, longest)
# inline literals need a space to separate ticks from content, code blocks
# need newlines. inline literals need one extra tick, code blocks need three.
ticks, sep = ('`' * (longest + (3 if multiline else 1)), '\n' if multiline else ' ')
code = f"{ticks}{sep}{code}{sep}{ticks}"
option[key] = md.render(f"*{key.capitalize()}:*\n{code}")
elif optionIs(option, key, 'literalDocBook'):
option[key] = f"<para><emphasis>{key.capitalize()}:</emphasis> {option[key]['text']}</para>"
elif key in option:
raise Exception(f"{name} {key} has unrecognized type", option[key])
for (name, option) in options.items():
try:
if optionIs(option, 'description', 'mdDoc'):
option['description'] = md.render(option['description']['text'])
elif markdownByDefault:
option['description'] = md.render(option['description'])
else:
option['description'] = ("<nixos:option-description><para>" +
option['description'] +
"</para></nixos:option-description>")
convertCode(name, option, 'example')
convertCode(name, option, 'default')
if 'relatedPackages' in option:
option['relatedPackages'] = md.render(option['relatedPackages'])
except Exception as e:
raise Exception(f"Failed to render option {name}") from e
return options
id_translate_table = {
ord('*'): ord('_'),
ord('<'): ord('_'),
ord(' '): ord('_'),
ord('>'): ord('_'),
ord('['): ord('_'),
ord(']'): ord('_'),
ord(':'): ord('_'),
ord('"'): ord('_'),
}
def need_env(n):
if n not in os.environ:
raise RuntimeError("required environment variable not set", n)
return os.environ[n]
OTD_REVISION = need_env('OTD_REVISION')
OTD_DOCUMENT_TYPE = need_env('OTD_DOCUMENT_TYPE')
OTD_VARIABLE_LIST_ID = need_env('OTD_VARIABLE_LIST_ID')
OTD_OPTION_ID_PREFIX = need_env('OTD_OPTION_ID_PREFIX')
def print_decl_def(header, locs):
print(f"""<para><emphasis>{header}:</emphasis></para>""")
print(f"""<simplelist>""")
for loc in locs:
# locations can be either plain strings (specific to nixpkgs), or attrsets
# { name = "foo/bar.nix"; url = "https://github.com/....."; }
if isinstance(loc, str):
# Hyperlink the filename either to the NixOS github
# repository (if its a module and we have a revision number),
# or to the local filesystem.
if not loc.startswith('/'):
if OTD_REVISION == 'local':
href = f"https://github.com/NixOS/nixpkgs/blob/master/{loc}"
else:
href = f"https://github.com/NixOS/nixpkgs/blob/{OTD_REVISION}/{loc}"
else:
href = f"file://{loc}"
# Print the filename and make it user-friendly by replacing the
# /nix/store/<hash> prefix by the default location of nixos
# sources.
if not loc.startswith('/'):
name = f"<nixpkgs/{loc}>"
elif loc.contains('nixops') and loc.contains('/nix/'):
name = f"<nixops/{loc[loc.find('/nix/') + 5:]}>"
else:
name = loc
print(f"""<member><filename xlink:href={quoteattr(href)}>""")
print(escape(name))
print(f"""</filename></member>""")
else:
href = f" xlink:href={quoteattr(loc['url'])}" if 'url' in loc else ""
print(f"""<member><filename{href}>{escape(loc['name'])}</filename></member>""")
print(f"""</simplelist>""")
markdownByDefault = False
optOffset = 0
for arg in sys.argv[1:]:
if arg == "--markdown-by-default":
optOffset += 1
markdownByDefault = True
options = convertMD(json.load(open(sys.argv[1 + optOffset], 'r')))
keys = list(options.keys())
keys.sort(key=lambda opt: [ (0 if p.startswith("enable") else 1 if p.startswith("package") else 2, p)
for p in options[opt]['loc'] ])
print(f"""<?xml version="1.0" encoding="UTF-8"?>""")
if OTD_DOCUMENT_TYPE == 'appendix':
print("""<appendix xmlns="http://docbook.org/ns/docbook" xml:id="appendix-configuration-options">""")
print(""" <title>Configuration Options</title>""")
print(f"""<variablelist xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:nixos="tag:nixos.org"
xmlns="http://docbook.org/ns/docbook"
xml:id="{OTD_VARIABLE_LIST_ID}">""")
for name in keys:
opt = options[name]
id = OTD_OPTION_ID_PREFIX + name.translate(id_translate_table)
print(f"""<varlistentry>""")
# NOTE adding extra spaces here introduces spaces into xref link expansions
print(f"""<term xlink:href={quoteattr("#" + id)} xml:id={quoteattr(id)}>""", end='')
print(f"""<option>{escape(name)}</option>""", end='')
print(f"""</term>""")
print(f"""<listitem>""")
print(opt['description'])
if typ := opt.get('type'):
ro = " <emphasis>(read only)</emphasis>" if opt.get('readOnly', False) else ""
print(f"""<para><emphasis>Type:</emphasis> {escape(typ)}{ro}</para>""")
if default := opt.get('default'):
print(default)
if example := opt.get('example'):
print(example)
if related := opt.get('relatedPackages'):
print(f"""<para>""")
print(f""" <emphasis>Related packages:</emphasis>""")
print(f"""</para>""")
print(related)
if decl := opt.get('declarations'):
print_decl_def("Declared by", decl)
if defs := opt.get('definitions'):
print_decl_def("Defined by", defs)
print(f"""</listitem>""")
print(f"""</varlistentry>""")
print("""</variablelist>""")
if OTD_DOCUMENT_TYPE == 'appendix':
print("""</appendix>""")

View File

@ -1,27 +0,0 @@
import xml.etree.ElementTree as ET
import sys
tree = ET.parse(sys.argv[1])
# the xml tree is of the form
# <expr><list> {all options, each an attrs} </list></expr>
options = list(tree.getroot().find('list'))
def sortKey(opt):
def order(s):
if s.startswith("enable"):
return 0
if s.startswith("package"):
return 1
return 2
return [
(order(p.attrib['value']), p.attrib['value'])
for p in opt.findall('attr[@name="loc"]/list/string')
]
options.sort(key=sortKey)
doc = ET.Element("expr")
newOptions = ET.SubElement(doc, "list")
newOptions.extend(options)
ET.ElementTree(doc).write(sys.argv[2], encoding='utf-8')

View File

@ -1,5 +1,5 @@
{ fetchFromGitLab
, lib
{ lib
, fetchFromGitLab
, python3Packages
, gobject-introspection
, gtk3
@ -9,8 +9,10 @@
, chromecastSupport ? false
, serverSupport ? false
, keyringSupport ? true
, notifySupport ? true, libnotify
, networkSupport ? true, networkmanager
, notifySupport ? true
, libnotify
, networkSupport ? true
, networkmanager
}:
python3Packages.buildPythonApplication rec {
@ -21,8 +23,8 @@ python3Packages.buildPythonApplication rec {
src = fetchFromGitLab {
owner = "sublime-music";
repo = pname;
rev = "v${version}";
sha256 = "sha256-n77mTgElwwFaX3WQL8tZzbkPwnsyQ08OW9imSOjpBlg=";
rev = "refs/tags/v${version}";
hash = "sha256-n77mTgElwwFaX3WQL8tZzbkPwnsyQ08OW9imSOjpBlg=";
};
nativeBuildInputs = [
@ -38,12 +40,21 @@ python3Packages.buildPythonApplication rec {
"python-mpv"
];
postPatch = ''
sed -i "/--cov/d" setup.cfg
sed -i "/--no-cov-on-fail/d" setup.cfg
# https://github.com/sublime-music/sublime-music/pull/370
# Can be removed in later versions (probably > 0.11.16)
substituteInPlace pyproject.toml \
--replace 'python-Levenshtein = "^0.12.0"' 'Levenshtein = ">0.12.0"'
'';
buildInputs = [
gtk3
pango
]
++ lib.optional notifySupport libnotify
++ lib.optional networkSupport networkmanager
++ lib.optional notifySupport libnotify
++ lib.optional networkSupport networkmanager
;
propagatedBuildInputs = with python3Packages; [
@ -59,16 +70,11 @@ python3Packages.buildPythonApplication rec {
requests
semver
]
++ lib.optional chromecastSupport PyChromecast
++ lib.optional keyringSupport keyring
++ lib.optional serverSupport bottle
++ lib.optional chromecastSupport PyChromecast
++ lib.optional keyringSupport keyring
++ lib.optional serverSupport bottle
;
postPatch = ''
sed -i "/--cov/d" setup.cfg
sed -i "/--no-cov-on-fail/d" setup.cfg
'';
# hook for gobject-introspection doesn't like strictDeps
# https://github.com/NixOS/nixpkgs/issues/56943
strictDeps = false;
@ -98,6 +104,7 @@ python3Packages.buildPythonApplication rec {
meta = with lib; {
description = "GTK3 Subsonic/Airsonic client";
homepage = "https://sublimemusic.app/";
changelog = "https://github.com/sublime-music/sublime-music/blob/v${version}/CHANGELOG.rst";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ albakham sumnerevans ];
};

View File

@ -8,13 +8,13 @@
python3Packages.buildPythonApplication rec {
pname = "vorta";
version = "0.8.9";
version = "0.8.10";
src = fetchFromGitHub {
owner = "borgbase";
repo = "vorta";
rev = "refs/tags/v${version}";
sha256 = "sha256-5RZXHMov3CX0zRprs7sgz0+cGEdESLrg4I2glRnTkcU=";
hash = "sha256-okxZ1kALB5l94ShStAJLfzD37MLhob8MCzhbqfVISkw=";
};
nativeBuildInputs = [ wrapQtAppsHook ];
@ -84,10 +84,11 @@ python3Packages.buildPythonApplication rec {
];
meta = with lib; {
license = licenses.gpl3Only;
homepage = "https://vorta.borgbase.com/";
maintainers = with maintainers; [ ma27 ];
changelog = "https://github.com/borgbase/vorta/releases/tag/v0.8.10";
description = "Desktop Backup Client for Borg";
homepage = "https://vorta.borgbase.com/";
license = licenses.gpl3Only;
maintainers = with maintainers; [ ma27 ];
platforms = platforms.linux;
};
}

View File

@ -5,13 +5,13 @@
buildPythonApplication rec {
pname = "rednotebook";
version = "2.29";
version = "2.29.3";
src = fetchFromGitHub {
owner = "jendrikseipp";
repo = "rednotebook";
rev = "refs/tags/v${version}";
sha256 = "sha256-gRmSxWAVF61svlZ0/IMTrWCmwin+uPONLBlcJOYcp2w=";
sha256 = "sha256-2qgWJ/bIravil/SuApA7pNXkxS5xUcdFpjVGO/ogDpw=";
};
# We have not packaged tests.

View File

@ -45,7 +45,7 @@ assert with lib.strings; (
stdenv.mkDerivation rec {
pname = "palemoon";
version = "31.4.2";
version = "32.0.0";
src = fetchFromGitea {
domain = "repo.palemoon.org";
@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
repo = "Pale-Moon";
rev = "${version}_Release";
fetchSubmodules = true;
sha256 = "sha256-vJhjQfsa05fFNL24tUBHfKoKZG2aLXp5xBdUqqGDtAE=";
sha256 = "sha256-0N63Xo8cRIHwEXkT8eeot0DgZU7aPirmVq/iHJjlGRw=";
};
nativeBuildInputs = [

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "rke";
version = "1.4.1";
version = "1.4.2";
src = fetchFromGitHub {
owner = "rancher";
repo = pname;
rev = "v${version}";
hash = "sha256-H5T7Hr6/YL93lbCLOxfQ+Kmv3C+FS074418mHhBV3Bs=";
hash = "sha256-4aT9SguxN7oaewnrxme1nCFfaQytSJ9Aeb0WEQACtUA=";
};
vendorHash = "sha256-zV1lrJhzrUAcEk6jYLCFrHcYw3CZart46qXErCTjZyQ=";

View File

@ -220,13 +220,13 @@ let
sha512 = "XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==";
};
};
"@azure/msal-common-9.0.2" = {
"@azure/msal-common-9.1.1" = {
name = "_at_azure_slash_msal-common";
packageName = "@azure/msal-common";
version = "9.0.2";
version = "9.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.2.tgz";
sha512 = "qzwxuF8kZAp+rNUactMCgJh8fblq9D4lSqrrIxMDzLjgSZtjN32ix7r/HBe8QdOr76II9SVVPcMkX4sPzPfQ7w==";
url = "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.1.1.tgz";
sha512 = "we9xR8lvu47fF0h+J8KyXoRy9+G/fPzm3QEa2TrdR3jaVS3LKAyE2qyMuUkNdbVkvzl8Zr9f7l+IUSP22HeqXw==";
};
};
"@azure/msal-node-1.0.0-beta.6" = {
@ -256,22 +256,22 @@ let
sha512 = "o/Mf6lkyYG/eBW4/hXB9864RxVNmAkcKHjsGR6Inlp5hupa3exjSyH2KjO3tLO//YGA+tS+17hM2bxRl9Sn16g==";
};
};
"@babel/parser-7.20.7" = {
"@babel/parser-7.20.13" = {
name = "_at_babel_slash_parser";
packageName = "@babel/parser";
version = "7.20.7";
version = "7.20.13";
src = fetchurl {
url = "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz";
sha512 = "T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==";
url = "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz";
sha512 = "gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==";
};
};
"@babel/runtime-7.20.7" = {
"@babel/runtime-7.20.13" = {
name = "_at_babel_slash_runtime";
packageName = "@babel/runtime";
version = "7.20.7";
version = "7.20.13";
src = fetchurl {
url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz";
sha512 = "UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==";
url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz";
sha512 = "gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==";
};
};
"@codemirror/autocomplete-6.4.0" = {
@ -283,13 +283,13 @@ let
sha512 = "HLF2PnZAm1s4kGs30EiqKMgD7XsYaQ0XJnMR0rofEWQ5t5D60SfqpDIkIh1ze5tiEbyUWm8+VJ6W1/erVvBMIA==";
};
};
"@codemirror/commands-6.1.3" = {
"@codemirror/commands-6.2.0" = {
name = "_at_codemirror_slash_commands";
packageName = "@codemirror/commands";
version = "6.1.3";
version = "6.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.3.tgz";
sha512 = "wUw1+vb34Ultv0Q9m/OVB7yizGXgtoDbkI5f5ErM8bebwLyUYjicdhJTKhTvPTpgkv8dq/BK0lQ3K5pRf2DAJw==";
url = "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.0.tgz";
sha512 = "+00smmZBradoGFEkRjliN7BjqPh/Hx0KCHWOEibUmflUqZz2RwBTU0MrVovEEHozhx3AUSGcO/rl3/5f9e9Biw==";
};
};
"@codemirror/lang-javascript-6.1.2" = {
@ -382,13 +382,13 @@ let
sha512 = "hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==";
};
};
"@fontsource/open-sans-4.5.13" = {
"@fontsource/open-sans-4.5.14" = {
name = "_at_fontsource_slash_open-sans";
packageName = "@fontsource/open-sans";
version = "4.5.13";
version = "4.5.14";
src = fetchurl {
url = "https://registry.npmjs.org/@fontsource/open-sans/-/open-sans-4.5.13.tgz";
sha512 = "/UzqP7ZFk145XAq8KG4pvFPP7UQhtreDGXgqXZjagCDreKxcrhwn/x7DYz9rPcycWkLUVApIybcoczGZiM0cRg==";
url = "https://registry.npmjs.org/@fontsource/open-sans/-/open-sans-4.5.14.tgz";
sha512 = "mBXIIETBlW8q/ocuUN0hyGow2iuf75hQEHQt8R/RJ/HcphVbLg8KB7pHYGbFGDqs75W+SWvTC7JkVeAjT65BuQ==";
};
};
"@fortawesome/fontawesome-common-types-0.2.36" = {
@ -445,13 +445,13 @@ let
sha512 = "JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==";
};
};
"@fortawesome/vue-fontawesome-2.0.9" = {
"@fortawesome/vue-fontawesome-2.0.10" = {
name = "_at_fortawesome_slash_vue-fontawesome";
packageName = "@fortawesome/vue-fontawesome";
version = "2.0.9";
version = "2.0.10";
src = fetchurl {
url = "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.9.tgz";
sha512 = "tUmO92PFHbLOplitjHNBVGMJm6S57vp16tBXJVPKSI/6CfjrgLycqKxEpC6f7qsOqUdoXs5nIv4HLUfrOMHzuw==";
url = "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.10.tgz";
sha512 = "OTETSXz+3ygD2OK2/vy82cmUBpuJqeOAg4gfnnv+f2Rir1tDIhQg026Q3NQxznq83ZLz8iNqGG9XJm26inpDeg==";
};
};
"@gar/promisify-1.1.3" = {
@ -760,13 +760,13 @@ let
sha512 = "OWhCpdu4QqggOPX1YPZ4XVmLLRX+lhGjXV6RNA7sogOwLqlEmSslnN/lhR5dkhcWZbKWBQH29YCrB3LDPRu/IA==";
};
};
"@oclif/core-1.24.0" = {
"@oclif/core-1.26.1" = {
name = "_at_oclif_slash_core";
packageName = "@oclif/core";
version = "1.24.0";
version = "1.26.1";
src = fetchurl {
url = "https://registry.npmjs.org/@oclif/core/-/core-1.24.0.tgz";
sha512 = "J41suyV4fLfLcRRySZdtgFYSjIlpYqD90SY01Fm4+ZJUMcfDh/eQAD4sogyYOsIT0bfEzYOyYCjmfHmgcoX5aA==";
url = "https://registry.npmjs.org/@oclif/core/-/core-1.26.1.tgz";
sha512 = "g+OWJcM7JOVI53caTEtq0BB1nPotWctRLUyFODPgvDqXhVR7QED+Qz3LwFAMD8dt7/Ar2ZNq15U3bnpnOv453A==";
};
};
"@oclif/errors-1.3.6" = {
@ -949,49 +949,49 @@ let
sha512 = "gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==";
};
};
"@sentry/core-7.31.0" = {
"@sentry/core-7.33.0" = {
name = "_at_sentry_slash_core";
packageName = "@sentry/core";
version = "7.31.0";
version = "7.33.0";
src = fetchurl {
url = "https://registry.npmjs.org/@sentry/core/-/core-7.31.0.tgz";
sha512 = "IZS1MZznyBOPw7UEpZwq3t3aaaVhFB+r3KM4JYFSJRr7Ky9TjldXA3hadNUTztjYGgEC3u8kB9jXoRvNXM2hqA==";
url = "https://registry.npmjs.org/@sentry/core/-/core-7.33.0.tgz";
sha512 = "mrSgUnXjxHVi0cVea1lv7gC/Y66ya2a3atCHaPEij/+l+3APg5d0Ixt1zMx5YllMiZKf6wpxlZ0uwXcqdAAw+w==";
};
};
"@sentry/integrations-7.31.0" = {
"@sentry/integrations-7.33.0" = {
name = "_at_sentry_slash_integrations";
packageName = "@sentry/integrations";
version = "7.31.0";
version = "7.33.0";
src = fetchurl {
url = "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.31.0.tgz";
sha512 = "pZyxY2t92gWmqULXsSEAjy5LMUyFWTA4f5AL+2gB5xmUjYXSaKT37R7sX5IQ2MVbCyrpJZERklx2LLhCrKtigw==";
url = "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.33.0.tgz";
sha512 = "r67/9R+DaOZETg7gRvOuYPo5XQdzEaE8f7OaET071dUP0kyUBjO74Y7SZxZV/xjBthMXexw5TANHmLVrZQQVag==";
};
};
"@sentry/node-7.31.0" = {
"@sentry/node-7.33.0" = {
name = "_at_sentry_slash_node";
packageName = "@sentry/node";
version = "7.31.0";
version = "7.33.0";
src = fetchurl {
url = "https://registry.npmjs.org/@sentry/node/-/node-7.31.0.tgz";
sha512 = "DBjPfThZ5CIC2G9/CVFRlSOP/QqF1IoZXNpTUPZkhQ1cjShJeERT64jMkTdk+RAStSTpEfF6J0rUy1NIyHHEoQ==";
url = "https://registry.npmjs.org/@sentry/node/-/node-7.33.0.tgz";
sha512 = "isQVF9LLSG4EZLHiSJ3chgK6f3ZBdGxm8fX6YGm8HWz07CubJddes3yBPLPRNXrRLd7X3SK8pPcK5oc3LIKqAw==";
};
};
"@sentry/types-7.31.0" = {
"@sentry/types-7.33.0" = {
name = "_at_sentry_slash_types";
packageName = "@sentry/types";
version = "7.31.0";
version = "7.33.0";
src = fetchurl {
url = "https://registry.npmjs.org/@sentry/types/-/types-7.31.0.tgz";
sha512 = "nFqo7wyMnapdSEdw1MD+cavDtD9x5QQmh/bwLEOb/euM0cHFJHYyD7CveY/mQng4HyEVWY+DCtX/7E3GcQ7Bdw==";
url = "https://registry.npmjs.org/@sentry/types/-/types-7.33.0.tgz";
sha512 = "5kkmYjtBWSbPxfYGiXdZFPS6xpFBNlXvDqeX4NpCFXz6/LiEDn6tZ61kuCSFb8MZlyqyCX5WsP3aiI2FJfpGIA==";
};
};
"@sentry/utils-7.31.0" = {
"@sentry/utils-7.33.0" = {
name = "_at_sentry_slash_utils";
packageName = "@sentry/utils";
version = "7.31.0";
version = "7.33.0";
src = fetchurl {
url = "https://registry.npmjs.org/@sentry/utils/-/utils-7.31.0.tgz";
sha512 = "B1KkvdfwlaqM7sDp3/yk2No7WsbMuLEywGRVOLzXeTqTLSBRBWyyYIudqPtx2LDds9anlUHj21zs9FKY+S3eiA==";
url = "https://registry.npmjs.org/@sentry/utils/-/utils-7.33.0.tgz";
sha512 = "msp02GV1gOfaN5FjKjWxI00rtbYLXEE5cTGldhs/Dt9KI63dDk1nwPDkSLhg6joqRItAq0thlBh6un717HdWbg==";
};
};
"@servie/events-1.0.0" = {
@ -1012,22 +1012,22 @@ let
sha512 = "Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==";
};
};
"@swc/core-1.3.27" = {
"@swc/core-1.3.28" = {
name = "_at_swc_slash_core";
packageName = "@swc/core";
version = "1.3.27";
version = "1.3.28";
src = fetchurl {
url = "https://registry.npmjs.org/@swc/core/-/core-1.3.27.tgz";
sha512 = "praRNgpeYGvwDIm/Cl6JU+yHMvwVraL0U6ejMgGyzvpcm1FVsZd1/EYXGqzbBJ0ALv7Gx4eK56h4GnwV6d4L0w==";
url = "https://registry.npmjs.org/@swc/core/-/core-1.3.28.tgz";
sha512 = "yzc61HbAIjHeOYTUW/IgXAywlSviMFymnUiLY7dNUELGHjMVxSp0XnIlPQN4v5UekYbwLEV8+KChaoQRACiQCw==";
};
};
"@swc/wasm-1.3.27" = {
"@swc/wasm-1.3.28" = {
name = "_at_swc_slash_wasm";
packageName = "@swc/wasm";
version = "1.3.27";
version = "1.3.28";
src = fetchurl {
url = "https://registry.npmjs.org/@swc/wasm/-/wasm-1.3.27.tgz";
sha512 = "bSFeKxGU2zY/xC3K7Y4sjdtHMgbv6gM2Z01PTMGoC8b2PVubPKeW+BYmprZFSf2eCOsNLZaVzVufdVTQB/ORfg==";
url = "https://registry.npmjs.org/@swc/wasm/-/wasm-1.3.28.tgz";
sha512 = "6RDkQHSi6FxaoPmGnzMq5smYxXlcEec+t6EHrv8rk4emIrnsFjSc2D2PQ0K4xoryJn2NVD3cDbAEVHe6XZX5AQ==";
};
};
"@techteamer/ocsp-1.0.0" = {
@ -1156,13 +1156,13 @@ let
sha512 = "erqUpFXksaeR2kejKnhnjZjbFxUpGZx4Z7ydNL9ie8tEhXPiZTsLeUDJ6aR1F8j5wWUAtOAQWUqkc7givBJbBA==";
};
};
"@types/express-4.17.15" = {
"@types/express-4.17.16" = {
name = "_at_types_slash_express";
packageName = "@types/express";
version = "4.17.15";
version = "4.17.16";
src = fetchurl {
url = "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz";
sha512 = "Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==";
url = "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz";
sha512 = "LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==";
};
};
"@types/express-jwt-0.0.42" = {
@ -1174,13 +1174,13 @@ let
sha512 = "WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==";
};
};
"@types/express-serve-static-core-4.17.32" = {
"@types/express-serve-static-core-4.17.33" = {
name = "_at_types_slash_express-serve-static-core";
packageName = "@types/express-serve-static-core";
version = "4.17.32";
version = "4.17.33";
src = fetchurl {
url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz";
sha512 = "aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==";
url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz";
sha512 = "TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==";
};
};
"@types/express-unless-2.0.1" = {
@ -1336,13 +1336,13 @@ let
sha512 = "sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==";
};
};
"@types/validator-13.7.10" = {
"@types/validator-13.7.11" = {
name = "_at_types_slash_validator";
packageName = "@types/validator";
version = "13.7.10";
version = "13.7.11";
src = fetchurl {
url = "https://registry.npmjs.org/@types/validator/-/validator-13.7.10.tgz";
sha512 = "t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==";
url = "https://registry.npmjs.org/@types/validator/-/validator-13.7.11.tgz";
sha512 = "WqTos+CnAKN64YwyBMhgUYhb5VsTNKwUY6AuzG5qu9/pFZJar/RJFMZBXwX7VS+uzYi+lIAr3WkvuWqEI9F2eg==";
};
};
"@types/webidl-conversions-7.0.0" = {
@ -1381,13 +1381,13 @@ let
sha512 = "xDWoEtxGXhH9Ku3ROYX/rzhcpt4v31hpPU5zF3UeVC/qxA3dChmqU8zvTUYoKh3j7rzpNsoFOwqsWG7XPMlaFA==";
};
};
"@vue/devtools-api-6.4.5" = {
"@vue/devtools-api-6.5.0" = {
name = "_at_vue_slash_devtools-api";
packageName = "@vue/devtools-api";
version = "6.4.5";
version = "6.5.0";
src = fetchurl {
url = "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz";
sha512 = "JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==";
url = "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz";
sha512 = "o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==";
};
};
"@xmldom/xmldom-0.8.6" = {
@ -1435,13 +1435,13 @@ let
sha512 = "PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==";
};
};
"acorn-8.8.1" = {
"acorn-8.8.2" = {
name = "acorn";
packageName = "acorn";
version = "8.8.1";
version = "8.8.2";
src = fetchurl {
url = "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz";
sha512 = "7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==";
url = "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz";
sha512 = "xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==";
};
};
"acorn-walk-8.2.0" = {
@ -1867,13 +1867,13 @@ let
sha512 = "9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==";
};
};
"aws-sdk-2.1295.0" = {
"aws-sdk-2.1301.0" = {
name = "aws-sdk";
packageName = "aws-sdk";
version = "2.1295.0";
version = "2.1301.0";
src = fetchurl {
url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1295.0.tgz";
sha512 = "HVYoFCyfiL8gzL/c0lSRTg8tWBLfqAEDfwzGe338ww/LahpmC6C07S71SBBIvtGq3dpd7IwEobAbubZDijrA0Q==";
url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1301.0.tgz";
sha512 = "AxCt0GfWV14AWC0yvN3+WEBr45JMu2X3FHb8r3H8EhZjJfHk3hWcDwu6vS5Qd8NFDATlFdWJfyQjPVU1YuaDfw==";
};
};
"aws-sign2-0.7.0" = {
@ -1921,13 +1921,13 @@ let
sha512 = "00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==";
};
};
"axios-retry-3.3.1" = {
"axios-retry-3.4.0" = {
name = "axios-retry";
packageName = "axios-retry";
version = "3.3.1";
version = "3.4.0";
src = fetchurl {
url = "https://registry.npmjs.org/axios-retry/-/axios-retry-3.3.1.tgz";
sha512 = "RohAUQTDxBSWLFEnoIG/6bvmy8l3TfpkclgStjl5MDCMBDgapAWCmr1r/9harQfWC8bzLC8job6UcL1A1Yc+/Q==";
url = "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz";
sha512 = "VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==";
};
};
"babel-helper-vue-jsx-merge-props-2.0.3" = {
@ -2956,13 +2956,13 @@ let
sha512 = "Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==";
};
};
"core-js-3.27.1" = {
"core-js-3.27.2" = {
name = "core-js";
packageName = "core-js";
version = "3.27.1";
version = "3.27.2";
src = fetchurl {
url = "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz";
sha512 = "GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==";
url = "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz";
sha512 = "9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==";
};
};
"core-util-is-1.0.2" = {
@ -4000,6 +4000,15 @@ let
sha512 = "89/sdkq+BKBuIyykaMl/vR9grFc3WFUPTjFo0THHbu+5g+q8rA7fKeoMfz+h84yOQIBcztmJ5ZJdk5uhEls31A==";
};
};
"express-prom-bundle-6.6.0" = {
name = "express-prom-bundle";
packageName = "express-prom-bundle";
version = "6.6.0";
src = fetchurl {
url = "https://registry.npmjs.org/express-prom-bundle/-/express-prom-bundle-6.6.0.tgz";
sha512 = "tZh2P2p5a8/yxQ5VbRav011Poa4R0mHqdFwn9Swe/obXDe5F0jY9wtRAfNYnqk4LXY7akyvR/nrvAHxQPWUjsQ==";
};
};
"express-unless-2.1.3" = {
name = "express-unless";
packageName = "express-unless";
@ -4486,13 +4495,13 @@ let
sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
};
};
"get-intrinsic-1.1.3" = {
"get-intrinsic-1.2.0" = {
name = "get-intrinsic";
packageName = "get-intrinsic";
version = "1.1.3";
version = "1.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz";
sha512 = "QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==";
url = "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz";
sha512 = "L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==";
};
};
"get-package-type-0.1.0" = {
@ -5125,13 +5134,13 @@ let
sha512 = "3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==";
};
};
"ioredis-5.2.5" = {
"ioredis-5.2.6" = {
name = "ioredis";
packageName = "ioredis";
version = "5.2.5";
version = "5.2.6";
src = fetchurl {
url = "https://registry.npmjs.org/ioredis/-/ioredis-5.2.5.tgz";
sha512 = "7HKo/ClM2DGLRXdFq8ruS3Uuadensz4A76wPOU0adqlOqd1qkhoLPDaBhmVhUhNGpB+J65/bhLmNB8DDY99HJQ==";
url = "https://registry.npmjs.org/ioredis/-/ioredis-5.2.6.tgz";
sha512 = "F1xO+kYIz+TCOccvhThs2pem6sc9uTl9JsZybWpqe4FeCFDmf04XwbLQUGIqi2UWaDUuR61w2dhxx6NJEFehOA==";
};
};
"ip-1.1.8" = {
@ -6727,13 +6736,13 @@ let
sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==";
};
};
"minimatch-5.1.4" = {
"minimatch-5.1.6" = {
name = "minimatch";
packageName = "minimatch";
version = "5.1.4";
version = "5.1.6";
src = fetchurl {
url = "https://registry.npmjs.org/minimatch/-/minimatch-5.1.4.tgz";
sha512 = "U0iNYXt9wALljzfnGkhFSy5sAC6/SCR3JrHrlsdJz4kF8MvhTRQNiC59iUi1iqsitV7abrNAJWElVL9pdnoUgw==";
url = "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz";
sha512 = "lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==";
};
};
"minimist-1.2.7" = {
@ -6961,13 +6970,13 @@ let
sha512 = "RjHwP2cCIWQ9iUIk1SziUMb9+jj5mC4OqG2w16E5yig8jySi/TwiFvKlwcjNrPsndph0HtgCtbENnk5julf3yQ==";
};
};
"msgpackr-1.8.1" = {
"msgpackr-1.8.2" = {
name = "msgpackr";
packageName = "msgpackr";
version = "1.8.1";
version = "1.8.2";
src = fetchurl {
url = "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.1.tgz";
sha512 = "05fT4J8ZqjYlR4QcRDIhLCYKUOHXk7C/xa62GzMKj74l3up9k2QZ3LgFc6qWdsPHl91QA2WLWqWc8b8t7GLNNw==";
url = "https://registry.npmjs.org/msgpackr/-/msgpackr-1.8.2.tgz";
sha512 = "eLuPeok0DMwsGN23AvuVg32mYpx55tsQnxI87d8V1yZsdT8U5jrWhmCa1INO/joGAFQFfo/eTlM/BxVwLKbBOQ==";
};
};
"mssql-7.3.5" = {
@ -7024,13 +7033,13 @@ let
sha512 = "z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==";
};
};
"n8n-core-0.151.1" = {
"n8n-core-0.151.2" = {
name = "n8n-core";
packageName = "n8n-core";
version = "0.151.1";
version = "0.151.2";
src = fetchurl {
url = "https://registry.npmjs.org/n8n-core/-/n8n-core-0.151.1.tgz";
sha512 = "tEPdPaJVJ+Vy87UD0XXAq7yhTPYl+WuBABtS2u9mxKtfu4XyOepK6M34XJV5gJtgBXxIPy8+sNCKVaugUvSGAA==";
url = "https://registry.npmjs.org/n8n-core/-/n8n-core-0.151.2.tgz";
sha512 = "QIGNeKuRuY+G+kPxDShjXnxVjCMCEbZ6xB530+V30s2MFa+XnEKJtPdLbsCr0j8AUTHqEb/oMkHAoEyPPg8M1g==";
};
};
"n8n-design-system-0.51.1" = {
@ -7042,31 +7051,31 @@ let
sha512 = "zK4UI/LkdRzAGZfL9K7/tZSLjxXTIKgt/72LrgEJ8CGNxYPavk0f7eYTH9Q8tbcLAaMLDjUcbcdzVEWh5YZofA==";
};
};
"n8n-editor-ui-0.177.1" = {
"n8n-editor-ui-0.178.1" = {
name = "n8n-editor-ui";
packageName = "n8n-editor-ui";
version = "0.177.1";
version = "0.178.1";
src = fetchurl {
url = "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-0.177.1.tgz";
sha512 = "h9TnC1mKjXyBXe2V6/Yzy81KzDvll6wlBugqnFGpTAs2IwjPDZ3WGwp94mCWwM7WDE9m2Ub9LX88ajj5WG8RyQ==";
url = "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-0.178.1.tgz";
sha512 = "bpSRVRys6fIAuhsmxQrU2QXP0UaRfGan+wODcZbX8SnWSG90ANN7R++CvS6tfL+i8vKvDzLYFjWlm1y40Esbag==";
};
};
"n8n-nodes-base-0.209.1" = {
"n8n-nodes-base-0.210.1" = {
name = "n8n-nodes-base";
packageName = "n8n-nodes-base";
version = "0.209.1";
version = "0.210.1";
src = fetchurl {
url = "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-0.209.1.tgz";
sha512 = "Ewpk1zuH1W3SZlsb1YRQJ5yOZUTD3m/VdKJE1UTTu2lwDqk+h8DhxmrLDY4AEcwm6Teyq8hjj0l1awCa1+Ppzg==";
url = "https://registry.npmjs.org/n8n-nodes-base/-/n8n-nodes-base-0.210.1.tgz";
sha512 = "UvkjbmJoBtgqHMz+ff7AJYnVcRpPLY7rh0OPQSR3B6BQ7lzE9eBaBpfTvtIopxRwKeK3vke9UUb6ztdkgDaBDw==";
};
};
"n8n-workflow-0.133.1" = {
"n8n-workflow-0.133.2" = {
name = "n8n-workflow";
packageName = "n8n-workflow";
version = "0.133.1";
version = "0.133.2";
src = fetchurl {
url = "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-0.133.1.tgz";
sha512 = "T3Es12JyM50FpJFogz0wKbzPOUC2iCDoL8/2br3oNU1Q53i4MfGAE2Ftf9hHOMF8pU9SN+m/D5WR3ELysI0PSQ==";
url = "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-0.133.2.tgz";
sha512 = "XnNmt5idpqb/7nVFtNCS4RQUDMfIslfepl2WJfwa/0jSQYWaJmFWhV0OmIj3mJTWaLaiy1qDjAEaEYZZBaQ69A==";
};
};
"named-placeholders-1.1.3" = {
@ -8410,13 +8419,13 @@ let
sha512 = "xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==";
};
};
"protobufjs-7.1.2" = {
"protobufjs-7.2.0" = {
name = "protobufjs";
packageName = "protobufjs";
version = "7.1.2";
version = "7.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz";
sha512 = "4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==";
url = "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.0.tgz";
sha512 = "hYCqTDuII4iJ4stZqiuGCSU8xxWl5JeXYpwARGtn/tWcKCAro6h3WQz+xpsNbXW0UYqpmTQFEyFWO0G0Kjt64g==";
};
};
"proxy-addr-2.0.7" = {
@ -8500,13 +8509,13 @@ let
sha512 = "RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==";
};
};
"punycode-2.2.0" = {
"punycode-2.3.0" = {
name = "punycode";
packageName = "punycode";
version = "2.2.0";
version = "2.3.0";
src = fetchurl {
url = "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz";
sha512 = "LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==";
url = "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz";
sha512 = "rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==";
};
};
"python-struct-1.1.3" = {
@ -10462,6 +10471,15 @@ let
sha512 = "WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==";
};
};
"url-value-parser-2.2.0" = {
name = "url-value-parser";
packageName = "url-value-parser";
version = "2.2.0";
src = fetchurl {
url = "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.2.0.tgz";
sha512 = "yIQdxJpgkPamPPAPuGdS7Q548rLhny42tg8d4vyTNzFqvOnwqrgHXvgehT09U7fwrzxi3RxCiXjoNUNnNOlQ8A==";
};
};
"urllib-2.40.0" = {
name = "urllib";
packageName = "urllib";
@ -11161,10 +11179,10 @@ in
n8n = nodeEnv.buildNodePackage {
name = "n8n";
packageName = "n8n";
version = "0.211.1";
version = "0.212.1";
src = fetchurl {
url = "https://registry.npmjs.org/n8n/-/n8n-0.211.1.tgz";
sha512 = "hD3AnzqByEYy6GMgjk//81JFdaM8UEnklcYo8Sjm4LKlDtOnjFIUFpN78KUkLVjM4WEPWkLczITFPhHuYcHCXA==";
url = "https://registry.npmjs.org/n8n/-/n8n-0.212.1.tgz";
sha512 = "9i4U/dJ84TEFIkj++nx+u3lLgpOxeco5QjopG+Ejjv6Gd3Jc+oL8MF3opN9v0JWagPX+yOnszol6aN+U4Sl8tA==";
};
dependencies = [
(sources."@acuminous/bitsyntax-0.1.2" // {
@ -11256,13 +11274,13 @@ in
sources."@azure/ms-rest-nodeauth-3.1.1"
(sources."@azure/msal-browser-2.32.2" // {
dependencies = [
sources."@azure/msal-common-9.0.2"
sources."@azure/msal-common-9.1.1"
];
})
sources."@azure/msal-common-7.6.0"
(sources."@azure/msal-node-1.14.6" // {
dependencies = [
sources."@azure/msal-common-9.0.2"
sources."@azure/msal-common-9.1.1"
];
})
(sources."@azure/storage-blob-12.12.0" // {
@ -11271,10 +11289,10 @@ in
sources."tslib-2.4.1"
];
})
sources."@babel/parser-7.20.7"
sources."@babel/runtime-7.20.7"
sources."@babel/parser-7.20.13"
sources."@babel/runtime-7.20.13"
sources."@codemirror/autocomplete-6.4.0"
sources."@codemirror/commands-6.1.3"
sources."@codemirror/commands-6.2.0"
sources."@codemirror/lang-javascript-6.1.2"
sources."@codemirror/language-6.4.0"
sources."@codemirror/lint-6.1.0"
@ -11285,7 +11303,7 @@ in
sources."@curlconverter/yargs-0.0.2"
sources."@curlconverter/yargs-parser-0.0.1"
sources."@dabh/diagnostics-2.0.3"
sources."@fontsource/open-sans-4.5.13"
sources."@fontsource/open-sans-4.5.14"
sources."@fortawesome/fontawesome-common-types-0.3.0"
sources."@fortawesome/fontawesome-svg-core-1.3.0"
(sources."@fortawesome/free-regular-svg-icons-6.2.1" // {
@ -11298,7 +11316,7 @@ in
sources."@fortawesome/fontawesome-common-types-0.2.36"
];
})
sources."@fortawesome/vue-fontawesome-2.0.9"
sources."@fortawesome/vue-fontawesome-2.0.10"
sources."@gar/promisify-1.1.3"
(sources."@google-cloud/common-3.10.0" // {
dependencies = [
@ -11319,7 +11337,7 @@ in
dependencies = [
sources."@grpc/proto-loader-0.7.4"
sources."long-5.2.1"
sources."protobufjs-7.1.2"
sources."protobufjs-7.2.0"
sources."yargs-16.2.0"
];
})
@ -11370,7 +11388,7 @@ in
sources."tslib-2.4.1"
];
})
(sources."@oclif/core-1.24.0" // {
(sources."@oclif/core-1.26.1" // {
dependencies = [
sources."supports-color-8.1.1"
sources."tslib-2.4.1"
@ -11422,15 +11440,15 @@ in
sources."domhandler-5.0.3"
];
})
sources."@sentry/core-7.31.0"
sources."@sentry/integrations-7.31.0"
sources."@sentry/node-7.31.0"
sources."@sentry/types-7.31.0"
sources."@sentry/utils-7.31.0"
sources."@sentry/core-7.33.0"
sources."@sentry/integrations-7.33.0"
sources."@sentry/node-7.33.0"
sources."@sentry/types-7.33.0"
sources."@sentry/utils-7.33.0"
sources."@servie/events-1.0.0"
sources."@sqltools/formatter-1.2.5"
sources."@swc/core-1.3.27"
sources."@swc/wasm-1.3.27"
sources."@swc/core-1.3.28"
sources."@swc/wasm-1.3.28"
sources."@techteamer/ocsp-1.0.0"
sources."@tediousjs/connection-string-0.3.0"
sources."@tokenizer/token-0.3.0"
@ -11444,9 +11462,9 @@ in
sources."@types/connect-3.4.35"
sources."@types/duplexify-3.6.1"
sources."@types/es-aggregate-error-1.0.2"
sources."@types/express-4.17.15"
sources."@types/express-4.17.16"
sources."@types/express-jwt-0.0.42"
sources."@types/express-serve-static-core-4.17.32"
sources."@types/express-serve-static-core-4.17.33"
sources."@types/express-unless-2.0.1"
sources."@types/js-nacl-1.3.1"
sources."@types/json-schema-7.0.11"
@ -11468,7 +11486,7 @@ in
sources."@types/stoppable-1.1.1"
sources."@types/tough-cookie-2.3.8"
sources."@types/tunnel-0.0.3"
sources."@types/validator-13.7.10"
sources."@types/validator-13.7.11"
sources."@types/webidl-conversions-7.0.0"
sources."@types/whatwg-url-8.2.2"
sources."@vue/compiler-sfc-2.7.14"
@ -11477,13 +11495,13 @@ in
sources."vue-2.6.14"
];
})
sources."@vue/devtools-api-6.4.5"
sources."@vue/devtools-api-6.5.0"
sources."@xmldom/xmldom-0.8.6"
sources."a-sync-waterfall-1.0.1"
sources."abbrev-1.1.1"
sources."abort-controller-3.0.0"
sources."accepts-1.3.8"
sources."acorn-8.8.1"
sources."acorn-8.8.2"
sources."acorn-walk-8.2.0"
(sources."adal-node-0.2.4" // {
dependencies = [
@ -11556,7 +11574,7 @@ in
})
sources."available-typed-arrays-1.0.5"
sources."avsc-5.7.7"
(sources."aws-sdk-2.1295.0" // {
(sources."aws-sdk-2.1301.0" // {
dependencies = [
sources."buffer-4.9.2"
sources."events-1.1.1"
@ -11570,7 +11588,7 @@ in
sources."aws-sign2-0.7.0"
sources."aws4-1.12.0"
sources."axios-0.21.4"
sources."axios-retry-3.3.1"
sources."axios-retry-3.4.0"
sources."babel-helper-vue-jsx-merge-props-2.0.3"
(sources."babel-runtime-6.26.0" // {
dependencies = [
@ -11749,7 +11767,7 @@ in
})
sources."cookie-signature-1.0.6"
sources."copy-to-2.0.1"
sources."core-js-3.27.1"
sources."core-js-3.27.2"
sources."core-util-is-1.0.3"
sources."crc-32-1.2.2"
sources."create-require-1.1.1"
@ -11863,6 +11881,7 @@ in
sources."path-to-regexp-6.2.1"
];
})
sources."express-prom-bundle-6.6.0"
sources."express-unless-2.1.3"
sources."extend-3.0.2"
sources."extend-shallow-2.0.1"
@ -11890,7 +11909,7 @@ in
sources."file-uri-to-path-2.0.0"
(sources."filelist-1.0.4" // {
dependencies = [
sources."minimatch-5.1.4"
sources."minimatch-5.1.6"
];
})
sources."fill-range-7.0.1"
@ -11942,7 +11961,7 @@ in
sources."generate-function-2.3.1"
sources."generic-pool-3.9.0"
sources."get-caller-file-2.0.5"
sources."get-intrinsic-1.1.3"
sources."get-intrinsic-1.2.0"
sources."get-package-type-0.1.0"
sources."get-port-5.1.1"
sources."get-symbol-description-1.0.0"
@ -12063,7 +12082,7 @@ in
sources."inquirer-7.3.3"
sources."internal-slot-1.0.4"
sources."interpret-1.4.0"
(sources."ioredis-5.2.5" // {
(sources."ioredis-5.2.6" // {
dependencies = [
sources."denque-2.1.0"
];
@ -12343,7 +12362,7 @@ in
sources."mqtt-packet-6.10.0"
sources."ms-2.1.2"
sources."msal-1.4.17"
sources."msgpackr-1.8.1"
sources."msgpackr-1.8.2"
(sources."mssql-8.1.4" // {
dependencies = [
sources."commander-9.5.0"
@ -12359,25 +12378,25 @@ in
];
})
sources."mz-2.7.0"
(sources."n8n-core-0.151.1" // {
(sources."n8n-core-0.151.2" // {
dependencies = [
sources."concat-stream-2.0.0"
sources."readable-stream-3.6.0"
];
})
sources."n8n-design-system-0.51.1"
(sources."n8n-editor-ui-0.177.1" // {
(sources."n8n-editor-ui-0.178.1" // {
dependencies = [
sources."luxon-2.5.2"
];
})
(sources."n8n-nodes-base-0.209.1" // {
(sources."n8n-nodes-base-0.210.1" // {
dependencies = [
sources."chokidar-3.5.2"
sources."luxon-2.3.2"
];
})
(sources."n8n-workflow-0.133.1" // {
(sources."n8n-workflow-0.133.2" // {
dependencies = [
sources."luxon-2.3.2"
];
@ -12601,7 +12620,7 @@ in
sources."pump-2.0.1"
];
})
sources."punycode-2.2.0"
sources."punycode-2.3.0"
sources."python-struct-1.1.3"
sources."qs-6.11.0"
sources."query-string-7.1.3"
@ -12974,6 +12993,7 @@ in
];
})
sources."url-parse-1.5.10"
sources."url-value-parser-2.2.0"
(sources."urllib-2.40.0" // {
dependencies = [
sources."debug-2.6.9"

View File

@ -2,10 +2,10 @@
stdenv.mkDerivation rec {
pname = "igv";
version = "2.15.4";
version = "2.15.5";
src = fetchzip {
url = "https://data.broadinstitute.org/igv/projects/downloads/${lib.versions.majorMinor version}/IGV_${version}.zip";
sha256 = "sha256-nDD0QTtLDe//VFMsIPKIykZ6dY85p3aomrCaF1p9HQM=";
sha256 = "sha256-AKKMtR0hU2O84mRJxxsXNCYHeW8d6t3XJpzOKKaxAWw=";
};
installPhase = ''

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "gh";
version = "2.21.2";
version = "2.22.0";
src = fetchFromGitHub {
owner = "cli";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-syd7OMBEMv9uJUDjIIqVkJ3pvuyKnD5pubG4d3TbkY8=";
sha256 = "sha256-kebBochGagpg26Q2bkpUTPMYYwwBpBVx2+ZtsErJWYk=";
};
vendorSha256 = "sha256-m9K43Ns8j82nMkz+zkmC7HueOA6q6T4mFPQ1GSdqo24=";
vendorSha256 = "sha256-OjTl43UQGGHqCrw0kMBShuS8aonjWczfzQGmGJLhdrU=";
nativeBuildInputs = [ installShellFiles ];

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
pname = "gource";
version = "0.53";
version = "0.54";
src = fetchurl {
url = "https://github.com/acaudwell/Gource/releases/download/${pname}-${version}/${pname}-${version}.tar.gz";
hash = "sha256-PV9kwcaBL2RMMgy8mphY35e8YDb8Hl9gPKRrFbjdcjc=";
hash = "sha256-HcvO32XSz01p/gtjPlTCApJsCLgpvK0Lc+r54pzW+uU=";
};
postPatch = ''

View File

@ -25,18 +25,30 @@ stdenvNoCC.mkDerivation rec {
dontDropIconThemeCache = true;
buildPhase = ''
cd DMZ-White/pngs; ./make.sh; cd -
cd DMZ-Black/pngs; ./make.sh; cd -
runHook preBuild
for theme in DMZ-{White,Black}; do
pushd $theme/pngs
./make.sh
popd
done
runHook postBuild
'';
installPhase = ''
install -d $out/share/icons/Vanilla-DMZ/cursors
cp -a DMZ-White/xcursors/* $out/share/icons/Vanilla-DMZ/cursors
install -Dm644 DMZ-White/index.theme $out/share/icons/Vanilla-DMZ/index.theme
runHook preInstall
install -d $out/share/icons/Vanilla-DMZ-AA/cursors
cp -a DMZ-Black/xcursors/* $out/share/icons/Vanilla-DMZ-AA/cursors
install -Dm644 DMZ-Black/index.theme $out/share/icons/Vanilla-DMZ-AA/index.theme
for theme in DMZ-{White,Black}; do
mkdir -p $out/share/icons/$theme/cursors
cp -a $theme/xcursors/* $out/share/icons/$theme/cursors/
install -m644 $theme/index.theme $out/share/icons/$theme/index.theme
done
ln -s $out/share/icons/{DMZ-White,Vanilla-DMZ}
ln -s $out/share/icons/{DMZ-Black,Vanilla-DMZ-AA}
runHook postInstall
'';
meta = with lib; {

View File

@ -1,62 +1,25 @@
{ lib, stdenv, fetchurl, fetchpatch }:
{ lib, stdenv, fetchFromGitHub, meson, ninja }:
let
patch-argp-fmtstream = fetchpatch {
name = "patch-argp-fmtstream.h";
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/b5f0ad3/argp-standalone/patch-argp-fmtstream.h";
sha256 = "5656273f622fdb7ca7cf1f98c0c9529bed461d23718bc2a6a85986e4f8ed1cb8";
};
patch-throw-in-funcdef = fetchpatch {
name = "argp-standalone-1.3-throw-in-funcdef.patch";
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-libs/argp-standalone/files/argp-standalone-1.3-throw-in-funcdef.patch?id=409d0e2a9c9c899fb1fb04cc808fe0aff3f745ca";
sha256 = "0b2b4l1jkvmnffl22jcn4ydzxy2i7fnmmnfim12f0yg5pb8fs43c";
};
patch-shared = fetchpatch {
name = "argp-standalone-1.3-shared.patch";
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-libs/argp-standalone/files/argp-standalone-1.3-shared.patch?id=409d0e2a9c9c899fb1fb04cc808fe0aff3f745ca";
sha256 = "1xx2zdc187a1m2x6c1qs62vcrycbycw7n0q3ks2zkxpaqzx2dgkw";
};
in
stdenv.mkDerivation rec {
pname = "argp-standalone";
version = "1.3";
version = "1.5.0";
src = fetchurl {
url = "https://www.lysator.liu.se/~nisse/misc/argp-standalone-${version}.tar.gz";
sha256 = "dec79694da1319acd2238ce95df57f3680fea2482096e483323fddf3d818d8be";
src = fetchFromGitHub {
owner = "argp-standalone";
repo = "argp-standalone";
rev = version;
sha256 = "jWnoWVnUVDQlsC9ru7oB9PdtZuyCCNqGnMqF/f2m0ZY=";
};
patches =
lib.optionals stdenv.hostPlatform.isDarwin [ patch-argp-fmtstream ]
++ lib.optionals stdenv.hostPlatform.isLinux [ patch-throw-in-funcdef patch-shared ];
patchFlags = lib.optional stdenv.hostPlatform.isDarwin "-p0";
# For currently unknown reason, `-fPIC` has to be passed explicitly, otherwise
# downstream software like `elfutils` will get `recompile errors like:
# libargp.a(argp-help.o): relocation R_X86_64_PC32 against symbol `program_invocation_short_name' can not be used when making a shared object; recompile with -fPIC
# It seems that nixpkgs's on-by-default `-fPIC` is not in effect here.
preConfigure = lib.optionalString stdenv.hostPlatform.isLinux "export CFLAGS='-fgnu89-inline -fPIC'";
postInstall = ''
mkdir -p $out/lib $out/include
cp libargp.a $out/lib
cp argp.h $out/include
'';
nativeBuildInputs = [ meson ninja ];
doCheck = true;
makeFlags = [ "AR:=$(AR)" ];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://www.lysator.liu.se/~nisse/misc/";
description = "Standalone version of arguments parsing functions from GLIBC";
platforms = with platforms; darwin ++ linux;
homepage = "https://github.com/argp-standalone/argp-standalone";
description = "Standalone version of arguments parsing functions from Glibc";
platforms = platforms.unix;
maintainers = with maintainers; [ amar1729 ];
license = licenses.gpl2;
license = licenses.lgpl21Plus;
};
}

View File

@ -44,6 +44,6 @@ stdenv.mkDerivation rec {
license = with licenses; [ asl20 cc0 ];
maintainers = with maintainers; [ taeer olynch ];
mainProgram = "argon2";
platforms = platforms.linux ++ platforms.darwin;
platforms = platforms.all;
};
}

View File

@ -31,8 +31,10 @@ stdenv.mkDerivation rec {
'';
nativeBuildInputs = [ pkg-config help2man ];
buildInputs = [ libcddb ncurses ]
++ lib.optionals stdenv.isDarwin [ libiconv Carbon IOKit ];
buildInputs = [ libcddb libiconv ncurses ]
++ lib.optionals stdenv.isDarwin [ Carbon IOKit ];
enableParallelBuilding = true;
doCheck = !stdenv.isDarwin;
@ -46,6 +48,6 @@ stdenv.mkDerivation rec {
'';
homepage = "https://www.gnu.org/software/libcdio/";
license = licenses.gpl2Plus;
platforms = platforms.linux ++ platforms.darwin;
platforms = platforms.unix;
};
}

View File

@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
installShellFiles
];
buildInputs = lib.optional stdenv.isDarwin libiconv;
buildInputs = [ libiconv ];
preAutoreconf = let
reports = "https://github.com/tlwg/libdatrie/issues";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "ntbtls";
version = "0.2.0";
version = "0.3.1";
src = fetchurl {
url = "mirror://gnupg/ntbtls/ntbtls-${version}.tar.bz2";
sha256 = "sha256-ZJ/nSjEdE+Q7FrJuuqkWZd22MpJbc5AlkurD7TBRnhc=";
sha256 = "sha256-iSIYH+9SO3e3FiXlYuTWlTInjqu9GLx0V52+FBNXKbo=";
};
outputs = [ "dev" "out" ];

View File

@ -13,8 +13,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libpng ]
++ lib.optionals stdenv.isDarwin [ libiconv libobjc ];
buildInputs = [ libiconv libpng ]
++ lib.optionals stdenv.isDarwin [ libobjc ];
configureFlags = [
"--with-tests"

View File

@ -83,6 +83,8 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
homepage = "https://github.com/martinpitt/umockdev";
changelog = "https://github.com/martinpitt/umockdev/releases/tag/${version}";
description = "Mock hardware devices for creating unit tests";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ flokli ];

View File

@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
nativeBuildInputs = [ autoreconfHook ];
buildInputs = lib.optional stdenv.isDarwin libiconv;
buildInputs = [ libiconv ];
# autogen.sh:9
preAutoreconf = "cp ${gettext}/share/gettext/config.rpath .";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "maestro";
version = "1.20.0";
version = "1.21.0";
src = fetchurl {
url = "https://github.com/mobile-dev-inc/maestro/releases/download/cli-${version}/maestro.zip";
sha256 = "0hrfnx66yr1q57875m3ff4b2blq0k641iqjxjys8kwzp3nix34w2";
sha256 = "13b2ykphc7szdanlkk34agf7p0lx78mavk5pjfls48d1k5hllslc";
};
dontUnpack = true;

View File

@ -14,14 +14,14 @@
buildPythonPackage rec {
pname = "google-cloud-monitoring";
version = "2.14.0";
version = "2.14.1";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-Fn21kQVBPjZk9pvsLO2W0vLalbXk3mSOKKn/uieudaY=";
hash = "sha256-FKg2nEmc5mYKSWJwV0wG09kK4ZQl+Tan+9BqbwJ/8eA=";
};
propagatedBuildInputs = [

View File

@ -16,11 +16,11 @@
buildPythonPackage rec {
pname = "imageio";
version = "2.24.0";
version = "2.25.0";
disabled = pythonOlder "3.7";
src = fetchPypi {
sha256 = "sha256-8kD4Ip9PMpoVRigRlLUtpdZpQUGlJGaP7T+BsNB3gvo=";
sha256 = "sha256-uAeWofjDjGl6lAoq1zl+4okA1cTlEGG5pn0WrKhn8z4=";
inherit pname version;
};

View File

@ -1,15 +1,17 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchFromGitHub
, poetry-core
, pythonRelaxDepsHook
, docstring-to-markdown
, fetchFromGitHub
, jedi
, lsprotocol
, poetry-core
, pygls
, pytestCheckHook
, pydantic
, pyhamcrest
, pytestCheckHook
, python-jsonrpc-server
, pythonOlder
, pythonRelaxDepsHook
}:
buildPythonPackage rec {
@ -17,11 +19,13 @@ buildPythonPackage rec {
version = "0.40.0";
format = "pyproject";
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "pappasam";
repo = pname;
rev = "refs/tags/v${version}";
sha256 = "sha256-+3VgONZzlobgs4wujCaGTTYpIgYrWgWwYgKQqirS7t8=";
hash = "sha256-+3VgONZzlobgs4wujCaGTTYpIgYrWgWwYgKQqirS7t8=";
};
pythonRelaxDeps = [
@ -36,6 +40,8 @@ buildPythonPackage rec {
propagatedBuildInputs = [
docstring-to-markdown
jedi
lsprotocol
pydantic
pygls
];
@ -54,9 +60,9 @@ buildPythonPackage rec {
];
meta = with lib; {
homepage = "https://github.com/pappasam/jedi-language-server";
changelog = "https://github.com/pappasam/jedi-language-server/blob/${src.rev}/CHANGELOG.md";
description = "A Language Server for the latest version(s) of Jedi";
homepage = "https://github.com/pappasam/jedi-language-server";
changelog = "https://github.com/pappasam/jedi-language-server/blob/${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ doronbehar ];
};

View File

@ -0,0 +1,66 @@
{ lib
, attrs
, buildPythonPackage
, cattrs
, fetchFromGitHub
, flit-core
, jsonschema
, nox
, pyhamcrest
, pytest
, pythonOlder
}:
buildPythonPackage rec {
pname = "lsprotocol";
version = "2022.0.0a9";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "microsoft";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-6XecPKuBhwtkmZrGozzO+VEryI5wwy9hlvWE1oV6ajk=";
};
nativeBuildInputs = [
flit-core
nox
];
propagatedBuildInputs = [
attrs
cattrs
];
nativeCheckInputs = [
pytest
];
checkInputs = [
jsonschema
pyhamcrest
];
checkPhase = ''
runHook preCheck
sed -i "/^ _install_requirements/d" noxfile.py
nox --session tests
runHook postCheck
'';
pythonImportsCheck = [
"lsprotocol"
];
meta = with lib; {
description = "Python implementation of the Language Server Protocol";
homepage = "https://github.com/microsoft/lsprotocol";
license = licenses.mit;
maintainers = with maintainers; [ doronbehar fab ];
};
}

View File

@ -0,0 +1,78 @@
{ lib
, argcomplete
, buildPythonPackage
, colorlog
, fetchFromGitHub
, fetchpatch
, setuptools
, importlib-metadata
, jinja2
, packaging
, pytestCheckHook
, pythonOlder
, tox
, typing-extensions
, virtualenv
}:
buildPythonPackage rec {
pname = "nox";
version = "2022.11.21";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "wntrblm";
repo = pname;
rev = "refs/tags/${version}";
hash = "sha256-N70yBZyrtdQvgaJzkskG3goHit8eH0di9jHycuAwzfU=";
};
patches = [
# Remove rogue mocking of py._path, https://github.com/wntrblm/nox/pull/677
(fetchpatch {
name = "remove-py-pyth.patch";
url = "https://github.com/wntrblm/nox/commit/44d06b679761e21d76bb96b2b8ffe0ffbe3d4fd0.patch";
hash = "sha256-KRDVwbBMBd4GdiAcGJyS7DTNUw3Pumt0JO1igx6npnc=";
})
];
nativeBuildInputs = [
setuptools
];
propagatedBuildInputs = [
argcomplete
colorlog
packaging
virtualenv
] ++ lib.optionals (pythonOlder "3.8") [
typing-extensions
importlib-metadata
];
checkInputs = [
jinja2
tox
pytestCheckHook
];
pythonImportsCheck = [
"nox"
];
disabledTestPaths = [
# AttributeError: module 'tox.config' has...
"tests/test_tox_to_nox.py"
];
meta = with lib; {
description = "Flexible test automation for Python";
homepage = "https://nox.thea.codes/";
changelog = "https://github.com/wntrblm/nox/blob/${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ doronbehar fab ];
};
}

View File

@ -20,14 +20,14 @@
buildPythonPackage rec {
pname = "whisper";
version = "20230117";
version = "20230124";
format = "setuptools";
src = fetchFromGitHub {
owner = "openai";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-DVYQw+h5xsgWLA6dD+qg4ud0pqFOn6oVAzTqRywE30g=";
hash = "sha256-+3fs/EXK5NGlISuMTk7r2ZZ4tNFKbNFNkVS2LmHBvwk=";
};
patches = [

View File

@ -3,7 +3,7 @@
, pythonOlder
, fetchFromGitHub
, setuptools-scm
, pydantic
, lsprotocol
, toml
, typeguard
, mock
@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "pygls";
version = "0.13.0";
version = "1.0.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "openlawlibrary";
repo = "pygls";
rev = "v${version}";
hash = "sha256-guwOnB4EEUpucfprNLLr49Yn8EdOpRzzG+cT4NCn0rA=";
hash = "sha256-31J4+giK1RDBS52Q/Ia3Y/Zak7fp7gRVTQ7US/eFjtM=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;
@ -32,7 +32,7 @@ buildPythonPackage rec {
];
propagatedBuildInputs = [
pydantic
lsprotocol
typeguard
];

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "pytorch-metric-learning";
version = "1.6.3";
version = "1.7.2";
disabled = isPy27;
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "KevinMusgrave";
repo = pname;
rev = "refs/tags/v${version}";
sha256 = "sha256-7ezD3TMmNI9wRBXz5Htz10XZZaSsD0jTpEldGpIot8k=";
sha256 = "sha256-f+k7WuZRgSDGbWp/TvmDkDzT02WeycwDCd/1WhR3VD8=";
};
propagatedBuildInputs = [

View File

@ -1,36 +1,37 @@
{ lib
, buildPythonPackage
, decorator
, fetchPypi
, libxml2
, m2crypto
, ply
, pyyaml
, six
, pbr
, pythonOlder
, nocasedict
, nocaselist
, yamlloader
, requests-mock
, FormEncode
, httpretty
, libxml2
, lxml
, mock
, nocasedict
, nocaselist
, pbr
, ply
, pytest
, requests
, decorator
, FormEncode
, testfixtures
, pythonOlder
, pytz
, pyyaml
, requests
, requests-mock
, six
, testfixtures
, yamlloader
}:
buildPythonPackage rec {
pname = "pywbem";
version = "1.5.0";
version = "1.6.0";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-xffkWMJTDGE1j7xjM750+vNmqs546uM3QUMSZ63zJhA=";
hash = "sha256-4mqwMkR17lMp10lx+UK0sxW2rA7a8njnDha1YDJ475g=";
};
propagatedBuildInputs = [
@ -42,7 +43,7 @@ buildPythonPackage rec {
pyyaml
six
yamlloader
] ++ lib.optionals (pythonOlder "3.0") [ m2crypto ];
];
nativeCheckInputs = [
decorator
@ -57,9 +58,14 @@ buildPythonPackage rec {
testfixtures
];
pythonImportsCheck = [
"pywbem"
];
meta = with lib; {
description = "Support for the WBEM standard for systems management";
homepage = "https://pywbem.github.io";
changelog = "https://github.com/pywbem/pywbem/blob/${version}/docs/changes.rst";
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ peterhoeg ];
};

View File

@ -12,13 +12,14 @@
buildPythonPackage rec {
pname = "spdx-tools";
version = "0.7.0a3";
version = "0.7.0";
format = "setuptools";
disabled = pythonOlder "3.6";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-afV1W1n5ubHhqfLFpPO5fxaIy5TaZdw9eDy3JYOJ1oE=";
hash = "sha256-QqKMKBedWOFYF1av9IgQuyJ6b5mNhhMpIZVJdEDcAK8=";
};
propagatedBuildInputs = [
@ -40,6 +41,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "SPDX parser and tools";
homepage = "https://github.com/spdx/tools-python";
changelog = "https://github.com/spdx/tools-python/blob/v${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = teams.determinatesystems.members;
};

View File

@ -1,39 +1,35 @@
{ lib
, buildPythonApplication
, fetchFromGitHub
, poetry-core
, pythonRelaxDepsHook
, cmake-format
, pygls
, cmake
, pdm-pep517
, pytest-datadir
, pytestCheckHook
}:
buildPythonApplication rec {
pname = "cmake-language-server";
version = "0.1.6";
version = "unstable-2023-01-08";
format = "pyproject";
src = fetchFromGitHub {
owner = "regen100";
repo = pname;
rev = "refs/tags/v${version}";
sha256 = "sha256-B7dhCQo3g2E8+fzyl1RhaYQE6TFoqoLtp9Z7sZcv5xk=";
rev = "60c376a5fda29835060687569cb212350a292116";
hash = "sha256-vNG43sZy2wMetY5mbgxIoei5jCCj1f8vWiovWtwzbPc=";
};
PDM_PEP517_SCM_VERSION = "2023.1";
patches = [
# Test timeouts occasionally cause the build to fail
./disable-test-timeouts.patch
];
pythonRelaxDeps = [
"pygls"
];
nativeBuildInputs = [
poetry-core
pythonRelaxDepsHook
pdm-pep517
];
propagatedBuildInputs = [
@ -49,7 +45,10 @@ buildPythonApplication rec {
];
dontUseCmakeConfigure = true;
pythonImportsCheck = [ "cmake_language_server" ];
pythonImportsCheck = [
"cmake_language_server"
];
meta = with lib; {
description = "CMake LSP Implementation";

View File

@ -6,13 +6,13 @@
buildGoModule rec {
pname = "oh-my-posh";
version = "13.3.1";
version = "13.6.0";
src = fetchFromGitHub {
owner = "jandedobbeleer";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-ssZbeb1UczWEjeRY1WJBQPnbG/p6XcUSWVHLdreGJkk=";
hash = "sha256-N24kt564/gdJ4mUIyul3zfUFTtF9y49IERfE2jVIL8Q=";
};
vendorHash = "sha256-WiH4qu8DODEhAkxUm6VDcBwFyQO7kNjaiaWPDHCHj9E=";

View File

@ -9,14 +9,14 @@ in
python3.pkgs.buildPythonApplication rec {
pname = "prospector";
version = "1.8.3";
version = "1.8.4";
format = "pyproject";
src = fetchFromGitHub {
owner = "PyCQA";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-R3Sc4Qx6bht+XJhNj+fy32akzDOgSDF5LP3WE1qEyms=";
hash = "sha256-g7tyn6pj5I/+b28wIitqDapR5ffk1xDEAtcYs2TpIUk=";
};
pythonRelaxDeps = [

View File

@ -1,42 +1,46 @@
{ mkDerivation
{ stdenv
, cmake
, fetchurl
, gettext
, gst_all_1
, lib
, ninja
, wrapQtAppsHook
, qmlbox2d
, qtbase
, qtcharts
, qtdeclarative
, qtgraphicaleffects
, qtmultimedia
, qtquickcontrols
, qtquickcontrols2
, qtsensors
, qttools
, qtxmlpatterns
}:
mkDerivation rec {
stdenv.mkDerivation rec {
pname = "gcompris";
version = "2.4";
version = "3.1";
src = fetchurl {
url = "https://download.kde.org/stable/gcompris/qt/src/gcompris-qt-${version}.tar.xz";
sha256 = "sha256-/QZub48rarVHcD0PgOPc6NTlOKrsEzVK/qjHb5CjWS0=";
hash = "sha256-wABGojMfiMgjUT5gVDfB5JmXK1SPkrIkqLT/403zUFI=";
};
cmakeFlags = [
"-DQML_BOX2D_LIBRARY=${qmlbox2d}/${qtbase.qtQmlPrefix}/Box2D.2.1"
];
nativeBuildInputs = [ cmake gettext ninja qttools ];
nativeBuildInputs = [ cmake gettext ninja qttools wrapQtAppsHook ];
buildInputs = [
qmlbox2d
qtbase
qtcharts
qtdeclarative
qtgraphicaleffects
qtmultimedia
qtquickcontrols
qtquickcontrols2
qtsensors
qtxmlpatterns
] ++ (with gst_all_1; [

View File

@ -1,12 +1,12 @@
{lib, stdenv, fetchurl, cyrus_sasl, libevent, nixosTests }:
stdenv.mkDerivation rec {
version = "1.6.17";
version = "1.6.18";
pname = "memcached";
src = fetchurl {
url = "https://memcached.org/files/${pname}-${version}.tar.gz";
sha256 = "sha256-IFXjc2E9j8IVKa/58K3OPiO5zgG6BHjTDnlB2fK9EiQ=";
sha256 = "sha256-y91quIEGSaxdkvzQ/LDKkx2Knb0K2MxXW0ciLu3WQVg=";
};
configureFlags = [

View File

@ -16,14 +16,14 @@ let
}."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
hash = {
x64-linux_hash = "sha256-r5A7KkzugTXwLejaQuKW/EhV99e8gqj8kmgliNMi/xU=";
arm64-linux_hash = "sha256-HdtUSMHteFDdp0yZYFC4EHK2S3cr6dEXklyTp5bqHYQ=";
x64-osx_hash = "sha256-GyHiBiz5LoT+DGxcC0v7OXvdUwaLyrczda/aUkABnrs=";
x64-linux_hash = "sha256-w9je2dcVMDhUCG2zK9uQWpTXQh3zw+0yL/qVrl3DqzE=";
arm64-linux_hash = "sha256-j5pxMTLE2Mk91q76Y1n8j3pG/1aPrGkkvSjzAI8nJro=";
x64-osx_hash = "sha256-ILz3zNQNUwFGMLvz4sqZMzsN+tw/HNpr5mFLSIKQ4Gg=";
}."${arch}-${os}_hash";
in stdenv.mkDerivation rec {
pname = "prowlarr";
version = "1.0.1.2210";
version = "1.1.1.2377";
src = fetchurl {
url = "https://github.com/Prowlarr/Prowlarr/releases/download/v${version}/Prowlarr.develop.${version}.${os}-core-${arch}.tar.gz";

View File

@ -5,16 +5,16 @@
buildGoModule rec {
pname = "zed";
version = "0.7.5";
version = "0.8.0";
src = fetchFromGitHub {
owner = "authzed";
repo = "zed";
rev = "v${version}";
hash = "sha256-Q12zM9GgQQBykFLZ3nwdkl8Nk/0nbXaOJzXzO8wSOXY=";
hash = "sha256-/tYQqS0l5Z/yeNd6GJHONtD3YeQ7nvvWcilBAahDDPA=";
};
vendorHash = "sha256-AEU8yTG+n+JOSB7Cnmf+mztm/1c5vuarSqVr3hC/14g=";
vendorHash = "sha256-3JQgtWaPi2e9lSXF+3IIXDptQXjFJOBsMPfisEea8kE=";
meta = with lib; {
description = "Command line for managing SpiceDB";

View File

@ -6,11 +6,11 @@
let
self = stdenv.mkDerivation rec {
pname = "mysql";
version = "8.0.31";
version = "8.0.32";
src = fetchurl {
url = "https://dev.mysql.com/get/Downloads/MySQL-${self.mysqlVersion}/${pname}-${version}.tar.gz";
sha256 = "sha256-Z7uMunWyjpXH95SFY/AfuEUo/LsaNduoOdTORP4Bm6o=";
sha256 = "sha256-Hw2SojeJgkRxbdWB95k1bgc8LaY8Oy5KAeEDLL7VDig=";
};
nativeBuildInputs = [ bison cmake pkg-config ]

View File

@ -14,12 +14,14 @@ stdenv.mkDerivation rec {
sha256 = "sha256-mm+JoGQLt4LYL/I6eAyfCuw9++RoLAqO2hV+CBBkLq0=";
};
buildInputs = [ help2man ]
++ lib.optionals stdenv.isDarwin [ libiconv ];
buildInputs = [ help2man libiconv ];
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
"LD=${stdenv.cc.targetPrefix}cc"
"UNAME_O=${stdenv.hostPlatform.uname.system}"
"UNAME_S=${stdenv.hostPlatform.uname.system}"
];
# make install target is broken (DESTDIR usage is insane)
@ -35,7 +37,7 @@ stdenv.mkDerivation rec {
homepage = "http://fatsort.sourceforge.net/";
description = "Sorts FAT partition table, for devices that don't do sorting of files";
maintainers = [ maintainers.kovirobi ];
license = licenses.gpl2;
license = licenses.gpl2Plus;
platforms = platforms.unix;
};
}

View File

@ -49,6 +49,6 @@ stdenv.mkDerivation rec {
download.
'';
maintainers = with maintainers; [ peterhoeg ];
platforms = platforms.linux ++ platforms.darwin;
platforms = platforms.unix;
};
}

View File

@ -46,6 +46,9 @@ buildGoModule rec {
# Tests start http servers which need to bind to local addresses:
# panic: httptest: failed to listen on a port: listen tcp6 [::1]:0: bind: operation not permitted
__darwinAllowLocalNetworking = true;
# Tests need to run in a reproducible order, otherwise they run unreliably on
# (at least) x86_64-linux.
checkFlags = [ "-p 1" ];
passthru.tests.step-ca = nixosTests.step-ca;

View File

@ -5,16 +5,16 @@
rustPlatform.buildRustPackage rec {
pname = "automatic-timezoned";
version = "1.0.55";
version = "1.0.57";
src = fetchFromGitHub {
owner = "maxbrunet";
repo = pname;
rev = "v${version}";
sha256 = "sha256-80GP7w3YF7RNMTlSI5SCQfugjkNBweX5BcYk4ODimBQ=";
sha256 = "sha256-Wb7X4eDG9vZLJF5b9JPb0JVjQgstFo7Zr1MnidKcuZI=";
};
cargoHash = "sha256-WtqK8T/3Mo/y3cPn8d6kDzC59qE70JUHFdHk7mFpP1k=";
cargoHash = "sha256-BcIGaAGTwm8QBvrL7J91asNEpnFdsgDtRPDSWdE9JHI=";
meta = with lib; {
description = "Automatically update system timezone based on location";

View File

@ -5542,6 +5542,8 @@ self: super: with self; {
lsassy = callPackage ../development/python-modules/lsassy { };
lsprotocol = callPackage ../development/python-modules/lsprotocol { };
luddite = callPackage ../development/python-modules/luddite { };
ludios_wpull = callPackage ../development/python-modules/ludios_wpull { };
@ -6166,6 +6168,8 @@ self: super: with self; {
nomadnet = callPackage ../development/python-modules/nomadnet { };
nox = callPackage ../development/python-modules/nox { };
nanomsg-python = callPackage ../development/python-modules/nanomsg-python {
inherit (pkgs) nanomsg;
};