about summary refs log tree commit diff
path: root/maintainers
diff options
context:
space:
mode:
authorjunji hashimoto <junjihashimoto@users.noreply.github.com>2021-09-14 13:40:26 +0900
committerGitHub <noreply@github.com>2021-09-14 13:40:26 +0900
commitb9b70a121710b3bf1c964c4411ccc3916416c421 (patch)
tree15d02b0a4ff8be0fdd3466fc5306db64349ef4ff /maintainers
parent34e940938de9fdb0c8993841fe7a90f868b12bae (diff)
parentf6ffb3d8191dda4ca6406379ebef94c7af6aed4c (diff)
downloadnixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar.gz
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar.bz2
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar.lz
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar.xz
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.tar.zst
nixlib-b9b70a121710b3bf1c964c4411ccc3916416c421.zip
Merge branch 'master' into feature/bump-torchvision
Diffstat (limited to 'maintainers')
-rw-r--r--maintainers/maintainer-list.nix124
-rwxr-xr-xmaintainers/scripts/db-to-md.sh88
-rwxr-xr-xmaintainers/scripts/doc/escape-code-markup.py97
-rwxr-xr-xmaintainers/scripts/doc/replace-xrefs-by-empty-links.py32
-rw-r--r--maintainers/scripts/doc/unknown-code-language.lua12
-rw-r--r--maintainers/scripts/luarocks-packages.csv175
-rw-r--r--maintainers/scripts/pluginupdate.py2
-rwxr-xr-xmaintainers/scripts/update-luarocks-packages53
-rw-r--r--maintainers/scripts/update-luarocks-shell.nix7
-rwxr-xr-xmaintainers/scripts/update.nix4
-rw-r--r--maintainers/team-list.nix9
11 files changed, 488 insertions, 115 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 5401fbe800f2..40c0c36cfbd8 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -80,6 +80,12 @@
     githubId = 791309;
     name = "Jan Hrnko";
   };
+  _1000teslas = {
+    name = "Kevin Tran";
+    email = "47207223+1000teslas@users.noreply.github.com";
+    github = "1000teslas";
+    githubId = 47207223;
+  };
   _3699n = {
     email = "nicholas@nvk.pm";
     github = "3699n";
@@ -348,6 +354,12 @@
     githubId = 4732885;
     name = "Ivan Jager";
   };
+  airwoodix = {
+    email = "airwoodix@posteo.me";
+    github = "airwoodix";
+    githubId = 44871469;
+    name = "Etienne Wodey";
+  };
   ajs124 = {
     email = "nix@ajs124.de";
     github = "ajs124";
@@ -526,6 +538,16 @@
       fingerprint = "B422 CFB1 C9EF 73F7 E1E2 698D F53E 3233 42F7 A6D3A";
     }];
   };
+  alyaeanyx = {
+    email = "alexandra.hollmeier@mailbox.org";
+    github = "alyaeanyx";
+    githubId = 74795488;
+    name = "Alexandra Hollmeier";
+    keys = [{
+      longkeyid = "rsa3072/0x87D1AADCD25B8DEE";
+      fingerprint = "1F73 8879 5E5A 3DFC E2B3 FA32 87D1 AADC D25B 8DEE";
+    }];
+  };
   amanjeev = {
     email = "aj@amanjeev.com";
     github = "amanjeev";
@@ -1318,6 +1340,12 @@
     githubId = 7346933;
     name = "betaboon";
   };
+  bew = {
+    email = "benoit.dechezelles@gmail.com";
+    github = "bew";
+    githubId = 9730330;
+    name = "Benoit de Chezelles";
+  };
   bfortz = {
     email = "bernard.fortz@gmail.com";
     github = "bfortz";
@@ -1508,12 +1536,6 @@
     githubId = 355401;
     name = "Brian Hicks";
   };
-  bricewge = {
-    email = "bricewge@gmail.com";
-    github = "bricewge";
-    githubId = 5525646;
-    name = "Brice Waegeneire";
-  };
   Br1ght0ne = {
     email = "brightone@protonmail.com";
     github = "Br1ght0ne";
@@ -1671,6 +1693,12 @@
     githubId = 7435854;
     name = "Victor Calvert";
   };
+  cameronnemo = {
+    email = "cnemo@tutanota.com";
+    github = "cameronnemo";
+    githubId = 3212452;
+    name = "Cameron Nemo";
+  };
   campadrenalin = {
     email = "campadrenalin@gmail.com";
     github = "campadrenalin";
@@ -2257,6 +2285,12 @@
     githubId = 1382175;
     name = "Oliver Matthews";
   };
+  cyounkins = {
+    name = "Craig Younkins";
+    email = "cyounkins@gmail.com";
+    github = "cyounkins";
+    githubId = 346185;
+  };
   cypherpunk2140 = {
     email = "stefan.mihaila@pm.me";
     github = "stefan-mihaila";
@@ -3621,6 +3655,12 @@
       fingerprint = "2F93 661D AC17 EA98 A104  F780 ECC7 55EE 583C 1672";
     }];
   };
+  flexagoon = {
+    email = "flexagoon@pm.me";
+    github = "flexagoon";
+    githubId = 66178592;
+    name = "Pavel Zolotarevskiy";
+  };
   flexw = {
     email = "felix.weilbach@t-online.de";
     github = "FlexW";
@@ -5478,6 +5518,12 @@
     githubId = 66669;
     name = "Jeff Zellner";
   };
+  k4leg = {
+    name = "k4leg";
+    email = "python.bogdan@gmail.com";
+    github = "k4leg";
+    githubId = 39882583;
+  };
   kaction = {
     name = "Dmitry Bogatov";
     email = "KAction@disroot.org";
@@ -6700,6 +6746,12 @@
     githubId = 775189;
     name = "Jordi Masip";
   };
+  MaskedBelgian = {
+    email = "michael.colicchia@imio.be";
+    github = "MaskedBelgian";
+    githubId = 29855073;
+    name = "Michael Colicchia";
+  };
   matdsoupe = {
     github = "matdsoupe";
     githubId = 44469426;
@@ -7451,6 +7503,16 @@
     name = "Maxim Schuwalow";
     email = "maxim.schuwalow@gmail.com";
   };
+  msfjarvis = {
+    github = "msfjarvis";
+    githubId = 3348378;
+    name = "Harsh Shandilya";
+    email = "nixos@msfjarvis.dev";
+    keys = [{
+      longkeyid = "rsa4096/0xB7843F823355E9B9";
+      fingerprint = "8F87 050B 0F9C B841 1515  7399 B784 3F82 3355 E9B9";
+    }];
+  };
   msiedlarek = {
     email = "mikolaj@siedlarek.pl";
     github = "msiedlarek";
@@ -7655,6 +7717,12 @@
     githubId = 2590830;
     name = "Sage Raflik";
   };
+  neosimsim = {
+    email = "me@abn.sh";
+    github = "neosimsim";
+    githubId = 1771772;
+    name = "Alexander Ben Nasrallah";
+  };
   nequissimus = {
     email = "tim@nequissimus.com";
     github = "nequissimus";
@@ -8520,7 +8588,7 @@
     githubId = 1719781;
     name = "Pablo Ovelleiro Corral";
     keys = [{
-      longkeyid = "sa4096/0x823A6154426408D3";
+      longkeyid = "rsa4096/0x823A6154426408D3";
       fingerprint = "D03B 218C AE77 1F77 D7F9  20D9 823A 6154 4264 08D3";
     }];
   };
@@ -8778,6 +8846,12 @@
     githubId = 33375;
     name = "Peter Sanford";
   };
+  pshirshov = {
+    email = "pshirshov@eml.cc";
+    github = "pshirshov";
+    githubId = 295225;
+    name = "Pavel Shirshov";
+  };
   psibi = {
     email = "sibi@psibi.in";
     github = "psibi";
@@ -9532,6 +9606,12 @@
     github = "s1341";
     githubId = 5682183;
   };
+  samalws = {
+    email = "sam@samalws.com";
+    name = "Sam Alws";
+    github = "samalws";
+    githubId = 20981725;
+  };
   samb96 = {
     email = "samb96@gmail.com";
     github = "samb96";
@@ -9566,6 +9646,12 @@
     githubId = 115821;
     name = "Sam Rose";
   };
+  samuela = {
+    email = "skainsworth@gmail.com";
+    github = "samuela";
+    githubId = 226872;
+    name = "Samuel Ainsworth";
+  };
   samueldr = {
     email = "samuel@dionne-riel.com";
     github = "samueldr";
@@ -10256,6 +10342,12 @@
     githubId = 8668915;
     name = "Stephane Schitter";
   };
+  staccato = {
+    name = "staccato";
+    email = "moveq@riseup.net";
+    github = "staccato";
+    githubId = 86573128;
+  };
   steell = {
     email = "steve@steellworks.com";
     github = "Steell";
@@ -11030,6 +11122,12 @@
     githubId = 10110;
     name = "Travis B. Hartwell";
   };
+  travisdavis-ops = {
+    email = "travisdavismedia@gmail.com";
+    github = "travisdavis-ops";
+    githubId = 52011418;
+    name = "Travis Davis";
+  };
   TredwellGit = {
     email = "tredwell@tutanota.com";
     github = "TredwellGit";
@@ -11287,10 +11385,14 @@
     name = "Jos van den Oever";
   };
   vanilla = {
-    email = "neko@hydev.org";
+    email = "osu_vanilla@126.com";
     github = "VergeDX";
     githubId = 25173827;
     name = "Vanilla";
+    keys = [{
+      longkeyid = "rsa4096/0x4DFA2BDD7305E739";
+      fingerprint = "5C16 5178 7DE2 EE5A AF98  3EA3 4DFA 2BDD 7305 E739";
+    }];
   };
   vanschelven = {
     email = "klaas@vanschelven.com";
@@ -11742,6 +11844,12 @@
     githubId = 3992240;
     name = "Elijah Rum";
   };
+  x3ro = {
+    name = "^x3ro";
+    email = "nix@x3ro.dev";
+    github = "x3rAx";
+    githubId = 2268851;
+  };
   xaverdh = {
     email = "hoe.dom@gmx.de";
     github = "xaverdh";
diff --git a/maintainers/scripts/db-to-md.sh b/maintainers/scripts/db-to-md.sh
new file mode 100755
index 000000000000..01357d1e2412
--- /dev/null
+++ b/maintainers/scripts/db-to-md.sh
@@ -0,0 +1,88 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=. -i bash -p pandoc
+
+# This script is temporarily needed while we transition the manual to
+# CommonMark. It converts DocBook files into our CommonMark flavour.
+
+debug=
+files=()
+
+while [ "$#" -gt 0 ]; do
+    i="$1"; shift 1
+    case "$i" in
+      --debug)
+        debug=1
+        ;;
+      *)
+        files+=("$i")
+        ;;
+    esac
+done
+
+echo "WARNING: This is an experimental script and might not preserve all formatting." > /dev/stderr
+echo "Please report any issues you discover." > /dev/stderr
+
+outExtension="md"
+if [[ $debug ]]; then
+    outExtension="json"
+fi
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+
+# NOTE: Keep in sync with Nixpkgs manual (/doc/Makefile).
+# TODO: Remove raw-attribute when we can get rid of DocBook altogether.
+pandoc_commonmark_enabled_extensions=+attributes+fenced_divs+footnotes+bracketed_spans+definition_lists+pipe_tables+raw_attribute
+targetLang="commonmark${pandoc_commonmark_enabled_extensions}+smart"
+if [[ $debug ]]; then
+    targetLang=json
+fi
+pandoc_flags=(
+    # Not needed:
+    # - diagram-generator.lua (we do not support that in NixOS manual to limit dependencies)
+    # - media extraction (was only required for diagram generator)
+    # - myst-reader/roles.lua (only relevant for MyST → DocBook)
+    # - link-unix-man-references.lua (links should only be added to display output)
+    # - docbook-writer/rst-roles.lua (only relevant for → DocBook)
+    # - docbook-writer/labelless-link-is-xref.lua (only relevant for → DocBook)
+    "--lua-filter=$DIR/../../doc/build-aux/pandoc-filters/docbook-reader/citerefentry-to-rst-role.lua"
+    "--lua-filter=$DIR/../../doc/build-aux/pandoc-filters/myst-writer/roles.lua"
+    "--lua-filter=$DIR/doc/unknown-code-language.lua"
+    -f docbook
+    -t "$targetLang"
+    --tab-stop=2
+    --wrap=none
+)
+
+for file in "${files[@]}"; do
+    if [[ ! -f "$file" ]]; then
+        echo "db-to-md.sh: $file does not exist" > /dev/stderr
+        exit 1
+    else
+    rootElement=$(xmllint --xpath 'name(//*)' "$file")
+
+    if [[ $rootElement = chapter ]]; then
+        extension=".chapter.$outExtension"
+    elif [[ $rootElement = section ]]; then
+        extension=".section.$outExtension"
+    else
+        echo "db-to-md.sh: $file contains an unsupported root element $rootElement" > /dev/stderr
+        exit 1
+    fi
+
+    outFile="${file%".section.xml"}"
+    outFile="${outFile%".chapter.xml"}"
+    outFile="${outFile%".xml"}$extension"
+    temp1=$(mktemp)
+    $DIR/doc/escape-code-markup.py "$file" "$temp1"
+    if [[ $debug ]]; then
+        echo "Converted $file to $temp1" > /dev/stderr
+    fi
+    temp2=$(mktemp)
+    $DIR/doc/replace-xrefs-by-empty-links.py "$temp1" "$temp2"
+    if [[ $debug ]]; then
+        echo "Converted $temp1 to $temp2" > /dev/stderr
+    fi
+    pandoc "$temp2" -o "$outFile" "${pandoc_flags[@]}"
+    echo "Converted $file to $outFile" > /dev/stderr
+  fi
+done
diff --git a/maintainers/scripts/doc/escape-code-markup.py b/maintainers/scripts/doc/escape-code-markup.py
new file mode 100755
index 000000000000..015435b698e6
--- /dev/null
+++ b/maintainers/scripts/doc/escape-code-markup.py
@@ -0,0 +1,97 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=channel:nixos-unstable -i python3 -p python3 -p python3.pkgs.lxml
+
+"""
+Pandoc will strip any markup within code elements so
+let’s escape them so that they can be handled manually.
+"""
+
+import lxml.etree as ET
+import re
+import sys
+
+def replace_element_by_text(el: ET.Element, text: str) -> None:
+    """
+    Author: bernulf
+    Source: https://stackoverflow.com/a/10520552/160386
+    SPDX-License-Identifier: CC-BY-SA-3.0
+    """
+    text = text + (el.tail or "")
+    parent = el.getparent()
+    if parent is not None:
+        previous = el.getprevious()
+        if previous is not None:
+            previous.tail = (previous.tail or "") + text
+        else:
+            parent.text = (parent.text or "") + text
+        parent.remove(el)
+
+DOCBOOK_NS = "http://docbook.org/ns/docbook"
+
+# List of elements that pandoc’s DocBook reader strips markup from.
+# https://github.com/jgm/pandoc/blob/master/src/Text/Pandoc/Readers/DocBook.hs
+code_elements = [
+    # CodeBlock
+    "literallayout",
+    "screen",
+    "programlisting",
+    # Code (inline)
+    "classname",
+    "code",
+    "filename",
+    "envar",
+    "literal",
+    "computeroutput",
+    "prompt",
+    "parameter",
+    "option",
+    "markup",
+    "wordasword",
+    "command",
+    "varname",
+    "function",
+    "type",
+    "symbol",
+    "constant",
+    "userinput",
+    "systemitem",
+]
+
+XMLNS_REGEX = re.compile(r'\s+xmlns(?::[^=]+)?="[^"]*"')
+ROOT_ELEMENT_REGEX = re.compile(r'^\s*<[^>]+>')
+
+def remove_xmlns(match: re.Match) -> str:
+    """
+    Removes xmlns attributes.
+
+    Expects a match containing an opening tag.
+    """
+    return XMLNS_REGEX.sub('', match.group(0))
+
+if __name__ == '__main__':
+    assert len(sys.argv) >= 3, "usage: escape-code-markup.py <input> <output>"
+
+    tree = ET.parse(sys.argv[1])
+    name_predicate = " or ".join([f"local-name()='{el}'" for el in code_elements])
+
+    for markup in tree.xpath(f"//*[({name_predicate}) and namespace-uri()='{DOCBOOK_NS}']/*"):
+        text = ET.tostring(markup, encoding=str)
+
+        # tostring adds xmlns attributes to the element we want to stringify
+        # as if it was supposed to be usable standalone.
+        # We are just converting it to CDATA so we do not care.
+        # Let’s strip the namespace declarations to keep the code clean.
+        #
+        # Note that this removes even namespaces that were potentially
+        # in the original file. Though, that should be very rare –
+        # most of the time, we will stringify empty DocBook elements
+        # like <xref> or <co> or, at worst, <link> with xlink:href attribute.
+        #
+        # Also note that the regex expects the root element to be first
+        # thing in the string. But that should be fine, the tostring method
+        # does not produce XML declaration or doctype by default.
+        text = ROOT_ELEMENT_REGEX.sub(remove_xmlns, text)
+
+        replace_element_by_text(markup, text)
+
+    tree.write(sys.argv[2])
diff --git a/maintainers/scripts/doc/replace-xrefs-by-empty-links.py b/maintainers/scripts/doc/replace-xrefs-by-empty-links.py
new file mode 100755
index 000000000000..2006ef897f7a
--- /dev/null
+++ b/maintainers/scripts/doc/replace-xrefs-by-empty-links.py
@@ -0,0 +1,32 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=channel:nixos-unstable -i python3 -p python3 -p python3.pkgs.lxml
+
+"""
+Pandoc will try to resolve xrefs and replace them with regular links.
+let’s replace them with links with empty labels which MyST
+and our pandoc filters recognize as cross-references.
+"""
+
+import lxml.etree as ET
+import sys
+
+XLINK_NS = "http://www.w3.org/1999/xlink"
+
+ns = {
+    "db": "http://docbook.org/ns/docbook",
+}
+
+
+if __name__ == '__main__':
+    assert len(sys.argv) >= 3, "usage: replace-xrefs-by-empty-links.py <input> <output>"
+
+    tree = ET.parse(sys.argv[1])
+    for xref in tree.findall(".//db:xref", ns):
+        text = ET.tostring(xref, encoding=str)
+        parent = xref.getparent()
+        link = parent.makeelement('link')
+        target_name = xref.get("linkend")
+        link.set(f"{{{XLINK_NS}}}href", f"#{target_name}")
+        parent.replace(xref, link)
+
+    tree.write(sys.argv[2])
diff --git a/maintainers/scripts/doc/unknown-code-language.lua b/maintainers/scripts/doc/unknown-code-language.lua
new file mode 100644
index 000000000000..85d8df4690ba
--- /dev/null
+++ b/maintainers/scripts/doc/unknown-code-language.lua
@@ -0,0 +1,12 @@
+--[[
+Adds “unknown” class to CodeBlock AST nodes without any classes.
+
+This will cause Pandoc to use fenced code block, which we prefer.
+]]
+
+function CodeBlock(elem)
+  if #elem.classes == 0 then
+    elem.classes:insert('unknown')
+    return elem
+  end
+end
diff --git a/maintainers/scripts/luarocks-packages.csv b/maintainers/scripts/luarocks-packages.csv
index 48a9d0e3d3a9..8cce4049e749 100644
--- a/maintainers/scripts/luarocks-packages.csv
+++ b/maintainers/scripts/luarocks-packages.csv
@@ -1,89 +1,86 @@
-name,server,version,luaversion,maintainers
-alt-getopt,,,,arobyn
-ansicolors,,,,
-bit32,,5.3.0-1,lua5_1,lblasc
-argparse,,,,
-basexx,,,,
-binaryheap,,,,vcunat
-busted,,,,
-cassowary,,,,marsam alerque
-compat53,,0.7-1,,vcunat
-cosmo,,,,marsam
-coxpcall,,1.17.0-1,,
-cqueues,,,,vcunat
-cyrussasl,,,,
-digestif,,0.2-1,lua5_3,
-dkjson,,,,
-fifo,,,,
-gitsigns.nvim,,,lua5_1,
-http,,0.3-0,,vcunat
-inspect,,,,
-ldbus,http://luarocks.org/dev,,,
-ldoc,,,,
-lgi,,,,
-linenoise,,,,
-ljsyscall,,,lua5_1,lblasc
-lpeg,,,,vyp
-lpeg_patterns,,,,
-lpeglabel,,,,
-lpty,,,,
-lrexlib-gnu,,,,
-lrexlib-pcre,,,,vyp
-lrexlib-posix,,,,
-ltermbox,,,,
-lua-cjson,,,,
-lua-cmsgpack,,,,
-lua-iconv,,,,
-lua-lsp,http://luarocks.org/dev,,,
-lua-messagepack,,,,
-lua-resty-http,,,,
-lua-resty-jwt,,,,
-lua-resty-openidc,,,,
-lua-resty-openssl,,,,
-lua-resty-session,,,,
-lua-term,,,,
-lua-toml,,,,
-lua-zlib,,,,koral
-lua_cliargs,,,,
-luabitop,,,,
-luacheck,,,,
-luacov,,,,
-luadbi,,,,
-luadbi-mysql,,,,
-luadbi-postgresql,,,,
-luadbi-sqlite3,,,,
-luadoc,,,,
-luaepnf,,,,
-luaevent,,,,
-luaexpat,,1.3.0-1,,arobyn flosse
-luaffi,http://luarocks.org/dev,,,
-luafilesystem,,1.7.0-2,,flosse
-lualogging,,,,
-luaossl,,,lua5_1,
-luaposix,,34.1.1-1,,vyp lblasc
-luarepl,,,,
-luasec,,,,flosse
-luasocket,,,,
-luasql-sqlite3,,,,vyp
-luassert,,,,
-luasystem,,,,
-luautf8,,,,pstn
-luazip,,,,
-lua-yajl,,,,pstn
-luuid,,,,
-luv,,1.30.0-0,,
-lyaml,,,,lblasc
-markdown,,,,
-mediator_lua,,,,
-mpack,,,,
-moonscript,,,,arobyn
-nvim-client,,,,
-penlight,,,,
-plenary.nvim,,,lua5_1,
-rapidjson,,,,
-readline,,,,
-say,,,,
-std._debug,,,,
-std.normalize,,,,
-stdlib,,,,vyp
-vstruct,,,,
+name,src,ref,server,version,luaversion,maintainers
+alt-getopt,,,,,,arobyn
+bit32,,,,5.3.0-1,lua5_1,lblasc
+argparse,https://github.com/luarocks/argparse.git,,,,,
+basexx,https://github.com/teto/basexx.git,,,,,
+binaryheap,https://github.com/Tieske/binaryheap.lua,,,,,vcunat
+busted,,,,,,
+cassowary,,,,,,marsam alerque
+compat53,,,,0.7-1,,vcunat
+cosmo,,,,,,marsam
+coxpcall,,,,1.17.0-1,,
+cqueues,,,,,,vcunat
+cyrussasl,https://github.com/JorjBauer/lua-cyrussasl.git,,,,,
+digestif,https://github.com/astoff/digestif.git,,,0.2-1,lua5_3,
+dkjson,,,,,,
+fifo,,,,,,
+gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,lua5_1,
+http,,,,0.3-0,,vcunat
+inspect,,,,,,
+ldbus,,,http://luarocks.org/dev,,,
+ldoc,https://github.com/stevedonovan/LDoc.git,,,,,
+lgi,,,,,,
+linenoise,https://github.com/hoelzro/lua-linenoise.git,,,,,
+ljsyscall,,,,,lua5_1,lblasc
+lpeg,,,,,,vyp
+lpeg_patterns,,,,,,
+lpeglabel,,,,,,
+lpty,,,,,,
+lrexlib-gnu,,,,,,
+lrexlib-pcre,,,,,,vyp
+lrexlib-posix,,,,,,
+lua-cjson,,,,,,
+lua-cmsgpack,,,,,,
+lua-iconv,,,,,,
+lua-lsp,,,,,,
+lua-messagepack,,,,,,
+lua-resty-http,,,,,,
+lua-resty-jwt,,,,,,
+lua-resty-openidc,,,,,,
+lua-resty-openssl,,,,,,
+lua-resty-session,,,,,,
+lua-term,,,,,,
+lua-toml,,,,,,
+lua-zlib,,,,,,koral
+lua_cliargs,https://github.com/amireh/lua_cliargs.git,,,,,
+luabitop,https://github.com/teto/luabitop.git,,,,,
+luacheck,,,,,,
+luacov,,,,,,
+luadbi,,,,,,
+luadbi-mysql,,,,,,
+luadbi-postgresql,,,,,,
+luadbi-sqlite3,,,,,,
+luaepnf,,,,,,
+luaevent,,,,,,
+luaexpat,,,,1.3.0-1,,arobyn flosse
+luaffi,,,http://luarocks.org/dev,,,
+luafilesystem,,,,1.7.0-2,,flosse
+lualogging,,,,,,
+luaossl,,,,,lua5_1,
+luaposix,,,,34.1.1-1,,vyp lblasc
+luarepl,,,,,,
+luasec,,,,,,flosse
+luasocket,,,,,,
+luasql-sqlite3,,,,,,vyp
+luassert,,,,,,
+luasystem,,,,,,
+luautf8,,,,,,pstn
+luazip,,,,,,
+lua-yajl,,,,,,pstn
+luuid,,,,,,
+luv,,,,1.30.0-0,,
+lyaml,,,,,,lblasc
+markdown,,,,,,
+mediator_lua,,,,,,
+mpack,,,,,,
+moonscript,,,,,,arobyn
+nvim-client,https://github.com/neovim/lua-client.git,,,,,
+penlight,https://github.com/lunarmodules/Penlight.git,,,,,alerque
+plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,lua5_1,
+rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
+readline,,,,,,
+say,https://github.com/Olivine-Labs/say.git,,,,,
+std._debug,https://github.com/lua-stdlib/_debug.git,,,,,
+std.normalize,git://github.com/lua-stdlib/normalize.git,,,,,
+stdlib,,,,41.2.2,,vyp
+vstruct,https://github.com/ToxicFrog/vstruct.git,,,,,
diff --git a/maintainers/scripts/pluginupdate.py b/maintainers/scripts/pluginupdate.py
index c468b33bb478..2a9a2d4c0a23 100644
--- a/maintainers/scripts/pluginupdate.py
+++ b/maintainers/scripts/pluginupdate.py
@@ -547,7 +547,6 @@ def update_plugins(editor: Editor, args):
 
     log.setLevel(LOG_LEVELS[args.debug])
     log.info("Start updating plugins")
-    nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
     update = editor.get_update(args.input_file, args.outfile, args.proc)
 
     redirects = update()
@@ -556,6 +555,7 @@ def update_plugins(editor: Editor, args):
     autocommit = not args.no_commit
 
     if autocommit:
+        nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
         commit(nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile])
 
     if redirects:
diff --git a/maintainers/scripts/update-luarocks-packages b/maintainers/scripts/update-luarocks-packages
index 6de97799846d..a465031b9112 100755
--- a/maintainers/scripts/update-luarocks-packages
+++ b/maintainers/scripts/update-luarocks-packages
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -p nix-prefetch-git luarocks-nix python3 python3Packages.GitPython nix -i python3
+#!nix-shell update-luarocks-shell.nix -i python3
 
 # format:
 # $ nix run nixpkgs.python3Packages.black -c black update.py
@@ -19,7 +19,7 @@ import logging
 import textwrap
 from multiprocessing.dummy import Pool
 
-from typing import List, Tuple
+from typing import List, Tuple, Optional
 from pathlib import Path
 
 log = logging.getLogger()
@@ -50,10 +50,21 @@ FOOTER="""
 @dataclass
 class LuaPlugin:
     name: str
-    version: str
-    server: str
-    luaversion: str
-    maintainers: str
+    '''Name of the plugin, as seen on luarocks.org'''
+    src: str
+    '''address to the git repository'''
+    ref: Optional[str]
+    '''git reference (branch name/tag)'''
+    version: Optional[str]
+    '''Set it to pin a package '''
+    server: Optional[str]
+    '''luarocks.org registers packages under different manifests.
+    Its value can be 'http://luarocks.org/dev'
+    '''
+    luaversion: Optional[str]
+    '''Attribue of the lua interpreter if a package is available only for a specific lua version'''
+    maintainers: Optional[str]
+    ''' Optional string listing maintainers separated by spaces'''
 
     @property
     def normalized_name(self) -> str:
@@ -149,16 +160,33 @@ def generate_pkg_nix(plug: LuaPlugin):
     Our cache key associates "p.name-p.version" to its rockspec
     '''
     log.debug("Generating nix expression for %s", plug.name)
-    cmd = [ "luarocks", "nix", plug.name]
+    cmd = [ "luarocks", "nix"]
 
-    if plug.server:
-        cmd.append(f"--only-server={plug.server}")
 
     if plug.maintainers:
         cmd.append(f"--maintainers={plug.maintainers}")
 
-    if plug.version:
-        cmd.append(plug.version)
+    # updates plugin directly from its repository
+    print("server: [%s]" % plug.server)
+    # if plug.server == "src":
+    if plug.src != "":
+        if plug.src is None:
+            msg = "src must be set when 'version' is set to \"src\" for package %s" % plug.name
+            log.error(msg)
+            raise RuntimeError(msg)
+        log.debug("Updating from source %s", plug.src)
+        cmd.append(plug.src)
+    # update the plugin from luarocks
+    else:
+        cmd.append(plug.name)
+        if plug.version and plug.version != "src":
+
+            cmd.append(plug.version)
+
+    #
+    if plug.server != "src" and plug.server:
+        cmd.append(f"--only-server={plug.server}")
+
 
     if plug.luaversion:
         with CleanEnvironment():
@@ -169,7 +197,7 @@ def generate_pkg_nix(plug: LuaPlugin):
             lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
             cmd.append(f"--lua-dir={lua_drv_path}/bin")
 
-    log.debug("running %s", cmd)
+    log.debug("running %s", ' '.join(cmd))
     output = subprocess.check_output(cmd, text=True)
     return (plug, output)
 
@@ -191,3 +219,4 @@ if __name__ == "__main__":
 
     main()
 
+#  vim: set ft=python noet fdm=manual fenc=utf-8 ff=unix sts=0 sw=4 ts=4 :
diff --git a/maintainers/scripts/update-luarocks-shell.nix b/maintainers/scripts/update-luarocks-shell.nix
index d3f342b07a96..a58674fca8d3 100644
--- a/maintainers/scripts/update-luarocks-shell.nix
+++ b/maintainers/scripts/update-luarocks-shell.nix
@@ -1,12 +1,13 @@
 { nixpkgs ? import ../.. { }
 }:
 with nixpkgs;
+let
+  pyEnv = python3.withPackages(ps: [ ps.GitPython ]);
+in
 mkShell {
   packages = [
-    bash
+    pyEnv
     luarocks-nix
     nix-prefetch-scripts
-    parallel
   ];
-  LUAROCKS_NIXPKGS_PATH = toString nixpkgs.path;
 }
diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix
index 7435cf64425c..d881d68301ba 100755
--- a/maintainers/scripts/update.nix
+++ b/maintainers/scripts/update.nix
@@ -103,7 +103,7 @@ let
       pathContent = lib.attrByPath prefix null pkgs;
     in
       if pathContent == null then
-        builtins.throw "Attribute path `${path}` does not exists."
+        builtins.throw "Attribute path `${path}` does not exist."
       else
         packagesWithPath prefix (path: pkg: builtins.hasAttr "updateScript" pkg)
                        pathContent;
@@ -115,7 +115,7 @@ let
         package = lib.attrByPath (lib.splitString "." path) null pkgs;
     in
       if package == null then
-        builtins.throw "Package with an attribute name `${path}` does not exists."
+        builtins.throw "Package with an attribute name `${path}` does not exist."
       else if ! builtins.hasAttr "updateScript" package then
         builtins.throw "Package with an attribute name `${path}` does not have a `passthru.updateScript` attribute defined."
       else
diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix
index a86af02d2357..df0c9ce7cf61 100644
--- a/maintainers/team-list.nix
+++ b/maintainers/team-list.nix
@@ -178,6 +178,15 @@ with lib.maintainers; {
     scope = "Maintain the ecosystem around Matrix, a decentralized messenger.";
   };
 
+  openstack = {
+    members = [
+      angustrau
+      superherointj
+      SuperSandro2000
+    ];
+    scope = "Maintain the ecosystem around OpenStack";
+  };
+
   pantheon = {
     members = [
       davidak