mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-28 01:43:15 +00:00
Merge master into haskell-updates
This commit is contained in:
commit
0f008a08f0
@ -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
|
||||
'';
|
||||
|
@ -739,6 +739,15 @@
|
||||
been fixed to allow more than one plugin in the path.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
A new option was added to the virtualisation module that
|
||||
enables specifying explicitly named network interfaces in QEMU
|
||||
VMs. The existing <literal>virtualisation.vlans</literal> is
|
||||
still supported for cases where the name of the network
|
||||
interface is irrelevant.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
@ -185,3 +185,5 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
- `nixos-version` now accepts `--configuration-revision` to display more information about the current generation revision
|
||||
|
||||
- The option `services.nomad.extraSettingsPlugins` has been fixed to allow more than one plugin in the path.
|
||||
|
||||
- A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant.
|
||||
|
@ -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
|
||||
'';
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
'*< >[]:"',
|
||||
'________'
|
||||
))" />
|
||||
<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 it’s a module and we have a revision number),
|
||||
or to the local filesystem. -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(starts-with(@value, '/'))">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$revision = 'local'">
|
||||
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/master/<xsl:value-of select="@value"/></xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixpkgs/blob/<xsl:value-of select="$revision"/>/<xsl:value-of select="@value"/></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:when test="$revision != 'local' and $program = 'nixops' and contains(@value, '/nix/')">
|
||||
<xsl:attribute name="xlink:href">https://github.com/NixOS/nixops/blob/<xsl:value-of select="$revision"/>/nix/<xsl:value-of select="substring-after(@value, '/nix/')"/></xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="xlink:href">file://<xsl:value-of select="@value"/></xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- Print the filename and make it user-friendly by replacing the
|
||||
/nix/store/<hash> prefix by the default location of nixos
|
||||
sources. -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(starts-with(@value, '/'))">
|
||||
<nixpkgs/<xsl:value-of select="@value"/>>
|
||||
</xsl:when>
|
||||
<xsl:when test="contains(@value, 'nixops') and contains(@value, '/nix/')">
|
||||
<nixops/<xsl:value-of select="substring-after(@value, '/nix/')"/>>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@value" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</filename></member>
|
||||
</xsl:for-each>
|
||||
</simplelist>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,6 +0,0 @@
|
||||
{ file }:
|
||||
|
||||
builtins.attrValues
|
||||
(builtins.mapAttrs
|
||||
(name: def: def // { inherit name; })
|
||||
(builtins.fromJSON (builtins.readFile file)))
|
343
nixos/lib/make-options-doc/optionsToDocbook.py
Normal file
343
nixos/lib/make-options-doc/optionsToDocbook.py
Normal 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 it’s 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>""")
|
@ -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')
|
@ -12,7 +12,9 @@ let
|
||||
};
|
||||
|
||||
|
||||
vlans = map (m: m.virtualisation.vlans) (lib.attrValues config.nodes);
|
||||
vlans = map (m: (
|
||||
m.virtualisation.vlans ++
|
||||
(lib.mapAttrsToList (_: v: v.vlan) m.virtualisation.interfaces))) (lib.attrValues config.nodes);
|
||||
vms = map (m: m.system.build.vm) (lib.attrValues config.nodes);
|
||||
|
||||
nodeHostNames =
|
||||
|
@ -18,24 +18,40 @@ let
|
||||
|
||||
networkModule = { config, nodes, pkgs, ... }:
|
||||
let
|
||||
interfacesNumbered = zipLists config.virtualisation.vlans (range 1 255);
|
||||
interfaces = forEach interfacesNumbered ({ fst, snd }:
|
||||
nameValuePair "eth${toString snd}" {
|
||||
ipv4.addresses =
|
||||
[{
|
||||
address = "192.168.${toString fst}.${toString config.virtualisation.test.nodeNumber}";
|
||||
qemu-common = import ../qemu-common.nix { inherit lib pkgs; };
|
||||
|
||||
# Convert legacy VLANs to named interfaces and merge with explicit interfaces.
|
||||
vlansNumbered = forEach (zipLists config.virtualisation.vlans (range 1 255)) (v: {
|
||||
name = "eth${toString v.snd}";
|
||||
vlan = v.fst;
|
||||
assignIP = true;
|
||||
});
|
||||
explicitInterfaces = lib.mapAttrsToList (n: v: v // { name = n; }) config.virtualisation.interfaces;
|
||||
interfaces = vlansNumbered ++ explicitInterfaces;
|
||||
interfacesNumbered = zipLists interfaces (range 1 255);
|
||||
|
||||
# Automatically assign IP addresses to requested interfaces.
|
||||
assignIPs = lib.filter (i: i.assignIP) interfaces;
|
||||
ipInterfaces = forEach assignIPs (i:
|
||||
nameValuePair i.name { ipv4.addresses =
|
||||
[ { address = "192.168.${toString i.vlan}.${toString config.virtualisation.test.nodeNumber}";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
});
|
||||
|
||||
qemuOptions = lib.flatten (forEach interfacesNumbered ({ fst, snd }:
|
||||
qemu-common.qemuNICFlags snd fst.vlan config.virtualisation.test.nodeNumber));
|
||||
udevRules = forEach interfacesNumbered ({ fst, snd }:
|
||||
"SUBSYSTEM==\"net\",ACTION==\"add\",ATTR{address}==\"${qemu-common.qemuNicMac fst.vlan config.virtualisation.test.nodeNumber}\",NAME=\"${fst.name}\"");
|
||||
|
||||
networkConfig =
|
||||
{
|
||||
networking.hostName = mkDefault config.virtualisation.test.nodeName;
|
||||
|
||||
networking.interfaces = listToAttrs interfaces;
|
||||
networking.interfaces = listToAttrs ipInterfaces;
|
||||
|
||||
networking.primaryIPAddress =
|
||||
optionalString (interfaces != [ ]) (head (head interfaces).value.ipv4.addresses).address;
|
||||
optionalString (ipInterfaces != [ ]) (head (head ipInterfaces).value.ipv4.addresses).address;
|
||||
|
||||
# Put the IP addresses of all VMs in this machine's
|
||||
# /etc/hosts file. If a machine has multiple
|
||||
@ -51,16 +67,13 @@ let
|
||||
"${config.networking.hostName}.${config.networking.domain} " +
|
||||
"${config.networking.hostName}\n"));
|
||||
|
||||
virtualisation.qemu.options =
|
||||
let qemu-common = import ../qemu-common.nix { inherit lib pkgs; };
|
||||
in
|
||||
flip concatMap interfacesNumbered
|
||||
({ fst, snd }: qemu-common.qemuNICFlags snd fst config.virtualisation.test.nodeNumber);
|
||||
virtualisation.qemu.options = qemuOptions;
|
||||
boot.initrd.services.udev.rules = concatMapStrings (x: x + "\n") udevRules;
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
key = "ip-address";
|
||||
key = "network-interfaces";
|
||||
config = networkConfig // {
|
||||
# Expose the networkConfig items for tests like nixops
|
||||
# that need to recreate the network config.
|
||||
|
@ -545,7 +545,8 @@ in
|
||||
virtualisation.vlans =
|
||||
mkOption {
|
||||
type = types.listOf types.ints.unsigned;
|
||||
default = [ 1 ];
|
||||
default = if config.virtualisation.interfaces == {} then [ 1 ] else [ ];
|
||||
defaultText = lib.literalExpression ''if config.virtualisation.interfaces == {} then [ 1 ] else [ ]'';
|
||||
example = [ 1 2 ];
|
||||
description =
|
||||
lib.mdDoc ''
|
||||
@ -560,6 +561,35 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.interfaces = mkOption {
|
||||
default = {};
|
||||
example = {
|
||||
enp1s0.vlan = 1;
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
Network interfaces to add to the VM.
|
||||
'';
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
vlan = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
description = lib.mdDoc ''
|
||||
VLAN to which the network interface is connected.
|
||||
'';
|
||||
};
|
||||
|
||||
assignIP = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Automatically assign an IP address to the network interface using the same scheme as
|
||||
virtualisation.vlans.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
virtualisation.writableStore =
|
||||
mkOption {
|
||||
type = types.bool;
|
||||
|
@ -93,18 +93,19 @@ let
|
||||
name = "Static";
|
||||
nodes.router = router;
|
||||
nodes.client = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
virtualisation.interfaces.enp2s0.vlan = 2;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
defaultGateway = "192.168.1.1";
|
||||
defaultGateway6 = "fd00:1234:5678:1::1";
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0 [
|
||||
interfaces.enp1s0.ipv4.addresses = [
|
||||
{ address = "192.168.1.2"; prefixLength = 24; }
|
||||
{ address = "192.168.1.3"; prefixLength = 32; }
|
||||
{ address = "192.168.1.10"; prefixLength = 32; }
|
||||
];
|
||||
interfaces.eth2.ipv4.addresses = mkOverride 0 [
|
||||
interfaces.enp2s0.ipv4.addresses = [
|
||||
{ address = "192.168.2.2"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
@ -170,12 +171,12 @@ let
|
||||
# Disable test driver default config
|
||||
networking.interfaces = lib.mkForce {};
|
||||
networking.useNetworkd = networkd;
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
};
|
||||
testScript = ''
|
||||
start_all()
|
||||
client.wait_for_unit("multi-user.target")
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep '192.168.1'")
|
||||
client.shell_interact()
|
||||
client.succeed("ping -c 1 192.168.1.1")
|
||||
router.succeed("ping -c 1 192.168.1.1")
|
||||
@ -187,20 +188,13 @@ let
|
||||
name = "SimpleDHCP";
|
||||
nodes.router = router;
|
||||
nodes.client = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
virtualisation.interfaces.enp2s0.vlan = 2;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
ipv6.addresses = mkOverride 0 [ ];
|
||||
useDHCP = true;
|
||||
};
|
||||
interfaces.eth2 = {
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
ipv6.addresses = mkOverride 0 [ ];
|
||||
useDHCP = true;
|
||||
};
|
||||
interfaces.enp1s0.useDHCP = true;
|
||||
interfaces.enp2s0.useDHCP = true;
|
||||
};
|
||||
};
|
||||
testScript = { ... }:
|
||||
@ -211,10 +205,10 @@ let
|
||||
router.wait_for_unit("network-online.target")
|
||||
|
||||
with subtest("Wait until we have an ip address on each interface"):
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep -q 'fd00:1234:5678:1:'")
|
||||
client.wait_until_succeeds("ip addr show dev eth2 | grep -q '192.168.2'")
|
||||
client.wait_until_succeeds("ip addr show dev eth2 | grep -q 'fd00:1234:5678:2:'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep -q '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep -q 'fd00:1234:5678:1:'")
|
||||
client.wait_until_succeeds("ip addr show dev enp2s0 | grep -q '192.168.2'")
|
||||
client.wait_until_succeeds("ip addr show dev enp2s0 | grep -q 'fd00:1234:5678:2:'")
|
||||
|
||||
with subtest("Test vlan 1"):
|
||||
client.wait_until_succeeds("ping -c 1 192.168.1.1")
|
||||
@ -243,16 +237,15 @@ let
|
||||
name = "OneInterfaceDHCP";
|
||||
nodes.router = router;
|
||||
nodes.client = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
virtualisation.interfaces.enp2s0.vlan = 2;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
interfaces.enp1s0 = {
|
||||
mtu = 1343;
|
||||
useDHCP = true;
|
||||
};
|
||||
interfaces.eth2.ipv4.addresses = mkOverride 0 [ ];
|
||||
};
|
||||
};
|
||||
testScript = { ... }:
|
||||
@ -264,10 +257,10 @@ let
|
||||
router.wait_for_unit("network.target")
|
||||
|
||||
with subtest("Wait until we have an ip address on each interface"):
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep -q '192.168.1'")
|
||||
|
||||
with subtest("ensure MTU is set"):
|
||||
assert "mtu 1343" in client.succeed("ip link show dev eth1")
|
||||
assert "mtu 1343" in client.succeed("ip link show dev enp1s0")
|
||||
|
||||
with subtest("Test vlan 1"):
|
||||
client.wait_until_succeeds("ping -c 1 192.168.1.1")
|
||||
@ -286,16 +279,15 @@ let
|
||||
};
|
||||
bond = let
|
||||
node = address: { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
virtualisation.interfaces.enp2s0.vlan = 2;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
bonds.bond0 = {
|
||||
interfaces = [ "eth1" "eth2" ];
|
||||
interfaces = [ "enp1s0" "enp2s0" ];
|
||||
driverOptions.mode = "802.3ad";
|
||||
};
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0 [ ];
|
||||
interfaces.eth2.ipv4.addresses = mkOverride 0 [ ];
|
||||
interfaces.bond0.ipv4.addresses = mkOverride 0
|
||||
[ { inherit address; prefixLength = 30; } ];
|
||||
};
|
||||
@ -326,12 +318,11 @@ let
|
||||
};
|
||||
bridge = let
|
||||
node = { address, vlan }: { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ vlan ];
|
||||
virtualisation.interfaces.enp1s0.vlan = vlan;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0
|
||||
[ { inherit address; prefixLength = 24; } ];
|
||||
interfaces.enp1s0.ipv4.addresses = [ { inherit address; prefixLength = 24; } ];
|
||||
};
|
||||
};
|
||||
in {
|
||||
@ -339,11 +330,12 @@ let
|
||||
nodes.client1 = node { address = "192.168.1.2"; vlan = 1; };
|
||||
nodes.client2 = node { address = "192.168.1.3"; vlan = 2; };
|
||||
nodes.router = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
virtualisation.interfaces.enp2s0.vlan = 2;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
bridges.bridge.interfaces = [ "eth1" "eth2" ];
|
||||
bridges.bridge.interfaces = [ "enp1s0" "enp2s0" ];
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0 [ ];
|
||||
interfaces.eth2.ipv4.addresses = mkOverride 0 [ ];
|
||||
interfaces.bridge.ipv4.addresses = mkOverride 0
|
||||
@ -377,7 +369,7 @@ let
|
||||
nodes.router = router;
|
||||
nodes.client = { pkgs, ... }: with pkgs.lib; {
|
||||
environment.systemPackages = [ pkgs.iptables ]; # to debug firewall rules
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
@ -385,14 +377,9 @@ let
|
||||
# reverse path filtering rules for the macvlan interface seem
|
||||
# to be incorrect, causing the test to fail. Disable temporarily.
|
||||
firewall.checkReversePath = false;
|
||||
macvlans.macvlan.interface = "eth1";
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
useDHCP = true;
|
||||
};
|
||||
interfaces.macvlan = {
|
||||
useDHCP = true;
|
||||
};
|
||||
macvlans.macvlan.interface = "enp1s0";
|
||||
interfaces.enp1s0.useDHCP = true;
|
||||
interfaces.macvlan.useDHCP = true;
|
||||
};
|
||||
};
|
||||
testScript = { ... }:
|
||||
@ -404,7 +391,7 @@ let
|
||||
router.wait_for_unit("network.target")
|
||||
|
||||
with subtest("Wait until we have an ip address on each interface"):
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep -q '192.168.1'")
|
||||
client.wait_until_succeeds("ip addr show dev macvlan | grep -q '192.168.1'")
|
||||
|
||||
with subtest("Print lots of diagnostic information"):
|
||||
@ -431,23 +418,22 @@ let
|
||||
fou = {
|
||||
name = "foo-over-udp";
|
||||
nodes.machine = { ... }: {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0
|
||||
[ { address = "192.168.1.1"; prefixLength = 24; } ];
|
||||
interfaces.enp1s0.ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ];
|
||||
fooOverUDP = {
|
||||
fou1 = { port = 9001; };
|
||||
fou2 = { port = 9002; protocol = 41; };
|
||||
fou3 = mkIf (!networkd)
|
||||
{ port = 9003; local.address = "192.168.1.1"; };
|
||||
fou4 = mkIf (!networkd)
|
||||
{ port = 9004; local = { address = "192.168.1.1"; dev = "eth1"; }; };
|
||||
{ port = 9004; local = { address = "192.168.1.1"; dev = "enp1s0"; }; };
|
||||
};
|
||||
};
|
||||
systemd.services = {
|
||||
fou3-fou-encap.after = optional (!networkd) "network-addresses-eth1.service";
|
||||
fou3-fou-encap.after = optional (!networkd) "network-addresses-enp1s0.service";
|
||||
};
|
||||
};
|
||||
testScript = { ... }:
|
||||
@ -470,20 +456,20 @@ let
|
||||
"gue": None,
|
||||
"family": "inet",
|
||||
"local": "192.168.1.1",
|
||||
"dev": "eth1",
|
||||
"dev": "enp1s0",
|
||||
} in fous, "fou4 exists"
|
||||
'';
|
||||
};
|
||||
sit = let
|
||||
node = { address4, remote, address6 }: { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
sits.sit = {
|
||||
inherit remote;
|
||||
local = address4;
|
||||
dev = "eth1";
|
||||
dev = "enp1s0";
|
||||
};
|
||||
interfaces.eth1.ipv4.addresses = mkOverride 0
|
||||
[ { address = address4; prefixLength = 24; } ];
|
||||
@ -685,10 +671,10 @@ let
|
||||
vlan-ping = let
|
||||
baseIP = number: "10.10.10.${number}";
|
||||
vlanIP = number: "10.1.1.${number}";
|
||||
baseInterface = "eth1";
|
||||
baseInterface = "enp1s0";
|
||||
vlanInterface = "vlan42";
|
||||
node = number: {pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
#useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
@ -785,12 +771,12 @@ let
|
||||
privacy = {
|
||||
name = "Privacy";
|
||||
nodes.router = { ... }: {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1.ipv6.addresses = singleton {
|
||||
interfaces.enp1s0.ipv6.addresses = singleton {
|
||||
address = "fd00:1234:5678:1::1";
|
||||
prefixLength = 64;
|
||||
};
|
||||
@ -812,11 +798,11 @@ let
|
||||
};
|
||||
};
|
||||
nodes.client_with_privacy = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = {
|
||||
interfaces.enp1s0 = {
|
||||
tempAddress = "default";
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
ipv6.addresses = mkOverride 0 [ ];
|
||||
@ -825,11 +811,11 @@ let
|
||||
};
|
||||
};
|
||||
nodes.client = { pkgs, ... }: with pkgs.lib; {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
virtualisation.interfaces.enp1s0.vlan = 1;
|
||||
networking = {
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = {
|
||||
interfaces.enp1s0 = {
|
||||
tempAddress = "enabled";
|
||||
ipv4.addresses = mkOverride 0 [ ];
|
||||
ipv6.addresses = mkOverride 0 [ ];
|
||||
@ -847,9 +833,9 @@ let
|
||||
|
||||
with subtest("Wait until we have an ip address"):
|
||||
client_with_privacy.wait_until_succeeds(
|
||||
"ip addr show dev eth1 | grep -q 'fd00:1234:5678:1:'"
|
||||
"ip addr show dev enp1s0 | grep -q 'fd00:1234:5678:1:'"
|
||||
)
|
||||
client.wait_until_succeeds("ip addr show dev eth1 | grep -q 'fd00:1234:5678:1:'")
|
||||
client.wait_until_succeeds("ip addr show dev enp1s0 | grep -q 'fd00:1234:5678:1:'")
|
||||
|
||||
with subtest("Test vlan 1"):
|
||||
client_with_privacy.wait_until_succeeds("ping -c 1 fd00:1234:5678:1::1")
|
||||
@ -947,7 +933,7 @@ let
|
||||
), "The IPv6 routing table has not been properly cleaned:\n{}".format(ipv6Residue)
|
||||
'';
|
||||
};
|
||||
rename = {
|
||||
rename = if networkd then {
|
||||
name = "RenameInterface";
|
||||
nodes.machine = { pkgs, ... }: {
|
||||
virtualisation.vlans = [ 1 ];
|
||||
@ -955,22 +941,18 @@ let
|
||||
useNetworkd = networkd;
|
||||
useDHCP = false;
|
||||
};
|
||||
} //
|
||||
(if networkd
|
||||
then { systemd.network.links."10-custom_name" = {
|
||||
matchConfig.MACAddress = "52:54:00:12:01:01";
|
||||
linkConfig.Name = "custom_name";
|
||||
};
|
||||
}
|
||||
else { boot.initrd.services.udev.rules = ''
|
||||
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="custom_name"
|
||||
'';
|
||||
});
|
||||
systemd.network.links."10-custom_name" = {
|
||||
matchConfig.MACAddress = "52:54:00:12:01:01";
|
||||
linkConfig.Name = "custom_name";
|
||||
};
|
||||
};
|
||||
testScript = ''
|
||||
machine.succeed("udevadm settle")
|
||||
print(machine.succeed("ip link show dev custom_name"))
|
||||
'';
|
||||
};
|
||||
} else {
|
||||
name = "RenameInterface";
|
||||
testScript = "";
|
||||
# even with disabled networkd, systemd.network.links should work
|
||||
# (as it's handled by udev, not networkd)
|
||||
link = {
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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 = [
|
||||
|
@ -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=";
|
||||
|
348
pkgs/applications/networking/n8n/node-packages.nix
generated
348
pkgs/applications/networking/n8n/node-packages.nix
generated
@ -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"
|
||||
|
@ -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 = ''
|
||||
|
@ -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 ];
|
||||
|
||||
|
@ -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 = ''
|
||||
|
@ -1,32 +1,36 @@
|
||||
{ fetchzip, lib }:
|
||||
{ lib, stdenvNoCC, fetchzip }:
|
||||
|
||||
let
|
||||
fonts = {
|
||||
aegan = { version = "13.00"; file = "Aegean.zip"; sha256 = "sha256-1DnbfL6bKn8Upht/ZYfKIp9kuDHq7y9E+jkt2Yhr38A="; description = "Aegean"; };
|
||||
aegyptus = { version = "13.00"; file = "Aegyptus.zip"; sha256 = "sha256-tObgHlhaquq6Akn/HdYKNfnKHHJP42yAT7lIn5qdCzY="; description = "Egyptian Hieroglyphs, Coptic, Meroitic"; };
|
||||
akkadian = { version = "13.00"; file = "Akkadian.zip"; sha256 = "sha256-iHiXfxMS9FIlrRgT23MfxzCqYJMQrKuKYDShrqB74vU="; description = "Sumero-Akkadian Cuneiform"; };
|
||||
assyrian = { version = "13.00"; file = "Assyrian.zip"; sha256 = "sha256-YjTQjv1Vybr14Sn9pUdbGYVf4ZIjGT+cpB1qCIg1NNQ="; description = "Neo-Assyrian in Unicode with OpenType"; };
|
||||
eemusic = { version = "13.00"; file = "EEMusic.zip"; sha256 = "sha256-PaYBJOV+dmRV1ehY7TwDNL9dz1jPo58I3N8lWX1Vmy8="; description = "Byzantine Musical Notation in Unicode with OpenType"; };
|
||||
maya = { version = "13.00"; file = "Maya%20Hieroglyphs.zip"; sha256 = "sha256-9uqGo4hweV1ydI+pEp76IqmHslWvxr87rTvziQs35bQ="; description = "Maya Hieroglyphs"; };
|
||||
symbola = { version = "13.00"; file = "Symbola.zip"; sha256 = "sha256-C9HmforXr/Hqopb3go+bzqRFcWPv+0rz0JZsXc3mcxw="; description = "Basic Latin, Greek, Cyrillic and many Symbol blocks of Unicode"; };
|
||||
textfonts = { version = "13.00"; file = "Textfonts.zip"; sha256 = "sha256-1bDi5mwrT2I8gx6QdhnWjXATFdNAU9nt77BiFIci6C8="; description = "Aroania, Anaktoria, Alexander, Avdira and Asea"; };
|
||||
unidings = { version = "13.00"; file = "Unidings.zip"; sha256 = "sha256-6lSkDb603XIrBGy4fZhY7xYDd3x0qA0PRQOlQ9Roig0="; description = "Glyphs and Icons for blocks of The Unicode Standard"; };
|
||||
aegan = { version = "13.00"; file = "Aegean.zip"; hash = "sha256-3HmCqCMZLN6zF1N/EirQOPnHKTGHoc4aHKoZxFYTB34="; description = "Aegean"; };
|
||||
aegyptus = { version = "13.00"; file = "Aegyptus.zip"; hash = "sha256-SSAK707xhpsUTq8tSBcrzNGunCYad58amtCqAWuevnY="; description = "Egyptian Hieroglyphs, Coptic, Meroitic"; };
|
||||
akkadian = { version = "13.00"; file = "Akkadian.zip"; hash = "sha256-wXiDYyfujAs6fklOCqXq7Ms7wP5RbPlpNVwkUy7CV4k="; description = "Sumero-Akkadian Cuneiform"; };
|
||||
assyrian = { version = "13.00"; file = "Assyrian.zip"; hash = "sha256-CZj1sc89OexQ0INb7pbEu5GfE/w2E5JmhjT8cosoLSg="; description = "Neo-Assyrian in Unicode with OpenType"; };
|
||||
eemusic = { version = "13.00"; file = "EEMusic.zip"; hash = "sha256-LxOcQOPEImw0wosxJotbOJRbe0qlK5dR+kazuhm99Kg="; description = "Byzantine Musical Notation in Unicode with OpenType"; };
|
||||
maya = { version = "13.00"; file = "Maya%20Hieroglyphs.zip"; hash = "sha256-PAwF1lGqm6XVf4NQCA8AFLGU40N0Xsn5Q8x9ikHJDhY="; description = "Maya Hieroglyphs"; };
|
||||
symbola = { version = "13.00"; file = "Symbola.zip"; hash = "sha256-TsHWmzkEyMa8JOZDyjvk7PDhm239oH/FNllizNFf398="; description = "Basic Latin, Greek, Cyrillic and many Symbol blocks of Unicode"; };
|
||||
textfonts = { version = "13.00"; file = "Textfonts.zip"; hash = "sha256-7S3NiiyDvyYoDrLPt2z3P9bEEFOEZACv2sIHG1Tn6yI="; description = "Aroania, Anaktoria, Alexander, Avdira and Asea"; };
|
||||
unidings = { version = "13.00"; file = "Unidings.zip"; hash = "sha256-WUY+Ylphep6WuzqLQ3Owv+vK5Yuu/aAkn4GOFXL0uQY="; description = "Glyphs and Icons for blocks of The Unicode Standard"; };
|
||||
};
|
||||
|
||||
mkpkg = name_: {version, file, sha256, description}: fetchzip rec {
|
||||
name = "${name_}-${version}";
|
||||
url = "https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/${file}";
|
||||
stripRoot = false;
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/{fonts/opentype,doc/${name_}}
|
||||
mv $out/*.otf -t "$out/share/fonts/opentype"
|
||||
mv $out/*.{odt,ods,pdf,xlsx} -t "$out/share/doc/${name_}" || true # install docs if any
|
||||
find $out -type d -empty -delete
|
||||
shopt -s extglob dotglob
|
||||
rm -rf $out/!(share)
|
||||
shopt -u extglob dotglob
|
||||
mkpkg = pname: { version, file, hash, description }: stdenvNoCC.mkDerivation rec {
|
||||
inherit pname version;
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/${file}";
|
||||
stripRoot = false;
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/{fonts/opentype,doc/${pname}}
|
||||
mv *.otf -t "$out/share/fonts/opentype"
|
||||
mv *.{odt,ods,pdf,xlsx} -t "$out/share/doc/${pname}" || true # install docs if any
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
inherit sha256;
|
||||
|
||||
meta = {
|
||||
inherit description;
|
||||
@ -39,4 +43,4 @@ let
|
||||
};
|
||||
};
|
||||
in
|
||||
lib.mapAttrs mkpkg fonts
|
||||
lib.mapAttrs mkpkg fonts
|
||||
|
@ -1,19 +1,24 @@
|
||||
{ lib, fetchzip }:
|
||||
{ lib, stdenvNoCC, fetchzip }:
|
||||
|
||||
let
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "hanazono";
|
||||
version = "20170904";
|
||||
in fetchzip {
|
||||
name = "hanazono-${version}";
|
||||
|
||||
url = "mirror://osdn/hanazono-font/68253/hanazono-${version}.zip";
|
||||
src = fetchzip {
|
||||
url = "mirror://osdn/hanazono-font/68253/hanazono-${version}.zip";
|
||||
stripRoot = false;
|
||||
hash = "sha256-qd0q4wQnHBGLT7C+UQIiOHnxCnRCscMZcj3P5RRxD1U=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/{doc,fonts}
|
||||
unzip -j $downloadedFile \*.ttf -d $out/share/fonts/truetype
|
||||
unzip -j $downloadedFile \*.txt -d $out/share/doc/hanazono
|
||||
'';
|
||||
install -Dm644 *.ttf -t $out/share/fonts/truetype
|
||||
install -Dm644 *.txt -t $out/share/doc/hanazono
|
||||
|
||||
sha256 = "0qiyd1vk3w8kqmwc6xi5d390wdr4ln8xhfbx3n8r1hhad9iz14p6";
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Japanese Mincho-typeface TrueType font";
|
||||
|
@ -1,16 +1,18 @@
|
||||
{ lib, fetchzip }:
|
||||
{ lib, stdenvNoCC, texlive }:
|
||||
|
||||
let
|
||||
version = "0_995";
|
||||
in fetchzip {
|
||||
name = "iwona-${version}";
|
||||
url = "http://jmn.pl/pliki/Iwona-otf-${version}.zip";
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "iwona";
|
||||
version = "0.995b";
|
||||
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/fonts/opentype
|
||||
unzip -j $downloadedFile *.otf -d $out/share/fonts/opentype
|
||||
src = lib.head (builtins.filter (p: p.tlType == "run") texlive.iwona.pkgs);
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 fonts/opentype/nowacki/iwona/*.otf -t $out/share/fonts/opentype
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
sha256 = "1dcpn13bd31dw7ir0s722bv3nk136dy6qsab0kznjbzfqd7agswa";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A two-element sans-serif typeface, created by Małgorzata Budyta";
|
||||
|
@ -1,24 +1,24 @@
|
||||
{ lib, fetchzip }:
|
||||
{ lib, stdenvNoCC, fetchzip }:
|
||||
|
||||
let version = "20030809";
|
||||
in
|
||||
fetchzip {
|
||||
name = "kochi-substitute-naga10-${version}";
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "kochi-substitute-naga10";
|
||||
version = "20030809";
|
||||
|
||||
url = "mirror://osdn/efont/5411/kochi-substitute-${version}.tar.bz2";
|
||||
src = fetchzip {
|
||||
url = "mirror://osdn/efont/5411/kochi-substitute-${version}.tar.bz2";
|
||||
stripRoot = false;
|
||||
hash = "sha256-dRJAxeVGYcNjLWqJJ+9Z2FW3BHrgyGRzlgM2x5YG3AM=";
|
||||
};
|
||||
|
||||
stripRoot = false;
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/fonts/truetype
|
||||
mv $out/*/kochi-gothic-subst.ttf $out/share/fonts/truetype/kochi-gothic-subst-naga10.ttf
|
||||
mv $out/*/kochi-mincho-subst.ttf $out/share/fonts/truetype/kochi-mincho-subst-naga10.ttf
|
||||
shopt -s extglob dotglob
|
||||
rm -rf $out/!(share)
|
||||
shopt -u extglob dotglob
|
||||
'';
|
||||
mv */kochi-gothic-subst.ttf $out/share/fonts/truetype/kochi-gothic-subst-naga10.ttf
|
||||
mv */kochi-mincho-subst.ttf $out/share/fonts/truetype/kochi-mincho-subst-naga10.ttf
|
||||
|
||||
sha256 = "sha256-SZ7ZJYuCYU0NxWHlEszbvFmyZxWeBtmPL204PjIrS64=";
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Japanese font, non-free replacement for MS Gothic and MS Mincho";
|
||||
|
@ -1,35 +1,38 @@
|
||||
{ fetchzip, lib }:
|
||||
{ lib, stdenvNoCC, fetchurl }:
|
||||
let
|
||||
fonts = {
|
||||
assamese = { label = "Assamese"; version = "2.91.5"; sha256 = "06cw416kgw0m6883n5ixmpniinsd747rdmacf06z83w1hqwj2js6"; };
|
||||
bengali = { label = "Bengali"; version = "2.91.5"; sha256 = "1j7gfmkzzyk9mivy09a9yfqxpidw52hw48dyh4qkci304mspcbvr"; };
|
||||
devanagari = { label = "Devanagari script"; version = "2.95.4"; sha256 = "1c17xirzx5rf7xpmkrm94jf9xrzckyagwnqn3pyag28lyj8x67m5"; };
|
||||
gujarati = { label = "Gujarati"; version = "2.92.4"; sha256 = "0xdgmkikz532zxj239wr73l24qnzxhra88f52146x7fsb7gpvfb1"; };
|
||||
gurmukhi = { label = "Gurmukhi script"; version = "2.91.2"; sha256 = "1xk1qvc0xwcmjcavj9zmy4bbphffdlv7sldmqlk30ch5fy5r0ypb"; }; # renamed from Punjabi
|
||||
kannada = { label = "Kannada"; version = "2.5.4" ; sha256 = "0sax56xg98p2nf0nsvba42hhz946cs7q0gidiz9zfpb6pbgwxdgg"; };
|
||||
malayalam = { label = "Malayalam"; version = "2.92.2"; sha256 = "18sca59fj9zvqhagbix35i4ld2n4mwv57q04pijl5gvpyfb1abs8"; };
|
||||
marathi = { label = "Marathi"; version = "2.94.2"; sha256 = "0cjjxxlhqmdmhr35s4ak0ma89456daik5rqrn6pdzj39098lmci7"; };
|
||||
nepali = { label = "Nepali"; version = "2.94.2"; sha256 = "1p7lif136xakfqkbv6p1lb56rs391b25vn4bxrjdfvsk0r0h0ry3"; };
|
||||
odia = { label = "Odia"; version = "2.91.2"; sha256 = "0z5rc4f9vfrfm8h2flzf5yx44x50jqdmmzifkmjwczib3hpg2ila"; }; # renamed from Oriya
|
||||
tamil-classical = { label = "Classical Tamil"; version = "2.5.4" ; sha256 = "0svmj3dhk0195mhdwjhi3qgwa83223irb32fp12782sj9njdvyi2"; };
|
||||
tamil = { label = "Tamil"; version = "2.91.3"; sha256 = "0qyw9p8alyvjryyw8a25q3gfyrhby49mjb0ydgggf5ckd07kblcm"; };
|
||||
telugu = { label = "Telugu"; version = "2.5.5" ; sha256 = "07p41686ypmclj9d3njp01lvrgssqxa4s5hsbrqfjrnwd3rjspzr"; };
|
||||
assamese = { label = "Assamese"; version = "2.91.5"; hash = "sha256-Oo/hHHFg/Nu3eaZLMdBclY90lKU2AMFUclyXHxGaAgg="; };
|
||||
bengali = { label = "Bengali"; version = "2.91.5"; hash = "sha256-QGf94TdQS2c9+wSSDK4Mknw5ubCGTuvg0xoNaJdirBc="; };
|
||||
devanagari = { label = "Devanagari script"; version = "2.95.4"; hash = "sha256-6CbOCqOei5eO1zwNQZvB+fFDkqxvJnK82z+zmClhRAE="; };
|
||||
gujarati = { label = "Gujarati"; version = "2.92.4"; hash = "sha256-BpwibF0/HXDvXpDEek0fj73cxo2QC1hSfQ49Q/ZOZg8="; };
|
||||
gurmukhi = { label = "Gurmukhi script"; version = "2.91.2"; hash = "sha256-5iLFW2FEE5LBqoALi+3sUjwC0ADntsp259TP+bYwR9g="; }; # renamed from Punjabi
|
||||
kannada = { label = "Kannada"; version = "2.5.4" ; hash = "sha256-7y2u0tBdNYCeY7Y+aqhxXP7Qv6GglJeVO1wvM9CzyIQ="; };
|
||||
malayalam = { label = "Malayalam"; version = "2.92.2"; hash = "sha256-SzM38vuAlP9OMC8kUuHQylmH8TUjCeg1y/Zcu2I2bjA="; };
|
||||
marathi = { label = "Marathi"; version = "2.94.2"; hash = "sha256-jK1Gwcr5gqzRNkbIxs4V/OYgUlUEpU0OYzKDTkiMlqM="; };
|
||||
nepali = { label = "Nepali"; version = "2.94.2"; hash = "sha256-OX1ekxeSbVGOrdbZ3Jvu4nii0zkgbuij10JIzqRcFx4="; };
|
||||
odia = { label = "Odia"; version = "2.91.2"; hash = "sha256-3/eczBGGZj4QPs7KY0as9zk5HaBfhgz6YgU0qmwpVcA="; }; # renamed from Oriya
|
||||
tamil-classical = { label = "Classical Tamil"; version = "2.5.4" ; hash = "sha256-6SsddTCEUHMoF7X4+i7eXimmMuktfFAl8uz95RwM+yg="; };
|
||||
tamil = { label = "Tamil"; version = "2.91.3"; hash = "sha256-8lcNw87o9lhQsKwCqwBSfx7rhcrH/eEqac7EsA9/w/E="; };
|
||||
telugu = { label = "Telugu"; version = "2.5.5" ; hash = "sha256-cZh93NfEB+5S1JeEowtBMJ0nbZsFGpbEp2WAtzxrA8A="; };
|
||||
};
|
||||
gplfonts = {
|
||||
# GPL fonts removed from later releases
|
||||
kashmiri = { label = "Kashmiri"; version = "2.4.3" ; sha256 = "0c6whklad9bscymrlcbxj4fdvh4cdf40vb61ykbp6mapg6dqxwhn"; };
|
||||
konkani = { label = "Konkani"; version = "2.4.3" ; sha256 = "0pcb5089dabac1k6ymqnbnlyk7svy2wnb5glvhsd8glycjhrcp70"; };
|
||||
maithili = { label = "Maithili"; version = "2.4.3" ; sha256 = "1yfwv7pcj7k4jryz0s6mb56bq7fs15g56y7pi5yd89q1f8idk6bc"; };
|
||||
sindhi = { label = "Sindhi"; version = "2.4.3" ; sha256 = "1iywzyy185bvfsfi5pp11c8bzrp40kni2cpwcmxqwha7c9v8brlc"; };
|
||||
kashmiri = { label = "Kashmiri"; version = "2.4.3" ; hash = "sha256-6T2QaWnt3+e5nr4vbk44FouqmeWKzia1lSf8S/bvqCs="; };
|
||||
konkani = { label = "Konkani"; version = "2.4.3" ; hash = "sha256-hVy2rxrUTPDeNnugi3Bk7z0JqGmk4/yeUsAoI/4R7A8="; };
|
||||
maithili = { label = "Maithili"; version = "2.4.3" ; hash = "sha256-ikDcpJqdizAYRpgoebzqxOEeodJ6C3fO2rsqGzC0HCs="; };
|
||||
sindhi = { label = "Sindhi"; version = "2.4.3" ; hash = "sha256-wU3B9fh+8E1bFBMnakzmajY7eNKzed9+eYL5AOxyNQI="; };
|
||||
};
|
||||
|
||||
mkpkg = license: name: {label, version, sha256}: fetchzip {
|
||||
name = "lohit-${name}-${version}";
|
||||
mkpkg = license: pname: {label, version, hash}: stdenvNoCC.mkDerivation {
|
||||
inherit pname version;
|
||||
|
||||
url = "https://releases.pagure.org/lohit/lohit-${name}-ttf-${version}.tar.gz";
|
||||
src = fetchurl {
|
||||
url = "https://releases.pagure.org/lohit/lohit-${pname}-ttf-${version}.tar.gz";
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
postFetch = ''
|
||||
tar -xzf $downloadedFile --strip-components=1
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/fonts/truetype
|
||||
cp -v *.ttf $out/share/fonts/truetype/
|
||||
@ -37,11 +40,11 @@ let
|
||||
mkdir -p $out/etc/fonts/conf.d
|
||||
cp -v *.conf $out/etc/fonts/conf.d
|
||||
|
||||
mkdir -p "$out/share/doc/lohit-${name}"
|
||||
cp -v ChangeLog* COPYRIGHT* "$out/share/doc/lohit-${name}/"
|
||||
'';
|
||||
mkdir -p "$out/share/doc/lohit-${pname}"
|
||||
cp -v ChangeLog* COPYRIGHT* "$out/share/doc/lohit-${pname}/"
|
||||
|
||||
inherit sha256;
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
inherit license;
|
||||
|
@ -1,16 +1,23 @@
|
||||
{ lib, fetchzip, fetchFromGitHub }:
|
||||
{ lib, stdenvNoCC, fetchurl, fetchFromGitHub }:
|
||||
|
||||
let pname = "mplus-outline-fonts";
|
||||
in {
|
||||
osdnRelease = fetchzip {
|
||||
name = "${pname}-osdn";
|
||||
url = "mirror://osdn/mplus-fonts/62344/mplus-TESTFLIGHT-063a.tar.xz";
|
||||
sha256 = "sha256-+VN+aFx5hMlWwtk+FM+vL6G07+yEi9kYYsoQLSfMUZo=";
|
||||
postFetch = ''
|
||||
install -m444 -Dt $out/share/fonts/truetype/${pname} $out/*.ttf
|
||||
shopt -s extglob dotglob
|
||||
rm -rf $out/!(share)
|
||||
shopt -u extglob dotglob
|
||||
in
|
||||
{
|
||||
osdnRelease = stdenvNoCC.mkDerivation {
|
||||
pname = "${pname}-osdn";
|
||||
version = "063a";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://osdn/mplus-fonts/62344/mplus-TESTFLIGHT-063a.tar.xz";
|
||||
hash = "sha256-ROuXO0tq/1dN5FTbEF3cI+Z0nCKUc0vZyx4Nc05M3Xk=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -m444 -Dt $out/share/fonts/truetype/${pname} *.ttf
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
@ -22,19 +29,25 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
githubRelease = fetchFromGitHub {
|
||||
name = "${pname}-github";
|
||||
owner = "coz-m";
|
||||
repo = "MPLUS_FONTS";
|
||||
rev = "336fec4e9e7c1e61bd22b82e6364686121cf3932";
|
||||
sha256 = "sha256-LSIyrstJOszll72mxXIC7EW4KEMTFCaQwWs59j0UScE=";
|
||||
postFetch = ''
|
||||
githubRelease = stdenvNoCC.mkDerivation {
|
||||
pname = "${pname}-github";
|
||||
version = "unstable-2022-05-19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "coz-m";
|
||||
repo = "MPLUS_FONTS";
|
||||
rev = "336fec4e9e7c1e61bd22b82e6364686121cf3932";
|
||||
hash = "sha256-jzDDUs1dKjqNjsMeTA2/4vm+akIisnOuE2mPQS7IDSA=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/fonts/{truetype,opentype}/${pname}
|
||||
mv $out/fonts/ttf/* $out/share/fonts/truetype/${pname}
|
||||
mv $out/fonts/otf/* $out/share/fonts/opentype/${pname}
|
||||
shopt -s extglob dotglob
|
||||
rm -rf $out/!(share)
|
||||
shopt -u extglob dotglob
|
||||
mv fonts/ttf/* $out/share/fonts/truetype/${pname}
|
||||
mv fonts/otf/* $out/share/fonts/opentype/${pname}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -1,55 +1,55 @@
|
||||
{
|
||||
"3270" = "1icrqgi7i7cf4jhgpdymv2mkvwh5lgx6yfbs3lrj6jxyhyv14mjj";
|
||||
"Agave" = "0ar50csbsx0rhm3zbi3jf2c9r7wpx20lpmij1i205p53qbiihpv1";
|
||||
"AnonymousPro" = "1is1jgxslmjy4pag137yyh99cf6dvlbkwwnaf91i73ad2w2mm2hm";
|
||||
"Arimo" = "0a5s4flni7wggw5cc9mcc0ipcbmm786fmh2b2y7kp2d3i92sq76x";
|
||||
"AurulentSansMono" = "10agjvrr18ddh8gmdv3ih2lxvrklc65vwsrzzi89h0f8jcas50l5";
|
||||
"BigBlueTerminal" = "130p26r3b2m66ycd549sirvysicr3ld3l8qmrdfw9fr4jva8767s";
|
||||
"BitstreamVeraSansMono" = "02dwhxs7agr3nbwslimryd3wq41wxsw9as0dk3czyjwrgiiwqbzh";
|
||||
"CascadiaCode" = "1y06c8sfwy3pbxda56z7b7awrhia30f7xylj4m1wsnqql5bkwz21";
|
||||
"CodeNewRoman" = "07y2yv9yi35lksiinpm0pxl5jjlbhffnm3mqjqr9292k0d76wrr8";
|
||||
"Cousine" = "1cr1l25ynis1wf9rh0hdyaj4v4cvpv8ci359qjlhhpai5vspr273";
|
||||
"DaddyTimeMono" = "1qj1fqrass97hnn2vm9wdmhyn99w5xk1swm2b1kp70bjbp4jarvh";
|
||||
"DejaVuSansMono" = "03z80lhg128r4ivpcixcxfradn2n9hnwdk2bnbk7z5brqskh0sfy";
|
||||
"DroidSansMono" = "17kvbcsasvfz339ld390msw8715ydfd5vvfm8rm6lyb34rv1z53s";
|
||||
"FantasqueSansMono" = "0whjkl0dk1w4f29vw4jnzx8zwll9fl1axxnmsch9pcm3q7rwzpb5";
|
||||
"FiraCode" = "0wn127x4i4l64v8ql32fw64k82iv9z6q0gkf5p285dcrlbjih04x";
|
||||
"FiraMono" = "0cl4ssdylydwm4zhms2400c7idg0mf7yzsqds2qm7im744m6gkr7";
|
||||
"FontPatcher" = "0hidpffswnz4375s61wq76djn0wilcgcmwz4b0v5gs4hz0zj0yp2";
|
||||
"Go-Mono" = "1w9a507lnxv50x0xlj28ypijvvgcmypk6i27i367gkwsnnn6sqpp";
|
||||
"Gohu" = "11gd9mzj6jwkxq3mxa33i0gb3s5f3dn00lnw360pamc5dyakr6l0";
|
||||
"Hack" = "05vp3315bigfnr6p2fb884jrw489lhhpfqp764h51rldhf6674pj";
|
||||
"Hasklig" = "081z71gfk3i1dqmy6myjygrk65bd7ln6p761i8j6sw3jx0567ml6";
|
||||
"HeavyData" = "1fawn2xfq5js661s5wqjpfbfksg6n38r6n4x6zcgmr47g5hpnpmn";
|
||||
"Hermit" = "0gz6vhlgpaljg41w1fddrv58jxjrngyi101vzm2gc8gp7ym4m4ad";
|
||||
"iA-Writer" = "09m4039hzjqinx3ilzddq2msb64iz1y0ba43k2jd33b66svpi37a";
|
||||
"IBMPlexMono" = "0vwrqy0v2swfh63ikp1lbh6cl4f2qv2q28lk2f2dd6kzzg28p6qj";
|
||||
"Inconsolata" = "0n4nqbry3i019b9zbcawjqn5i7kf04p542sbbmnpi6vpfiv7fi5c";
|
||||
"InconsolataGo" = "1q2dq0jrcd1f611icj1zcwp3zbdrrfxq5882d7blkrbhnlj3jywy";
|
||||
"InconsolataLGC" = "0y29y7vk3x2jvi0ca8lxb8z2w9ww00gpsvkh5qvwxxqxhp5qjafk";
|
||||
"Iosevka" = "1j7bb0vf0hxvi55w4q3bnqhqwn9pp2i58mj79nz0qi59sals3qbm";
|
||||
"JetBrainsMono" = "146w91f1x4709wf52c2rh315qcgpph61cgr07ysn154hnwg5miqj";
|
||||
"Lekton" = "1s5dmk24n119hlsj2aw99d5g564adn40vmyrqgzi3kh72zpqlixy";
|
||||
"LiberationMono" = "06miqkf15h8ficd44rh755lw56i2nqcyxaf0vwa2zvls0v5mk2ar";
|
||||
"Lilex" = "0zbgkj20dqnb5hmh52cmcn175zhc55bz1h1gi3ngmfi6nwgn20vz";
|
||||
"Meslo" = "1d94ligqlngj4lwclah1w3ksvb3wg1iqjpmgblnxl36cd965pjqm";
|
||||
"Monofur" = "1x43siij45h7yz1cw8i32kvdqx1n6zgc9qrj179ms1jl180lj1pj";
|
||||
"Monoid" = "183qd1gpf78j2bipr4xh43kwaidlw3sfl8czzngkfdbpymssqak4";
|
||||
"Mononoki" = "1vpdcmwb406rxgvbarhmb3fpzaj53xgg05nagr33vhpzp7d999b1";
|
||||
"MPlus" = "1a7pb4dvh38bsdsjpbnb01pyn07rx0pwwr287i4vy1p46i39qm9m";
|
||||
"NerdFontsSymbolsOnly" = "0zgjvggb7ipssnjcqlw230pkb4vqpl6xzq42wqk9pcgsv7wg09nv";
|
||||
"Noto" = "17p48ig61dgzgd7fyppw65vdj1isg85w4xcxqjkaqx1225w4k8f9";
|
||||
"OpenDyslexic" = "0ypzyhh00vgd1ws6wh23sph9ycp193y5x9aimscxir8sdbnx3sxp";
|
||||
"Overpass" = "19k8kj9gid1m52b55s5jn8m5kslsgm16jqdifj5as2pd2bgjpwbh";
|
||||
"ProFont" = "1wrmh6jqkbygwba7nsfq5ycw84rqp4mpr10bd50cr7p9inkddq3n";
|
||||
"ProggyClean" = "066k2zdihv1x6vbsdalw5cyygmw27b32jvnvq774ry9bbz8yv4l1";
|
||||
"RobotoMono" = "1glqsz3h7rxs55jf8bycvzxd2snf7jd9qgd4ra0jn8h0qkgvsfgd";
|
||||
"ShareTechMono" = "0j3ribfylx3hnqir7i82pgyb56qlvlzp1y1c6lwvw8k15d06y7fi";
|
||||
"SourceCodePro" = "0zdy8xr2ka9m64d69380plz3xaq08rxwdv8idzxbkhfykrp1j3cz";
|
||||
"SpaceMono" = "1nqkqj0jxfj54wlcs6d2618b89y2fs2pg77kvfr4bc45lrqlbxzk";
|
||||
"Terminus" = "00qyvxjv7aa90xn4bmpygwm0llzd1rr7y0szdbv7h5n7i80yx29s";
|
||||
"Tinos" = "11ii28g1wv6ajpkbvw51vg47s3ww4lss46mh4pd0pf0fzz54gfcc";
|
||||
"Ubuntu" = "0vc8rfpqvajj4xd3anqrnx8g54mhnz9z2h4287g21qf2n1qqagn4";
|
||||
"UbuntuMono" = "0rzd625krvvf1c04172ck2507szm9fq6isydgqyhhkr1kwzx5pzq";
|
||||
"VictorMono" = "09nf02zig9kvgvqqwd6dynx3cidjnlq8sa3qxqw3b313pzia8k3i";
|
||||
"3270" = "03rf3prn4c9q5mggbdzpp3la7in1dq12anqxjpinxwla7ngdh4rv";
|
||||
"Agave" = "177b2yljw4fxbsmjp8yrwvjzj9186f8g0s59xnz56nrl9ndx84qm";
|
||||
"AnonymousPro" = "0qn5xa37g9y47ski5hc2vxhvfbfpl58ranpziiw733kv83pkbkq6";
|
||||
"Arimo" = "0b69gh5qgl0v6b1cirma7l32yxj2d53w305gpfr6flral3ljq6if";
|
||||
"AurulentSansMono" = "165hfg67061zqbs28fl66ldi910n5pnzb6n6d39wh70pclgy2g4n";
|
||||
"BigBlueTerminal" = "1adindb4lvihya3mphmshk4vigragskyrx6ixydrp8i1f7s9sp20";
|
||||
"BitstreamVeraSansMono" = "0mi9j69f8s48fygwb7fz9m81871nvajh895mpch7qj69xmpp9acs";
|
||||
"CascadiaCode" = "13vlfbagjx033j97li6ypvr0zhxbm96lcz8xcn715225mslr2ib4";
|
||||
"CodeNewRoman" = "1r4q48p315x021m0qrd1xmfgqw4xif3snlc764hq5iy10vxdv9ni";
|
||||
"Cousine" = "18m2dlcg6dymi0xwrky4q7ynjx4bqnr5lnvbgr9cdnyf3zz9b6rj";
|
||||
"DaddyTimeMono" = "0qq5lb4xpqggaz0bml8c2awlgwal6xvyx9nydxqgs672jq7hn1cd";
|
||||
"DejaVuSansMono" = "1qnl6gyfyq4cyx0nyl7f39cm3mz33rfngv9kq2g7b187n4dmawaa";
|
||||
"DroidSansMono" = "1l2cl2ryv9p7wlg6q5zsmg5wmfp27s3h47lq75d07chydyr08vii";
|
||||
"FantasqueSansMono" = "1m2xkr7dhfa9bn9vha0s1x7sl1n8l1kdl8f4c876cwjh1mvrwkar";
|
||||
"FiraCode" = "02gnxi9rs25i7mpzkir62w6khvijpma0j0sm3a7gfm0kfdkqzi8j";
|
||||
"FiraMono" = "1kn5vl90xi6ba7msfgwvv9frpfr33xv8q93r62lnqs3avfk743j9";
|
||||
"FontPatcher" = "039yiz7clkghyc6djf4zcaq6k83w2jhxcy66z4i9zmqh3km81wlr";
|
||||
"Go-Mono" = "0bmd7r38ss754gpkndlag0gxap5ga473y778fyrrr3ccccg6d8iv";
|
||||
"Gohu" = "0cvfdli8kzrd9n2h152432f8zr9ffvp29vsfcf98nla3ax2p0v05";
|
||||
"Hack" = "1q3xdlpxps41pi724697mb5bc98mmql8s2lc4xh9zwddjvchd3zl";
|
||||
"Hasklig" = "0xmg0h5bjjiqj00pv51q2babfm7j6bl1b8r1w26z95jvrpnifi1z";
|
||||
"HeavyData" = "1rppgk2lj95kv67c9s97wkqkbrmyp5y7qm1b0a1sk49sg7l4mljp";
|
||||
"Hermit" = "1cw8ia9b5adb7z63cag6l25sahp82gr6bsz9qqc3p12nzi5lxsk8";
|
||||
"iA-Writer" = "01bx8j6hqpl5zmx96d6zrwn3n6ckic5zxr53wls6zdmp01wnkg72";
|
||||
"IBMPlexMono" = "1m1qzxls16cfsxwly5r4vlwpfv477sf3gi6yj9krvkxp0d5ymz74";
|
||||
"Inconsolata" = "1vavavjdiwrlxy9klp0cm6pvmr0nkl7dpls7ja79zgkw7yjhsifq";
|
||||
"InconsolataGo" = "0cp76c6s2r3q8vgild0jpc94b13ypzbyvmas9gwhq1mvf24k4jp5";
|
||||
"InconsolataLGC" = "16a59y1idqp1zgkw9wxcdgcjg6bjlxwbj3a3a00h4gwkczlp2r42";
|
||||
"Iosevka" = "0qg88d2rqbm1x0vfyyr495dznnviga8979dg0ik5yw27fc43hrjj";
|
||||
"JetBrainsMono" = "19ja9dksxq2dl2hi8nyflvl7skyi2wd65s4z14jcilbynxmk2z0q";
|
||||
"Lekton" = "03378znmbss5qq75jmc0r51qwpxsiy2ng8gi164s2mjykr83gr2n";
|
||||
"LiberationMono" = "13r13drx8r1mkbndfw6ip48sjyhf6qw0wgrwyqlgz5dcm3z9c3gx";
|
||||
"Lilex" = "1w2iw9ksnkmwa37a30vrlwg6sxh6l19wc95f8s5mx06sa3ywfs11";
|
||||
"Meslo" = "0fli7njkhq89ykdmdch313mzswlb23b716d0656qw8q3fbyh9dzh";
|
||||
"Monofur" = "0lhfm5dxh4nsq0whwvpqbr2grb27pl03wi7l7vdjbf5x1iacrpfp";
|
||||
"Monoid" = "1jrknl6yz6k6a8l9iiw2s74xkfqckn9y9vjdk49cyf2iy3fzbi30";
|
||||
"Mononoki" = "0jw1kx7ryakx1wdgk9jf2ygrcq65wjaar5w1bggv5zlsxpxdllis";
|
||||
"MPlus" = "1lvmv4vcs36137fv1vbw3vnyxxar8klgngn77202lhgvgi44x60a";
|
||||
"NerdFontsSymbolsOnly" = "0sizriiwa7xh2dscz96gyr4sg04dxxi4f3sv27qk3g46vq0ciw4w";
|
||||
"Noto" = "0dwjj3l7ryx7ysbnp5hh81n3qqqn3yf4h8jypm4ri96vf360myad";
|
||||
"OpenDyslexic" = "1gpmzcgp6bpidi8h1l5a0n3q912swqk04mdhqwpqskj1jn77d2hb";
|
||||
"Overpass" = "1ywp6fphy6akdfd96a37jqcjqry9w15zr0r609vf5a11n1aq3s0w";
|
||||
"ProFont" = "0g3qa8lcp199mln5myn3yn4hdgyx3n16ajdm8a7anjfi9im2i6ns";
|
||||
"ProggyClean" = "0q4m7kq3k0ga6i2kr6a4k59na8b7m6zvvj9zyp61375lm6wb3bv2";
|
||||
"RobotoMono" = "0j055qjm0x4ksy19snplykm9dm9jkmn9swsis49k96mfw7wx9mfq";
|
||||
"ShareTechMono" = "055hg15ghd1ca8wxq3sfjpck8w4x6qnzjyn3r8rslyrbhl51v9aj";
|
||||
"SourceCodePro" = "05fs5ralnz9m6zdck9bvzf1rjgr4f5m1fr9m51cmr60wzhag9qsz";
|
||||
"SpaceMono" = "1m3x85qzykxg5mb56d1zgl367q55ndndxzzmsrlibmybqvc1ffq9";
|
||||
"Terminus" = "0fkqd85qfp8dk8sbyjfxirfiwlfl9a40z8jhybzzd7ys4yrzlq1c";
|
||||
"Tinos" = "11bbg7ssf7wndxrm6kklggsfhmyaijfg4xi6cw743kcwzfvi8kd1";
|
||||
"Ubuntu" = "14w55vh42mz5lvbpl4p1vx31hba957c5345qfpmym5majz83hx3q";
|
||||
"UbuntuMono" = "1xybn0q1xx5sidhllna5y7584fl75qw6v5alb2p1b6933a5czg0m";
|
||||
"VictorMono" = "02c5c9ljnmkf4awfhbjna6g86220ckv977rrc1sh6qr7q8zci6vr";
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
"2.3.0"
|
||||
"2.3.3"
|
||||
|
@ -1,17 +1,25 @@
|
||||
{ lib, fetchzip, p7zip }:
|
||||
{ lib, stdenvNoCC, fetchurl, p7zip }:
|
||||
|
||||
let
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "rounded-mgenplus";
|
||||
version = "20150602";
|
||||
in fetchzip rec {
|
||||
name = "${pname}-${version}";
|
||||
|
||||
url = "https://osdn.jp/downloads/users/8/8598/${name}.7z";
|
||||
postFetch = ''
|
||||
${p7zip}/bin/7z x $downloadedFile
|
||||
src = fetchurl {
|
||||
url = "https://osdn.jp/downloads/users/8/8598/${pname}-${version}.7z";
|
||||
hash = "sha256-7OpnZJc9k5NiOPHAbtJGMQvsMg9j81DCvbfo0f7uJcw=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
nativeBuildInputs = [ p7zip ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -m 444 -D -t $out/share/fonts/${pname} ${pname}-*.ttf
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
sha256 = "0vwdknagdrl5dqwpb1x5lxkbfgvbx8dpg7cb6yamgz71831l05v1";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Japanese font based on Rounded M+ and Noto Sans Japanese";
|
||||
|
@ -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; {
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ lib, stdenv, writeScript, fetchFromGitHub, z3, ocamlPackages, makeWrapper, installShellFiles }:
|
||||
{ lib, stdenv, writeScript, fetchFromGitHub, z3, ocamlPackages, makeWrapper, installShellFiles, removeReferencesTo }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fstar";
|
||||
@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
installShellFiles
|
||||
removeReferencesTo
|
||||
] ++ (with ocamlPackages; [
|
||||
ocaml
|
||||
findlib
|
||||
@ -55,6 +56,10 @@ stdenv.mkDerivation rec {
|
||||
mkdir -p $out/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/fstarlib
|
||||
'';
|
||||
postInstall = ''
|
||||
# Remove build artifacts
|
||||
find $out -name _build -type d | xargs -I{} rm -rf "{}"
|
||||
remove-references-to -t '${ocamlPackages.ocaml}' $out/bin/fstar.exe
|
||||
|
||||
wrapProgram $out/bin/fstar.exe --prefix PATH ":" "${z3}/bin"
|
||||
installShellCompletion --bash .completion/bash/fstar.exe.bash
|
||||
installShellCompletion --fish .completion/fish/fstar.exe.fish
|
||||
|
@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
] ++ lib.optionals enableLibcbqn [
|
||||
"lib"
|
||||
"dev"
|
||||
];
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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";
|
||||
|
@ -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" ];
|
||||
|
@ -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"
|
||||
|
@ -20,13 +20,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "umockdev";
|
||||
version = "0.17.13";
|
||||
version = "0.17.15";
|
||||
|
||||
outputs = [ "bin" "out" "dev" "devdoc" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/martinpitt/umockdev/releases/download/${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-bG6/bmIJtqSXRuDZGkSNAntUJxurgu1woTLs8pTKE88=";
|
||||
sha256 = "7UGO4rv7B4H0skuXKe8nCtg83czWaln/lEsFnvE2j+8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@ -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 ];
|
||||
|
@ -1,8 +1,8 @@
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 2ed9027..1f6bbf2 100644
|
||||
index 15d9e5d..a1906dd 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -38,6 +38,7 @@ g_ir_compiler = find_program('g-ir-compiler', required: false)
|
||||
@@ -44,6 +44,7 @@ g_ir_compiler = find_program('g-ir-compiler', required: false)
|
||||
|
||||
conf.set('PACKAGE_NAME', meson.project_name())
|
||||
conf.set_quoted('VERSION', meson.project_version())
|
||||
@ -10,7 +10,7 @@ index 2ed9027..1f6bbf2 100644
|
||||
|
||||
# glibc versions somewhere between 2.28 and 2.34
|
||||
if cc.has_function('__fxstatat', prefix: '#include <sys/stat.h>')
|
||||
@@ -148,7 +149,7 @@ hacked_gir = custom_target('UMockdev-1.0 hacked gir',
|
||||
@@ -156,7 +157,7 @@ hacked_gir = custom_target('UMockdev-1.0 hacked gir',
|
||||
|
||||
if g_ir_compiler.found()
|
||||
umockdev_typelib = custom_target('UMockdev-1.0 typelib',
|
||||
@ -31,28 +31,28 @@ index 5269dd0..a2ec46d 100644
|
||||
}
|
||||
|
||||
diff --git a/src/umockdev-record.vala b/src/umockdev-record.vala
|
||||
index 8434d32..68c7f8e 100644
|
||||
index bf0e644..ff5ea59 100644
|
||||
--- a/src/umockdev-record.vala
|
||||
+++ b/src/umockdev-record.vala
|
||||
@@ -435,7 +435,7 @@ main (string[] args)
|
||||
@@ -444,7 +444,7 @@ main (string[] args)
|
||||
preload = "";
|
||||
else
|
||||
preload = preload + ":";
|
||||
- Environment.set_variable("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
|
||||
+ Environment.set_variable("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
|
||||
- checked_setenv("LD_PRELOAD", preload + "libumockdev-preload.so.0");
|
||||
+ checked_setenv("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0");
|
||||
|
||||
try {
|
||||
root_dir = DirUtils.make_tmp("umockdev.XXXXXX");
|
||||
diff --git a/src/umockdev-run.vala b/src/umockdev-run.vala
|
||||
index 9a1ba10..6df2522 100644
|
||||
index 7b0753e..66b778b 100644
|
||||
--- a/src/umockdev-run.vala
|
||||
+++ b/src/umockdev-run.vala
|
||||
@@ -95,7 +95,7 @@ main (string[] args)
|
||||
preload = "";
|
||||
else
|
||||
preload = preload + ":";
|
||||
- Environment.set_variable ("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
|
||||
+ Environment.set_variable ("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
|
||||
- checked_setenv ("LD_PRELOAD", preload + "libumockdev-preload.so.0");
|
||||
+ checked_setenv ("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0");
|
||||
|
||||
var testbed = new UMockdev.Testbed ();
|
||||
|
||||
|
@ -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 .";
|
||||
|
@ -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;
|
||||
|
@ -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 = [
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ha-philipsjs";
|
||||
version = "2.9.0";
|
||||
version = "3.0.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.8";
|
||||
@ -20,8 +20,8 @@ buildPythonPackage rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "danielperna84";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-B2AQoVyoG6wyE9pTWf/ASQd8iZfIrjUr078rSkoARf0=";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-iJxu+TdgDHMnLuNTFj0UC8V76x3nAgGqswMLDSgmDmQ=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
@ -43,6 +43,7 @@ buildPythonPackage rec {
|
||||
meta = with lib; {
|
||||
description = "Python library to interact with Philips TVs with jointSPACE API";
|
||||
homepage = "https://github.com/danielperna84/ha-philipsjs";
|
||||
changelog = "https://github.com/danielperna84/ha-philipsjs/releases/tag/${version}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
66
pkgs/development/python-modules/lsprotocol/default.nix
Normal file
66
pkgs/development/python-modules/lsprotocol/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
78
pkgs/development/python-modules/nox/default.nix
Normal file
78
pkgs/development/python-modules/nox/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
@ -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 = [
|
||||
|
@ -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
|
||||
];
|
||||
|
||||
|
@ -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 = [
|
||||
|
@ -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 ];
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -9,13 +9,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "sphinxext-opengraph";
|
||||
version = "0.7.4";
|
||||
version = "0.7.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wpilibsuite";
|
||||
repo = "sphinxext-opengraph";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-N8448GHg/lR7z7Y4F4vO7z+wAeaboo8Cj0X+HSyToAA=";
|
||||
hash = "sha256-fNtXj7iYX7rSaGO6JcxC+PvR8WzTFl8gYwHyRExYdfI=";
|
||||
};
|
||||
|
||||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||||
|
@ -1,14 +1,14 @@
|
||||
{ lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
libffi,
|
||||
libxml2,
|
||||
zlib,
|
||||
withManual ? true,
|
||||
withHTML ? true,
|
||||
llvmPackages,
|
||||
python3,
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, libffi
|
||||
, libxml2
|
||||
, zlib
|
||||
, withManual ? true
|
||||
, withHTML ? true
|
||||
, llvmPackages
|
||||
, python3
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -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";
|
||||
|
@ -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=";
|
||||
|
@ -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 = [
|
||||
|
@ -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; [
|
||||
|
@ -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 = [
|
||||
|
@ -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";
|
||||
|
@ -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";
|
||||
|
@ -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 ]
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "tailscale";
|
||||
version = "1.34.2";
|
||||
version = "1.36.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tailscale";
|
||||
repo = "tailscale";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-uFr7swB7AQLvjDg+1KBCQuoLkDw454+gVe+6/iD74LM=";
|
||||
sha256 = "sha256-hNyEABs/GdfOx6vLTVBgbOzkbFvEDYZ0y1y0a0mIsfA=";
|
||||
};
|
||||
vendorSha256 = "sha256-//qhvzZzaAqfcj4HZIy6ZkGyfAwtRdf7ARaXI+trTe0=";
|
||||
vendorSha256 = "sha256-Jy3kjUA8qLhcw9XLw4Xo1zhD+IWZrDNM79TsbnKpx/g=";
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -1,45 +1,58 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, wayland
|
||||
, libX11
|
||||
, xbitmaps
|
||||
, libXcursor
|
||||
, libXmu
|
||||
, libXpm
|
||||
, libheif
|
||||
, pkg-config
|
||||
, wayland
|
||||
, xbitmaps
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "wallutils";
|
||||
version = "5.12.4";
|
||||
version = "5.12.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xyproto";
|
||||
repo = "wallutils";
|
||||
rev = version;
|
||||
sha256 = "sha256-NODG4Lw/7X1aoT+dDSWxWEbDX6EAQzzDJPwsWOLaJEM=";
|
||||
hash = "sha256-qC+AF+NFXSrUZAYaiFPwvfZtsAGhKE4XFDOUcfXUAbM=";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
||||
patches = [ ./lscollection-Add-NixOS-paths-to-DefaultWallpaperDirectories.patch ];
|
||||
patches = [
|
||||
./000-add-nixos-dirs-to-default-wallpapers.patch
|
||||
];
|
||||
|
||||
excludedPackages = [
|
||||
"./pkg/event/cmd" # Development tools
|
||||
];
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ wayland libX11 xbitmaps libXcursor libXmu libXpm libheif ];
|
||||
buildInputs = [
|
||||
libX11
|
||||
libXcursor
|
||||
libXmu
|
||||
libXpm
|
||||
libheif
|
||||
wayland
|
||||
xbitmaps
|
||||
];
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
preCheck =
|
||||
let skippedTests = [
|
||||
"TestClosest" # Requiring Wayland or X.
|
||||
"TestNewSimpleEvent" # Blocking
|
||||
"TestClosest" # Requiring Wayland or X
|
||||
"TestEveryMinute" # Blocking
|
||||
"TestNewSimpleEvent" # Blocking
|
||||
]; in
|
||||
''
|
||||
export XDG_RUNTIME_DIR=`mktemp -d`
|
||||
@ -47,11 +60,12 @@ buildGoModule rec {
|
||||
buildFlagsArray+=("-run" "[^(${builtins.concatStringsSep "|" skippedTests})]")
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Utilities for handling monitors, resolutions, and (timed) wallpapers";
|
||||
inherit (src.meta) homepage;
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ ];
|
||||
platforms = platforms.linux;
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = [ lib.maintainers.AndersonTorres ];
|
||||
inherit (wayland.meta) platforms;
|
||||
badPlatforms = lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ipxe";
|
||||
version = "unstable-2022-04-06";
|
||||
version = "unstable-2023-01-25";
|
||||
|
||||
nativeBuildInputs = [ gnu-efi mtools openssl perl xorriso xz ] ++ lib.optional stdenv.hostPlatform.isx86 syslinux;
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||
@ -40,8 +40,8 @@ stdenv.mkDerivation rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "ipxe";
|
||||
repo = "ipxe";
|
||||
rev = "70995397e5bdfd3431e12971aa40630c7014785f";
|
||||
sha256 = "SrTNEYk13JXAcJuogm9fZ7CrzJIDRc0aziGdjRNv96I=";
|
||||
rev = "4bffe0f0d9d0e1496ae5cfb7579e813277c29b0f";
|
||||
sha256 = "oDQBJz6KKV72DfhNEXjAZNeolufIUQwhroczCuYnGQA=";
|
||||
};
|
||||
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isAarch64 ''
|
||||
|
@ -49,6 +49,6 @@ stdenv.mkDerivation rec {
|
||||
download.
|
||||
'';
|
||||
maintainers = with maintainers; [ peterhoeg ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -51,7 +51,6 @@ python3.pkgs.buildPythonApplication rec {
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
"tests/checker/test_content_allows_robots.py"
|
||||
"tests/checker/test_http*.py"
|
||||
"tests/checker/test_noproxy.py"
|
||||
"tests/test_network.py"
|
||||
];
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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";
|
||||
|
@ -5538,6 +5538,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 { };
|
||||
@ -6160,6 +6162,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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user