summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/vim.section.md2
-rw-r--r--maintainers/scripts/luarocks-packages.csv176
-rw-r--r--maintainers/scripts/pluginupdate.py78
-rwxr-xr-xmaintainers/scripts/update-luarocks-packages283
-rw-r--r--pkgs/development/lua-modules/generated-packages.nix663
-rw-r--r--pkgs/development/lua-modules/overrides.nix4
6 files changed, 677 insertions, 529 deletions
diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md
index 26a01a89aa5..cb5311fc95f 100644
--- a/doc/languages-frameworks/vim.section.md
+++ b/doc/languages-frameworks/vim.section.md
@@ -309,7 +309,7 @@ Sample output2:
 
 ## Adding new plugins to nixpkgs {#adding-new-plugins-to-nixpkgs}
 
-Nix expressions for Vim plugins are stored in [pkgs/misc/vim-plugins](/pkgs/misc/vim-plugins). For the vast majority of plugins, Nix expressions are automatically generated by running [`./update.py`](/pkgs/misc/vim-plugins/update.py). This creates a [generated.nix](/pkgs/misc/vim-plugins/generated.nix) file based on the plugins listed in [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names). Plugins are listed in alphabetical order in `vim-plugin-names` using the format `[github username]/[repository]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
+Nix expressions for Vim plugins are stored in [pkgs/misc/vim-plugins](/pkgs/misc/vim-plugins). For the vast majority of plugins, Nix expressions are automatically generated by running [`./update.py`](/pkgs/misc/vim-plugins/update.py). This creates a [generated.nix](/pkgs/misc/vim-plugins/generated.nix) file based on the plugins listed in [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names). Plugins are listed in alphabetical order in `vim-plugin-names` using the format `[github username]/[repository]@[gitref]`. For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
 
 Some plugins require overrides in order to function properly. Overrides are placed in [overrides.nix](/pkgs/misc/vim-plugins/overrides.nix). Overrides are most often required when a plugin requires some dependencies, or extra steps are required during the build process. For example `deoplete-fish` requires both `deoplete-nvim` and `vim-fish`, and so the following override was added:
 
diff --git a/maintainers/scripts/luarocks-packages.csv b/maintainers/scripts/luarocks-packages.csv
index c5cee697c8f..6ad159a7fff 100644
--- a/maintainers/scripts/luarocks-packages.csv
+++ b/maintainers/scripts/luarocks-packages.csv
@@ -1,89 +1,87 @@
-# nix name,luarocks name,server,version,luaversion,maintainers
-alt-getopt,,,,,arobyn
-ansicolors,,,,,
-argparse,,,,,
-basexx,,,,,
-binaryheap,,,,,vcunat
-bit32,,,,lua5_1,lblasc
-busted,,,,,
-cassowary,,,,,marsam alerque
-cjson,lua-cjson,,,,
-compat53,,,,,vcunat
-cosmo,,,,,marsam
-coxpcall,,,1.17.0-1,,
-cqueues,,,,,vcunat
-cyrussasl,,,,,
-digestif,,,,lua5_3,
-dkjson,,,,,
-fifo,,,,,
-gitsigns.nvim,,,,lua5_1,
-http,,,,,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-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,,,,,vyp lblasc
-luarepl,,,,,
-luasec,,,,,flosse
-luasocket,,,,,
-luasql-sqlite3,,,,,vyp
-luassert,,,,,
-luasystem,,,,,
-luautf8,,,,,pstn
-luazip,,,,,
-lua-yajl,,,,,pstn
-luuid,,,,,
-luv,,,,,
-lyaml,,,,,lblasc
-markdown,,,,,
-mediator_lua,,,,,
-mpack,,,,,
-moonscript,,,,,arobyn
-nvim-client,,,,,
-penlight,,,,,
-plenary.nvim,,,,lua5_1,
-rapidjson,,,,,
-readline,,,,,
-say,,,,,
-std-_debug,std._debug,,,,
-std_normalize,std.normalize,,,,
-stdlib,,,,,vyp
-vstruct,,,,,
+name,server,version,luaversion,maintainers
+bit32,,,lua5_1,lblasc
+argparse,,,,
+basexx,,,,
+binaryheap,,,,vcunat
+busted,,,,
+cassowary,,,,marsam alerque
+compat53,,,,vcunat
+cosmo,,,,marsam
+coxpcall,,1.17.0-1,,
+cqueues,,,,vcunat
+cyrussasl,,,,
+digestif,,,lua5_3,
+dkjson,,,,
+fifo,,,,
+gitsigns.nvim,,,lua5_1,
+http,,,,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,,,,vyp lblasc
+luarepl,,,,
+luasec,,,,flosse
+luasocket,,,,
+luasql-sqlite3,,,,vyp
+luassert,,,,
+luasystem,,,,
+luautf8,,,,pstn
+luazip,,,,
+lua-yajl,,,,pstn
+luuid,,,,
+luv,,,,
+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,,,,
diff --git a/maintainers/scripts/pluginupdate.py b/maintainers/scripts/pluginupdate.py
index 91c5214d153..45511607b03 100644
--- a/maintainers/scripts/pluginupdate.py
+++ b/maintainers/scripts/pluginupdate.py
@@ -28,6 +28,7 @@ from pathlib import Path
 from typing import Dict, List, Optional, Tuple, Union, Any, Callable
 from urllib.parse import urljoin, urlparse
 from tempfile import NamedTemporaryFile
+from dataclasses import dataclass
 
 import git
 
@@ -82,6 +83,13 @@ def make_request(url: str) -> urllib.request.Request:
         headers["Authorization"] = f"token {token}"
     return urllib.request.Request(url, headers=headers)
 
+@dataclass
+class PluginDesc:
+    owner: str
+    repo: str
+    branch: str
+    alias: str
+
 
 class Repo:
     def __init__(
@@ -195,21 +203,46 @@ class Editor:
         name: str,
         root: Path,
         get_plugins: str,
+        # TODO modifier pour accepter un plugin
         generate_nix: Callable[[List[Tuple[str, str, Plugin]], str], None],
         default_in: Optional[Path] = None,
         default_out: Optional[Path] = None,
         deprecated: Optional[Path] = None,
         cache_file: Optional[str] = None,
     ):
+        log.debug("get_plugins:", get_plugins)
         self.name = name
         self.root = root
         self.get_plugins = get_plugins
-        self.generate_nix = generate_nix
+        self._generate_nix = generate_nix
         self.default_in = default_in or root.joinpath(f"{name}-plugin-names")
         self.default_out = default_out or root.joinpath("generated.nix")
         self.deprecated = deprecated or root.joinpath("deprecated.json")
         self.cache_file = cache_file or f"{name}-plugin-cache.json"
 
+    def get_current_plugins(self):
+        """To fill the cache"""
+        return get_current_plugins(self)
+
+    def load_plugin_spec(self, plugin_file) -> List[PluginDesc]:
+        return load_plugin_spec(plugin_file)
+
+    def generate_nix(self, plugins, outfile):
+        '''Returns nothing for now, writes directly to outfile'''
+        self._generate_nix(plugins, outfile)
+
+    def get_update(self, input_file: str, outfile: str, proc: int):
+        return get_update(input_file, outfile, proc, editor=self)
+
+    @property
+    def attr_path(self):
+        return self.name + "Plugins"
+
+    def rewrite_input(self, *args, **kwargs):
+        return rewrite_input(*args, **kwargs)
+
+
+
 
 class CleanEnvironment(object):
     def __enter__(self) -> None:
@@ -228,7 +261,9 @@ class CleanEnvironment(object):
 
 def get_current_plugins(editor: Editor) -> List[Plugin]:
     with CleanEnvironment():
-        out = subprocess.check_output(["nix", "eval", "--json", editor.get_plugins])
+        cmd = ["nix", "eval", "--json", editor.get_plugins]
+        log.debug("Running command %s", cmd)
+        out = subprocess.check_output(cmd)
     data = json.loads(out)
     plugins = []
     for name, attr in data.items():
@@ -244,12 +279,13 @@ def prefetch_plugin(
     alias: Optional[str],
     cache: "Optional[Cache]" = None,
 ) -> Tuple[Plugin, Dict[str, str]]:
-    log.info("Prefetching plugin %s", repo_name)
+    log.info(f"Fetching last commit for plugin {user}/{repo_name}@{branch}")
     repo = Repo(user, repo_name, branch, alias)
     commit, date = repo.latest_commit()
     has_submodules = repo.has_submodules()
     cached_plugin = cache[commit] if cache else None
     if cached_plugin is not None:
+        log.debug("Cache hit !")
         cached_plugin.name = alias or repo_name
         cached_plugin.date = date
         return cached_plugin, repo.redirect
@@ -306,8 +342,7 @@ def check_results(
 
         sys.exit(1)
 
-
-def parse_plugin_line(line: str) -> Tuple[str, str, str, Optional[str]]:
+def parse_plugin_line(line: str) -> PluginDesc:
     branch = "master"
     alias = None
     name, repo = line.split("/")
@@ -317,15 +352,15 @@ def parse_plugin_line(line: str) -> Tuple[str, str, str, Optional[str]]:
     if "@" in repo:
         repo, branch = repo.split("@")
 
-    return (name.strip(), repo.strip(), branch.strip(), alias)
+    return PluginDesc(name.strip(), repo.strip(), branch.strip(), alias)
 
 
-def load_plugin_spec(plugin_file: str) -> List[Tuple[str, str, str, Optional[str]]]:
+def load_plugin_spec(plugin_file: str) -> List[PluginDesc]:
     plugins = []
     with open(plugin_file) as f:
         for line in f:
             plugin = parse_plugin_line(line)
-            if not plugin[0]:
+            if not plugin.owner:
                 msg = f"Invalid repository {line}, must be in the format owner/repo[ as alias]"
                 print(msg, file=sys.stderr)
                 sys.exit(1)
@@ -387,12 +422,11 @@ class Cache:
 
 
 def prefetch(
-    args: Tuple[str, str, str, Optional[str]], cache: Cache
+    args: PluginDesc, cache: Cache
 ) -> Tuple[str, str, Union[Exception, Plugin], dict]:
-    assert len(args) == 4
-    owner, repo, branch, alias = args
+    owner, repo = args.owner, args.repo
     try:
-        plugin, redirect = prefetch_plugin(owner, repo, branch, alias, cache)
+        plugin, redirect = prefetch_plugin(owner, repo, args.branch, args.alias, cache)
         cache[plugin.commit] = plugin
         return (owner, repo, plugin, redirect)
     except Exception as e:
@@ -433,7 +467,7 @@ def rewrite_input(
     with open(input_file, "w") as f:
         f.writelines(lines)
 
-
+# TODO move to Editor ?
 def parse_args(editor: Editor):
     parser = argparse.ArgumentParser(
         description=(
@@ -446,7 +480,7 @@ def parse_args(editor: Editor):
         dest="add_plugins",
         default=[],
         action="append",
-        help=f"Plugin to add to {editor.name}Plugins from Github in the form owner/repo",
+        help=f"Plugin to add to {editor.attr_path} from Github in the form owner/repo",
     )
     parser.add_argument(
         "--input-names",
@@ -493,11 +527,11 @@ def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
 
 
 def get_update(input_file: str, outfile: str, proc: int, editor: Editor):
-    cache: Cache = Cache(get_current_plugins(editor), editor.cache_file)
+    cache: Cache = Cache(editor.get_current_plugins(), editor.cache_file)
     _prefetch = functools.partial(prefetch, cache=cache)
 
     def update() -> dict:
-        plugin_names = load_plugin_spec(input_file)
+        plugin_names = editor.load_plugin_spec(input_file)
 
         try:
             pool = Pool(processes=proc)
@@ -522,33 +556,33 @@ def update_plugins(editor: Editor):
 
     log.info("Start updating plugins")
     nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
-    update = get_update(args.input_file, args.outfile, args.proc, editor)
+    update = editor.get_update(args.input_file, args.outfile, args.proc)
 
     redirects = update()
-    rewrite_input(args.input_file, editor.deprecated, redirects)
+    editor.rewrite_input(args.input_file, editor.deprecated, redirects)
 
     autocommit = not args.no_commit
 
     if autocommit:
-        commit(nixpkgs_repo, f"{editor.name}Plugins: update", [args.outfile])
+        commit(nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile])
 
     if redirects:
         update()
         if autocommit:
             commit(
                 nixpkgs_repo,
-                f"{editor.name}Plugins: resolve github repository redirects",
+                f"{editor.attr_path}: resolve github repository redirects",
                 [args.outfile, args.input_file, editor.deprecated],
             )
 
     for plugin_line in args.add_plugins:
-        rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
+        editor.rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",))
         update()
         plugin = fetch_plugin_from_pluginline(plugin_line)
         if autocommit:
             commit(
                 nixpkgs_repo,
-                "{editor}Plugins.{name}: init at {version}".format(
+                "{editor.attr_path}.{name}: init at {version}".format(
                     editor=editor.name, name=plugin.normalized_name, version=plugin.version
                 ),
                 [args.outfile, args.input_file],
diff --git a/maintainers/scripts/update-luarocks-packages b/maintainers/scripts/update-luarocks-packages
index c7180083da2..2524b4c9b89 100755
--- a/maintainers/scripts/update-luarocks-packages
+++ b/maintainers/scripts/update-luarocks-packages
@@ -1,140 +1,179 @@
 #!/usr/bin/env nix-shell
-#!nix-shell update-luarocks-shell.nix -i bash
+#!nix-shell -p nix-prefetch-git luarocks-nix python3 python3Packages.GitPython nix -i python3
+
+# format:
+# $ nix run nixpkgs.python3Packages.black -c black update.py
+# type-check:
+# $ nix run nixpkgs.python3Packages.mypy -c mypy update.py
+# linted:
+# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265,E402 update.py
+
+import inspect
+import os
+import tempfile
+import shutil
+from dataclasses import dataclass
+import subprocess
+import csv
+import logging
+
+from typing import List
+from pathlib import Path
+
+LOG_LEVELS = {
+    logging.getLevelName(level): level for level in [
+        logging.DEBUG, logging.INFO, logging.WARN, logging.ERROR ]
+}
 
-# You'll likely want to use
-# ``
-# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
-# ``
-# to update all libraries in that folder.
-# to debug, redirect stderr to stdout with 2>&1
+log = logging.getLogger()
+log.addHandler(logging.StreamHandler())
 
-# stop the script upon C-C
-set -eu -o pipefail
+ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent
+from pluginupdate import Editor, parse_args, update_plugins, PluginDesc, CleanEnvironment
 
-CSV_FILE="maintainers/scripts/luarocks-packages.csv"
+PKG_LIST="maintainers/scripts/luarocks-packages.csv"
 TMP_FILE="$(mktemp)"
-# Set in the update-luarocks-shell.nix
-NIXPKGS_PATH="$LUAROCKS_NIXPKGS_PATH"
-export LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
-
-# 10 is a pretty arbitrary number of simultaneous jobs, but it is generally
-# impolite to hit a webserver with *too* many simultaneous connections :)
-PARALLEL_JOBS=1
+GENERATED_NIXFILE="pkgs/development/lua-modules/generated-packages.nix"
+LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua"
 
-exit_trap() {
-    local lc="$BASH_COMMAND" rc=$?
-    test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
-}
-
-print_help() {
-    echo "Usage: $0 <GENERATED_FILE>"
-    echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
-    echo ""
-    echo " -c <CSV_FILE> to set the list of luarocks package to generate"
-    exit 1
-}
-
-if [ $# -lt 1 ]; then
-    print_help
-    exit 1
-fi
-
-trap exit_trap EXIT
-
-while getopts ":hc:" opt; do
-    case $opt in
-    h)
-        print_help
-        ;;
-    c)
-        echo "Loading package list from $OPTARG !" >&2
-        CSV_FILE="$OPTARG"
-        ;;
-    \?)
-        echo "Invalid option: -$OPTARG" >&2
-        ;;
-    esac
-    shift $((OPTIND - 1))
-done
-
-GENERATED_NIXFILE="$1"
-
-HEADER="
-/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
+HEADER = """
+/* {GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
 Regenerate it with:
-nixpkgs$ ${0} ${GENERATED_NIXFILE}
+nixpkgs$ ./maintainers/scripts/update-luarocks-packages
 
-These packages are manually refined in lua-overrides.nix
+You can customize the generated packages in pkgs/development/lua-modules/overrides.nix
 */
-{ self, stdenv, lib, fetchurl, fetchgit, pkgs, ... } @ args:
+""".format(GENERATED_NIXFILE=GENERATED_NIXFILE)
+
+FOOTER="""
+}
+/* GENERATED - do not edit this file */
+"""
+
+@dataclass
+class LuaPlugin:
+    name: str
+    version: str
+    server: str
+    luaversion: str
+    maintainers: str
+
+    @property
+    def normalized_name(self) -> str:
+        return self.name.replace(".", "-")
+
+# rename Editor to LangUpdate/ EcosystemUpdater
+class LuaEditor(Editor):
+    def get_current_plugins(self):
+        return []
+
+    def load_plugin_spec(self, input_file) -> List[PluginDesc]:
+        luaPackages = []
+        csvfilename=input_file
+        log.info("Loading package descriptions from %s", csvfilename)
+
+
+        with open(csvfilename, newline='') as csvfile:
+            reader = csv.DictReader(csvfile,)
+            for row in reader:
+                # name,server,version,luaversion,maintainers
+                plugin = LuaPlugin(**row)
+                luaPackages.append(plugin)
+        return luaPackages
+
+    @property
+    def attr_path(self):
+        return "luaPackages"
+
+    def get_update(self, input_file: str, outfile: str, _: int):
+
+        def update() -> dict:
+            plugin_specs = self.load_plugin_spec(input_file)
+
+            self.generate_nix(plugin_specs, outfile)
+
+            redirects = []
+            return redirects
+
+        return update
+
+    def rewrite_input(self, *args, **kwargs):
+        # not implemented yet
+        pass
+
+def generate_nix(
+    plugins: List[LuaPlugin],
+    outfilename: str
+    ):
+    sorted_plugins = sorted(plugins, key=lambda v: v.name.lower())
+
+    # plug = {}
+    # selon le manifest luarocks.org/manifest
+    def _generate_pkg_nix(plug):
+        cmd = [ "luarocks", "nix", plug.name]
+        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)
+
+        if plug.luaversion:
+            with CleanEnvironment():
+                local_pkgs = str(ROOT.resolve())
+                cmd2 = ["nix-build", "--no-out-link", local_pkgs, "-A", f"{plug.luaversion}"]
+
+                log.debug("running %s", cmd2)
+                lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
+                cmd.append(f"--lua-dir={lua_drv_path}/bin")
+
+        log.debug("running %s", cmd)
+        output = subprocess.check_output(cmd, text=True)
+        return output
+
+    with tempfile.NamedTemporaryFile("w+") as f:
+        f.write(HEADER)
+        f.write("""
+{ self, stdenv, lib, fetchurl, fetchgit, ... } @ args:
 self: super:
 with self;
 {
-"
+""")
 
-FOOTER="
-}
-/* GENERATED */
-"
-
-function convert_pkg() {
-    nix_pkg_name="$1"
-    lua_pkg_name="$2"
-    server="$3"
-    pkg_version="$4"
-    lua_version="$5"
-    maintainers="$6"
-
-    if [ "${nix_pkg_name:0:1}" == "#" ]; then
-        echo "Skipping comment ${*}" >&2
-        return
-    fi
-
-    # Normalize package name
-    nix_pkg_name_normalized=$(sed 's/\./-/' <(echo "$nix_pkg_name"))
-
-    if [ -z "$lua_pkg_name" ]; then
-        echo "Using nix_name as lua_pkg_name for '$nix_pkg_name'" >&2
-        lua_pkg_name="$nix_pkg_name"
-    fi
-
-    echo "Building expression for $lua_pkg_name (version $pkg_version) from server [$server]" >&2
-    luarocks_args=(nix)
-    if [[ -n $server ]]; then
-        luarocks_args+=("--only-server=$server")
-    fi
-    if [[ -n $maintainers ]]; then
-        luarocks_args+=("--maintainers=$maintainers")
-    fi
-    if [[ -n $lua_version ]]; then
-        lua_drv_path=$(nix-build --no-out-link "$NIXPKGS_PATH" -A "$lua_version")
-        luarocks_args+=("--lua-dir=$lua_drv_path/bin")
-    fi
-    luarocks_args+=("$lua_pkg_name")
-    if [[ -n $pkg_version ]]; then
-        luarocks_args+=("$pkg_version")
-    fi
-    echo "Running 'luarocks ${luarocks_args[*]}'" >&2
-    if drv="$nix_pkg_name_normalized = $(luarocks "${luarocks_args[@]}")"; then
-        echo "$drv"
-    else
-        echo "Failed to convert $nix_pkg_name" >&2
-        return 1
-    fi
-}
+        for plugin in sorted_plugins:
+
+            nix_expr = _generate_pkg_nix(plugin)
+            f.write(f"{plugin.normalized_name} = {nix_expr}"
+            )
+        f.write(FOOTER)
+        f.flush()
+
+        # if everything went fine, move the generated file to its destination
+        # using copy since move doesn't work across disks
+        shutil.copy(f.name, outfilename)
+
+    print(f"updated {outfilename}")
+
+def load_plugin_spec():
+    pass
+
+
+def main():
+
+    editor = LuaEditor("lua", ROOT, '', generate_nix,
+        default_in = ROOT.joinpath(PKG_LIST),
+        default_out = ROOT.joinpath(GENERATED_NIXFILE)
+        )
+
+    args = parse_args(editor)
+    log.setLevel(LOG_LEVELS[args.debug])
 
-# params needed when called via callPackage
-echo "$HEADER" | tee "$TMP_FILE"
+    update_plugins(editor)
 
-# Ensure parallel can run our bash function
-export -f convert_pkg
-export SHELL=bash
-# Read each line in the csv file and run convert_pkg for each, in parallel
-parallel --group --keep-order --halt now,fail=1 --jobs "$PARALLEL_JOBS" --colsep ',' convert_pkg {} <"$CSV_FILE" | tee -a "$TMP_FILE"
 
-# close the set
-echo "$FOOTER" | tee -a "$TMP_FILE"
+if __name__ == "__main__":
 
-cp "$TMP_FILE" "$GENERATED_NIXFILE"
+    main()
 
-# vim: set ts=4 sw=4 ft=sh:
diff --git a/pkgs/development/lua-modules/generated-packages.nix b/pkgs/development/lua-modules/generated-packages.nix
index 5cd7a7c8fe7..2d5b633bb1a 100644
--- a/pkgs/development/lua-modules/generated-packages.nix
+++ b/pkgs/development/lua-modules/generated-packages.nix
@@ -1,59 +1,24 @@
 
 /* pkgs/development/lua-modules/generated-packages.nix is an auto-generated file -- DO NOT EDIT!
 Regenerate it with:
-nixpkgs$ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
+nixpkgs$ ./maintainers/scripts/update-luarocks-packages
 
-These packages are manually refined in lua-overrides.nix
+You can customize the generated packages in pkgs/development/lua-modules/overrides.nix
 */
-{ self, lib, fetchurl, fetchgit, pkgs, ... } @ args:
+
+{ self, stdenv, lib, fetchurl, fetchgit, ... } @ args:
 self: super:
 with self;
 {
-
-alt-getopt = buildLuarocksPackage {
-  pname = "alt-getopt";
-  version = "0.8.0-1";
-
-  src = fetchurl {
-    url    = "mirror://luarocks/alt-getopt-0.8.0-1.src.rock";
-    sha256 = "1mi97dqb97sf47vb6wrk12yf1yxcaz0asr9gbgwyngr5n1adh5i3";
-  };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
-  propagatedBuildInputs = [ lua ];
-
-  meta = with lib; {
-    homepage = "https://github.com/cheusov/lua-alt-getopt";
-    description = "Process application arguments the same way as getopt_long";
-    maintainers = with maintainers; [ arobyn ];
-    license.fullName = "MIT/X11";
-  };
-};
-ansicolors = buildLuarocksPackage {
-  pname = "ansicolors";
-  version = "1.0.2-3";
-
-  src = fetchurl {
-    url    = "mirror://luarocks/ansicolors-1.0.2-3.src.rock";
-    sha256 = "1mhmr090y5394x1j8p44ws17sdwixn5a0r4i052bkfgk3982cqfz";
-  };
-  disabled = (luaOlder "5.1");
-  propagatedBuildInputs = [ lua ];
-
-  meta = with lib; {
-    homepage = "https://github.com/kikito/ansicolors.lua";
-    description = "Library for color Manipulation.";
-    license.fullName = "MIT <http://opensource.org/licenses/MIT>";
-  };
-};
 argparse = buildLuarocksPackage {
   pname = "argparse";
-  version = "0.7.0-1";
+  version = "0.7.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/argparse-0.7.0-1.src.rock";
-    sha256 = "1jvar543d21x7wq8rxxaaf7h1ricd7zvxc16xwjblwa9ffgcmcs7";
+    url    = "https://luarocks.org/argparse-0.7.1-1.src.rock";
+    sha256 = "0ybqh5jcb9v8f5xpq05av4hzrbk3vfvqrjj9cgmhm8l66mjd0c7a";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
@@ -62,12 +27,13 @@ argparse = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 basexx = buildLuarocksPackage {
   pname = "basexx";
   version = "0.4.1-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/basexx-0.4.1-1.rockspec";
+    url    = "https://luarocks.org/basexx-0.4.1-1.rockspec";
     sha256 = "0kmydxm2wywl18cgj303apsx7hnfd68a9hx9yhq10fj7yfcxzv5f";
   }).outPath;
 
@@ -85,12 +51,13 @@ basexx = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 binaryheap = buildLuarocksPackage {
   pname = "binaryheap";
   version = "0.4-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/binaryheap-0.4-1.src.rock";
+    url    = "https://luarocks.org/binaryheap-0.4-1.src.rock";
     sha256 = "11rd8r3bpinfla2965jgjdv1hilqdc1q6g1qla5978d7vzg19kpc";
   };
   disabled = (luaOlder "5.1");
@@ -103,30 +70,32 @@ binaryheap = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 bit32 = buildLuarocksPackage {
   pname = "bit32";
-  version = "5.3.0-1";
+  version = "5.3.5.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/bit32-5.3.0-1.src.rock";
-    sha256 = "19i7kc2pfg9hc6qjq4kka43q6qk71bkl2rzvrjaks6283q6wfyzy";
+    url    = "https://luarocks.org/bit32-5.3.5.1-1.src.rock";
+    sha256 = "0b517hkf3r7pdm78sqx9df9440k7wbml4mpckh7jfxxqy8kk89qf";
   };
-  disabled = (luaOlder "5.1");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
     homepage = "http://www.lua.org/manual/5.2/manual.html#6.7";
     description = "Lua 5.2 bit manipulation library";
     maintainers = with maintainers; [ lblasc ];
-    license.fullName = "MIT/X11";
+    license.fullName = "MIT";
   };
 };
+
 busted = buildLuarocksPackage {
   pname = "busted";
   version = "2.0.0-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/busted-2.0.0-1.rockspec";
+    url    = "https://luarocks.org/busted-2.0.0-1.rockspec";
     sha256 = "0cbw95bjxl667n9apcgng2kr5hq6bc7gp3vryw4dzixmfabxkcbw";
   }).outPath;
 
@@ -144,14 +113,16 @@ busted = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
 cassowary = buildLuarocksPackage {
   pname = "cassowary";
-  version = "2.2-1";
+  version = "2.3.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/cassowary-2.2-1.src.rock";
-    sha256 = "0laghzk5jbap5rfd8sasnrdrbda649sfciarba8rhygm0qni1azy";
+    url    = "https://luarocks.org/cassowary-2.3.1-1.src.rock";
+    sha256 = "1whb2d0isp2ca3nlli1kyql8ig9ny4wrvm309a1pzk8q9nys3pf9";
   };
+  disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua penlight ];
 
   meta = with lib; {
@@ -161,32 +132,16 @@ cassowary = buildLuarocksPackage {
     license.fullName = "Apache 2";
   };
 };
-cjson = buildLuarocksPackage {
-  pname = "lua-cjson";
-  version = "2.1.0.6-1";
 
-  src = fetchurl {
-    url    = "mirror://luarocks/lua-cjson-2.1.0.6-1.src.rock";
-    sha256 = "0dqqkn0aygc780kiq2lbydb255r8is7raf7md0gxdjcagp8afps5";
-  };
-  disabled = (luaOlder "5.1");
-  propagatedBuildInputs = [ lua ];
-
-  meta = with lib; {
-    homepage = "https://www.kyne.com.au/~mark/software/lua-cjson.php";
-    description = "A fast JSON encoding/parsing module";
-    license.fullName = "MIT";
-  };
-};
 compat53 = buildLuarocksPackage {
   pname = "compat53";
-  version = "0.7-1";
+  version = "0.8-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/compat53-0.7-1.src.rock";
-    sha256 = "0kpaxbpgrwjn4jjlb17fn29a09w6lw732d21bi0302kqcaixqpyb";
+    url    = "https://luarocks.org/compat53-0.8-1.src.rock";
+    sha256 = "14lw4mxh6ksy7fav1hbspp4ir8bjb7mhnkqdxjhj6jggl1dyf4z5";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
@@ -196,12 +151,13 @@ compat53 = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 cosmo = buildLuarocksPackage {
   pname = "cosmo";
   version = "16.06.04-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/cosmo-16.06.04-1.src.rock";
+    url    = "https://luarocks.org/cosmo-16.06.04-1.src.rock";
     sha256 = "1adrk74j0x1yzhy0xz9k80hphxdjvm09kpwpbx00sk3kic6db0ww";
   };
   propagatedBuildInputs = [ lpeg ];
@@ -213,12 +169,13 @@ cosmo = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 coxpcall = buildLuarocksPackage {
   pname = "coxpcall";
   version = "1.17.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/coxpcall-1.17.0-1.src.rock";
+    url    = "https://luarocks.org/coxpcall-1.17.0-1.src.rock";
     sha256 = "0n1jmda4g7x06458596bamhzhcsly6x0p31yp6q3jz4j11zv1zhi";
   };
 
@@ -228,13 +185,14 @@ coxpcall = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 cqueues = buildLuarocksPackage {
   pname = "cqueues";
-  version = "20190813.52-0";
+  version = "20200726.52-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/cqueues-20190813.52-0.src.rock";
-    sha256 = "1mfhana4xdfddzxmr7vkvm65679hx549f9k1rmsrz6is2gji5wvi";
+    url    = "https://luarocks.org/cqueues-20200726.52-0.src.rock";
+    sha256 = "1mxs74gzs2xmgnrvhl1dlqy1m3m5m0wwiadack97r4pdd63dcp08";
   };
   disabled = (lua.luaversion != "5.2");
   propagatedBuildInputs = [ lua ];
@@ -246,12 +204,13 @@ cqueues = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 cyrussasl = buildLuarocksPackage {
   pname = "cyrussasl";
   version = "1.1.0-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/cyrussasl-1.1.0-1.rockspec";
+    url    = "https://luarocks.org/cyrussasl-1.1.0-1.rockspec";
     sha256 = "0zy9l00l7kr3sq8phdm52jqhlqy35vdv6rdmm8mhjihcbx1fsplc";
   }).outPath;
 
@@ -259,31 +218,34 @@ cyrussasl = buildLuarocksPackage {
   "url": "git://github.com/JorjBauer/lua-cyrussasl",
   "rev": "78ceec610da76d745d0eff4e21a4fb24832aa72d",
   "date": "2015-08-21T18:24:54-04:00",
+  "path": "/nix/store/s7n7f80pz8k6lvfav55a5rwy5l45vs4l-lua-cyrussasl",
   "sha256": "14kzm3vk96k2i1m9f5zvpvq4pnzaf7s91h5g4h4x2bq1mynzw2s1",
-  "fetchSubmodules": true
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/JorjBauer/lua-cyrussasl";
+    homepage = "http://github.com/JorjBauer/lua-cyrussasl";
     description = "Cyrus SASL library for Lua 5.1+";
-    maintainers = with maintainers; [ vcunat ];
     license.fullName = "BSD";
   };
 };
+
 digestif = buildLuarocksPackage {
   pname = "digestif";
-  version = "0.2-1";
+  version = "0.4-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/digestif-0.2-1.src.rock";
-    sha256 = "03blpj5lxlhmxa4hnj21sz7sc84g96igbc7r97yb2smmlbyq8hxd";
+    url    = "https://luarocks.org/digestif-0.4-1.src.rock";
+    sha256 = "1hsdr48akviv0l8ldf1km3xcs3i7kf00ws2d893w23nn8rlanv7y";
   };
   disabled = (luaOlder "5.3");
-  propagatedBuildInputs = [ lua lpeg dkjson ];
+  propagatedBuildInputs = [ lua lpeg ];
 
   meta = with lib; {
     homepage = "https://github.com/astoff/digestif/";
@@ -291,12 +253,13 @@ digestif = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 dkjson = buildLuarocksPackage {
   pname = "dkjson";
   version = "2.5-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/dkjson-2.5-2.src.rock";
+    url    = "https://luarocks.org/dkjson-2.5-2.src.rock";
     sha256 = "1qy9bzqnb9pf9d48hik4iq8h68aw3270kmax7mmpvvpw7kkyp483";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -308,12 +271,13 @@ dkjson = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 fifo = buildLuarocksPackage {
   pname = "fifo";
   version = "0.2-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/fifo-0.2-0.src.rock";
+    url    = "https://luarocks.org/fifo-0.2-0.src.rock";
     sha256 = "082c5g1m8brnsqj5gnjs65bm7z50l6b05cfwah14lqaqsr5a5pjk";
   };
   propagatedBuildInputs = [ lua ];
@@ -324,13 +288,14 @@ fifo = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 http = buildLuarocksPackage {
   pname = "http";
-  version = "0.3-0";
+  version = "0.4-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/http-0.3-0.src.rock";
-    sha256 = "0vvl687bh3cvjjwbyp9cphqqccm3slv4g7y3h03scp3vpq9q4ccq";
+    url    = "https://luarocks.org/http-0.4-0.src.rock";
+    sha256 = "0a73rm097jw5rpc7zj5cavc9f79n52kck623kq2kgfczz2gv5qfv";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua compat53 bit32 cqueues luaossl basexx lpeg lpeg_patterns binaryheap fifo ];
@@ -342,12 +307,13 @@ http = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 inspect = buildLuarocksPackage {
   pname = "inspect";
   version = "3.1.1-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/inspect-3.1.1-0.src.rock";
+    url    = "https://luarocks.org/inspect-3.1.1-0.src.rock";
     sha256 = "0k4g9ahql83l4r2bykfs6sacf9l1wdpisav2i0z55fyfcdv387za";
   };
   disabled = (luaOlder "5.1");
@@ -359,12 +325,13 @@ inspect = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
 ldbus = buildLuarocksPackage {
   pname = "ldbus";
   version = "scm-0";
 
   knownRockspec = (fetchurl {
-    url    = "https://luarocks.org/dev/ldbus-scm-0.rockspec";
+    url    = "mirror://luarocks/ldbus-scm-0.rockspec";
     sha256 = "1yhkw5y8h1qf44vx31934k042cmnc7zcv2k0pv0g27wsmlxrlznx";
   }).outPath;
 
@@ -372,10 +339,13 @@ ldbus = buildLuarocksPackage {
   "url": "git://github.com/daurnimator/ldbus.git",
   "rev": "9e176fe851006037a643610e6d8f3a8e597d4073",
   "date": "2019-08-16T14:26:05+10:00",
+  "path": "/nix/store/gg4zldd6kx048d6p65b9cimg3arma8yh-ldbus",
   "sha256": "06wcz4i5b7kphqbry274q3ivnsh331rxiyf7n4qk3zx2kvarq08s",
-  "fetchSubmodules": true
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
   propagatedBuildInputs = [ lua ];
@@ -386,12 +356,13 @@ ldbus = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 ldoc = buildLuarocksPackage {
   pname = "ldoc";
   version = "1.4.6-2";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/ldoc-1.4.6-2.rockspec";
+    url    = "https://luarocks.org/ldoc-1.4.6-2.rockspec";
     sha256 = "14yb0qihizby8ja0fa82vx72vk903mv6m7izn39mzfrgb8mha0pm";
   }).outPath;
 
@@ -408,29 +379,31 @@ ldoc = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lgi = buildLuarocksPackage {
   pname = "lgi";
   version = "0.9.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lgi-0.9.2-1.src.rock";
+    url    = "https://luarocks.org/lgi-0.9.2-1.src.rock";
     sha256 = "07ajc5pdavp785mdyy82n0w6d592n96g95cvq025d6i0bcm2cypa";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/pavouk/lgi";
+    homepage = "http://github.com/pavouk/lgi";
     description = "Lua bindings to GObject libraries";
     license.fullName = "MIT/X11";
   };
 };
+
 linenoise = buildLuarocksPackage {
   pname = "linenoise";
   version = "0.9-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/linenoise-0.9-1.rockspec";
+    url    = "https://luarocks.org/linenoise-0.9-1.rockspec";
     sha256 = "0wic8g0d066pj9k51farsvcdbnhry2hphvng68w9k4lh0zh45yg4";
   }).outPath;
 
@@ -448,12 +421,13 @@ linenoise = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 ljsyscall = buildLuarocksPackage {
   pname = "ljsyscall";
   version = "0.12-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/ljsyscall-0.12-1.src.rock";
+    url    = "https://luarocks.org/ljsyscall-0.12-1.src.rock";
     sha256 = "12gs81lnzpxi5d409lbrvjfflld5l2xsdkfhkz93xg7v65sfhh2j";
   };
   disabled = (lua.luaversion != "5.1");
@@ -466,12 +440,13 @@ ljsyscall = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 lpeg = buildLuarocksPackage {
   pname = "lpeg";
   version = "1.0.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lpeg-1.0.2-1.src.rock";
+    url    = "https://luarocks.org/lpeg-1.0.2-1.src.rock";
     sha256 = "1g5zmfh0x7drc6mg2n0vvlga2hdc08cyp3hnb22mh1kzi63xdl70";
   };
   disabled = (luaOlder "5.1");
@@ -484,12 +459,13 @@ lpeg = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lpeg_patterns = buildLuarocksPackage {
   pname = "lpeg_patterns";
   version = "0.5-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lpeg_patterns-0.5-0.src.rock";
+    url    = "https://luarocks.org/lpeg_patterns-0.5-0.src.rock";
     sha256 = "0mlw4nayrsdxrh98i26avz5i4170a9brciybw88kks496ra36v8f";
   };
   propagatedBuildInputs = [ lua lpeg ];
@@ -500,12 +476,13 @@ lpeg_patterns = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 lpeglabel = buildLuarocksPackage {
   pname = "lpeglabel";
   version = "1.6.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lpeglabel-1.6.0-1.src.rock";
+    url    = "https://luarocks.org/lpeglabel-1.6.0-1.src.rock";
     sha256 = "0mihrs0gcj40gsjbh4x9b5pm92w2vdwwd1f3fyibyd4a8r1h93r9";
   };
   disabled = (luaOlder "5.1");
@@ -517,12 +494,13 @@ lpeglabel = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lpty = buildLuarocksPackage {
   pname = "lpty";
   version = "1.2.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lpty-1.2.2-1.src.rock";
+    url    = "https://luarocks.org/lpty-1.2.2-1.src.rock";
     sha256 = "1vxvsjgjfirl6ranz6k4q4y2dnxqh72bndbk400if22x8lqbkxzm";
   };
   disabled = (luaOlder "5.1");
@@ -534,64 +512,68 @@ lpty = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 lrexlib-gnu = buildLuarocksPackage {
   pname = "lrexlib-gnu";
-  version = "2.9.0-1";
+  version = "2.9.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lrexlib-gnu-2.9.0-1.src.rock";
-    sha256 = "036rda4rji1pbnbxk1nzjy5zmigdsiacqbzrbvciwq3lrxa2j5s2";
+    url    = "https://luarocks.org/lrexlib-gnu-2.9.1-1.src.rock";
+    sha256 = "07ppl5ib2q08mcy1nd4pixp58i0v0m9zv3y6ppbrzv105v21wdvi";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/rrthomas/lrexlib";
+    homepage = "http://github.com/rrthomas/lrexlib";
     description = "Regular expression library binding (GNU flavour).";
     license.fullName = "MIT/X11";
   };
 };
+
 lrexlib-pcre = buildLuarocksPackage {
   pname = "lrexlib-pcre";
-  version = "2.9.0-1";
+  version = "2.9.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lrexlib-pcre-2.9.0-1.src.rock";
-    sha256 = "1nqai27lbd85mcjf5cb05dbdfg460vmp8cr0lmb8dd63ivk8cbvx";
+    url    = "https://luarocks.org/lrexlib-pcre-2.9.1-1.src.rock";
+    sha256 = "0rsar13nax5r8f96pqjr0hf3civ1f1ijg4k7y69y5gi4wqd376lz";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/rrthomas/lrexlib";
+    homepage = "http://github.com/rrthomas/lrexlib";
     description = "Regular expression library binding (PCRE flavour).";
     maintainers = with maintainers; [ vyp ];
     license.fullName = "MIT/X11";
   };
 };
+
 lrexlib-posix = buildLuarocksPackage {
   pname = "lrexlib-posix";
-  version = "2.9.0-1";
+  version = "2.9.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lrexlib-posix-2.9.0-1.src.rock";
-    sha256 = "0ifpybf4m94g1nk70l0f5m45gph0rbp5wrxrl1hnw8ibv3mc1b1r";
+    url    = "https://luarocks.org/lrexlib-posix-2.9.1-1.src.rock";
+    sha256 = "0ajbzs3d6758f2hs95akirymw46nxcyy2prbzlaqq45ynzq02psb";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/rrthomas/lrexlib";
+    homepage = "http://github.com/rrthomas/lrexlib";
     description = "Regular expression library binding (POSIX flavour).";
     license.fullName = "MIT/X11";
   };
 };
+
 ltermbox = buildLuarocksPackage {
   pname = "ltermbox";
   version = "0.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/ltermbox-0.2-1.src.rock";
+    url    = "https://luarocks.org/ltermbox-0.2-1.src.rock";
     sha256 = "08jqlmmskbi1ml1i34dlmg6hxcs60nlm32dahpxhcrgjnfihmyn8";
   };
   disabled = (luaOlder "5.1");
@@ -603,12 +585,31 @@ ltermbox = buildLuarocksPackage {
     license.fullName = "New BSD License";
   };
 };
+
+lua-cjson = buildLuarocksPackage {
+  pname = "lua-cjson";
+  version = "2.1.0.6-1";
+
+  src = fetchurl {
+    url    = "https://luarocks.org/lua-cjson-2.1.0.6-1.src.rock";
+    sha256 = "0dqqkn0aygc780kiq2lbydb255r8is7raf7md0gxdjcagp8afps5";
+  };
+  disabled = (luaOlder "5.1");
+  propagatedBuildInputs = [ lua ];
+
+  meta = with lib; {
+    homepage = "http://www.kyne.com.au/~mark/software/lua-cjson.php";
+    description = "A fast JSON encoding/parsing module";
+    license.fullName = "MIT";
+  };
+};
+
 lua-cmsgpack = buildLuarocksPackage {
   pname = "lua-cmsgpack";
   version = "0.4.0-0";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/lua-cmsgpack-0.4.0-0.rockspec";
+    url    = "https://luarocks.org/lua-cmsgpack-0.4.0-0.rockspec";
     sha256 = "10cvr6knx3qvjcw1q9v05f2qy607mai7lbq321nx682aa0n1fzin";
   }).outPath;
 
@@ -616,26 +617,30 @@ lua-cmsgpack = buildLuarocksPackage {
   "url": "git://github.com/antirez/lua-cmsgpack.git",
   "rev": "57b1f90cf6cec46450e87289ed5a676165d31071",
   "date": "2018-06-14T11:56:56+02:00",
+  "path": "/nix/store/ndjf00i9r45gvy8lh3vp218y4w4md33p-lua-cmsgpack",
   "sha256": "0yiwl4p1zh9qid3ksc4n9fv5bwaa9vjb0vgwnkars204xmxdj8fj",
-  "fetchSubmodules": true
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/antirez/lua-cmsgpack";
+    homepage = "http://github.com/antirez/lua-cmsgpack";
     description = "MessagePack C implementation and bindings for Lua 5.1/5.2/5.3";
     license.fullName = "Two-clause BSD";
   };
 };
+
 lua-iconv = buildLuarocksPackage {
   pname = "lua-iconv";
   version = "7-3";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-iconv-7-3.src.rock";
+    url    = "https://luarocks.org/lua-iconv-7-3.src.rock";
     sha256 = "03xibhcqwihyjhxnzv367q4bfmzmffxl49lmjsq77g0prw8v0q83";
   };
   disabled = (luaOlder "5.1");
@@ -647,39 +652,44 @@ lua-iconv = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lua-lsp = buildLuarocksPackage {
   pname = "lua-lsp";
-  version = "scm-2";
+  version = "scm-5";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/lua-lsp-scm-2.rockspec";
-    sha256 = "0qk3i6j0km4d1fs61fxhkmnbxmgpq24nygr8wknl6hbj2kya25rb";
+    url    = "mirror://luarocks/lua-lsp-scm-5.rockspec";
+    sha256 = "19nlnglg50vpz3wmqvnqafajjkqp8f2snqnfmihz3zi5rpdvzjya";
   }).outPath;
 
   src = fetchgit ( removeAttrs (builtins.fromJSON ''{
   "url": "git://github.com/Alloyed/lua-lsp",
-  "rev": "905e71f9a97ea6366deb386503f9d976c87d9bab",
-  "date": "2019-09-22T09:46:00-04:00",
-  "sha256": "1mlgb2dp1ah76hjkbkwz0dp2y5mn491v5wf81nm086rb2fa3rzcg",
-  "fetchSubmodules": true
+  "rev": "91d4772d1cd264f8501c6da2326fc214ab0934f2",
+  "date": "2020-10-31T00:55:09-04:00",
+  "path": "/nix/store/awwwz5wq8v57kv69cfriivg7f6ipdx67-lua-lsp",
+  "sha256": "10filff5vani6ligv7ls5dgq70k56hql26gv3x101snmw9fkjz57",
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
   propagatedBuildInputs = [ lua dkjson lpeglabel inspect ];
 
   meta = with lib; {
     homepage = "https://github.com/Alloyed/lua-lsp";
-    description = "No summary";
+    description = "A Language Server implementation for lua, the language";
     license.fullName = "MIT";
   };
 };
+
 lua-messagepack = buildLuarocksPackage {
   pname = "lua-messagepack";
   version = "0.5.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-messagepack-0.5.2-1.src.rock";
+    url    = "https://luarocks.org/lua-messagepack-0.5.2-1.src.rock";
     sha256 = "0hqahc84ncl8g4miif14sdkzyvnpqip48886sagz9drl52qvgcfb";
   };
   disabled = (luaOlder "5.1");
@@ -691,12 +701,13 @@ lua-messagepack = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lua-resty-http = buildLuarocksPackage {
   pname = "lua-resty-http";
   version = "0.16.1-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-resty-http-0.16.1-0.src.rock";
+    url    = "https://luarocks.org/lua-resty-http-0.16.1-0.src.rock";
     sha256 = "0n5hiablpc0dsccs6h76zg81wc3jb4mdvyfn9lfxnhls3yqwrgkj";
   };
   disabled = (luaOlder "5.1");
@@ -705,16 +716,16 @@ lua-resty-http = buildLuarocksPackage {
   meta = with lib; {
     homepage = "https://github.com/ledgetech/lua-resty-http";
     description = "Lua HTTP client cosocket driver for OpenResty / ngx_lua.";
-    maintainers = with maintainers; [ bbigras ];
     license.fullName = "2-clause BSD";
   };
 };
+
 lua-resty-jwt = buildLuarocksPackage {
   pname = "lua-resty-jwt";
   version = "0.2.3-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-resty-jwt-0.2.3-0.src.rock";
+    url    = "https://luarocks.org/lua-resty-jwt-0.2.3-0.src.rock";
     sha256 = "0s7ghldwrjnhyc205pvcvgdzrgg46qz42v449vrri0cysh8ad91y";
   };
   disabled = (luaOlder "5.1");
@@ -723,16 +734,16 @@ lua-resty-jwt = buildLuarocksPackage {
   meta = with lib; {
     homepage = "https://github.com/cdbattags/lua-resty-jwt";
     description = "JWT for ngx_lua and LuaJIT.";
-    maintainers = with maintainers; [ bbigras ];
     license.fullName = "Apache License Version 2";
   };
 };
+
 lua-resty-openidc = buildLuarocksPackage {
   pname = "lua-resty-openidc";
   version = "1.7.4-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-resty-openidc-1.7.4-1.src.rock";
+    url    = "https://luarocks.org/lua-resty-openidc-1.7.4-1.src.rock";
     sha256 = "07ny9rl8zir1c3plrbdmd2a23ysrx45qam196nhqsz118xrbds78";
   };
   disabled = (luaOlder "5.1");
@@ -741,32 +752,32 @@ lua-resty-openidc = buildLuarocksPackage {
   meta = with lib; {
     homepage = "https://github.com/zmartzone/lua-resty-openidc";
     description = "A library for NGINX implementing the OpenID Connect Relying Party (RP) and the OAuth 2.0 Resource Server (RS) functionality";
-    maintainers = with maintainers; [ bbigras ];
     license.fullName = "Apache 2.0";
   };
 };
+
 lua-resty-openssl = buildLuarocksPackage {
   pname = "lua-resty-openssl";
-  version = "0.7.2-1";
+  version = "0.7.4-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-resty-openssl-0.7.2-1.src.rock";
-    sha256 = "00z6adib31ax4givq4zrhbfxa6l99l2hhlxnjpb6rfl4gf8h82kq";
+    url    = "https://luarocks.org/lua-resty-openssl-0.7.4-1.src.rock";
+    sha256 = "16rzcf6z9rgln4sc0v785awn2f3mi9yrswsk5xsfdsb2y1sdxdc0";
   };
 
   meta = with lib; {
     homepage = "https://github.com/fffonion/lua-resty-openssl";
     description = "No summary";
-    maintainers = with maintainers; [ bbigras ];
     license.fullName = "BSD";
   };
 };
+
 lua-resty-session = buildLuarocksPackage {
   pname = "lua-resty-session";
   version = "3.8-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-resty-session-3.8-1.src.rock";
+    url    = "https://luarocks.org/lua-resty-session-3.8-1.src.rock";
     sha256 = "1x4l6n0dnm4br4p376r8nkg53hwm6a48xkhrzhsh9fcd5xqgqvxz";
   };
   disabled = (luaOlder "5.1");
@@ -775,16 +786,16 @@ lua-resty-session = buildLuarocksPackage {
   meta = with lib; {
     homepage = "https://github.com/bungle/lua-resty-session";
     description = "Session Library for OpenResty – Flexible and Secure";
-    maintainers = with maintainers; [ bbigras ];
     license.fullName = "BSD";
   };
 };
+
 lua-term = buildLuarocksPackage {
   pname = "lua-term";
   version = "0.7-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/lua-term-0.7-1.rockspec";
+    url    = "https://luarocks.org/lua-term-0.7-1.rockspec";
     sha256 = "0r9g5jw7pqr1dyj6w58dqlr7y7l0jp077n8nnji4phf10biyrvg2";
   }).outPath;
 
@@ -800,12 +811,13 @@ lua-term = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 lua-toml = buildLuarocksPackage {
   pname = "lua-toml";
   version = "2.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-toml-2.0-1.src.rock";
+    url    = "https://luarocks.org/lua-toml-2.0-1.src.rock";
     sha256 = "0lyqlnydqbplq82brw9ipqy9gijin6hj1wc46plz994pg4i2c74m";
   };
   disabled = (luaOlder "5.1");
@@ -817,30 +829,64 @@ lua-toml = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
-lua-zlib = buildLuarocksPackage {
-  pname = "lua-zlib";
-  version = "1.2-0";
+
+lua-yajl = buildLuarocksPackage {
+  pname = "lua-yajl";
+  version = "2.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua-zlib-1.2-0.src.rock";
-    sha256 = "0qa0vnx45nxdj6fqag6fr627zsnd2bmrr9bdbm8jv6lcnyi6nhs2";
+    url    = "https://luarocks.org/lua-yajl-2.0-1.src.rock";
+    sha256 = "0bsm519vs53rchcdf8g96ygzdx2bz6pa4vffqlvc7ap49bg5np4f";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
+    homepage = "http://github.com/brimworks/lua-yajl";
+    description = "Integrate the yajl JSON library with Lua.";
+    maintainers = with maintainers; [ pstn ];
+    license.fullName = "MIT/X11";
+  };
+};
+
+lua-zlib = buildLuarocksPackage {
+  pname = "lua-zlib";
+  version = "1.2-1";
+
+  knownRockspec = (fetchurl {
+    url    = "https://luarocks.org/lua-zlib-1.2-1.rockspec";
+    sha256 = "18rpbg9b4vsnh3svapiqrvwwshw1abb5l5fd7441byx1nm3fjq9w";
+  }).outPath;
+
+  src = fetchgit ( removeAttrs (builtins.fromJSON ''{
+  "url": "git://github.com/brimworks/lua-zlib.git",
+  "rev": "82d0fdfe8ddd8645970f55011c13d87469501615",
+  "date": "2021-03-08T06:04:09-08:00",
+  "path": "/nix/store/2wr6l2djjl2l63wq1fddfm9ljrrkplr5-lua-zlib",
+  "sha256": "18q9a5f21fp8hxvpp4sq23wi7m2h0v3p3kydslz140mnryazridj",
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
+}
+ '') ["date" "path"]) ;
+
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
+  propagatedBuildInputs = [ lua ];
+
+  meta = with lib; {
     homepage = "https://github.com/brimworks/lua-zlib";
     description = "Simple streaming interface to zlib for Lua.";
     maintainers = with maintainers; [ koral ];
     license.fullName = "MIT";
   };
 };
+
 lua_cliargs = buildLuarocksPackage {
   pname = "lua_cliargs";
   version = "3.0-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lua_cliargs-3.0-2.src.rock";
+    url    = "https://luarocks.org/lua_cliargs-3.0-2.src.rock";
     sha256 = "0qqdnw00r16xbyqn4w1xwwpg9i9ppc3c1dcypazjvdxaj899hy9w";
   };
   disabled = (luaOlder "5.1");
@@ -852,12 +898,13 @@ lua_cliargs = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
 luabitop = buildLuarocksPackage {
   pname = "luabitop";
   version = "1.0.2-3";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/luabitop-1.0.2-3.rockspec";
+    url    = "https://luarocks.org/luabitop-1.0.2-3.rockspec";
     sha256 = "07y2h11hbxmby7kyhy3mda64w83p4a6p7y7rzrjqgc0r56yjxhcc";
   }).outPath;
 
@@ -865,10 +912,13 @@ luabitop = buildLuarocksPackage {
   "url": "git://github.com/LuaDist/luabitop.git",
   "rev": "81bb23b0e737805442033535de8e6d204d0e5381",
   "date": "2013-02-18T16:36:42+01:00",
+  "path": "/nix/store/jm7mls5zwkgkkf1hiwgbbwy94c55ir43-luabitop",
   "sha256": "0lsc556hlkddjbmcdbg7wc2g55bfy743p8ywdzl8x7kk847r043q",
-  "fetchSubmodules": true
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1") || (luaAtLeast "5.3");
   propagatedBuildInputs = [ lua ];
@@ -879,32 +929,34 @@ luabitop = buildLuarocksPackage {
     license.fullName = "MIT/X license";
   };
 };
+
 luacheck = buildLuarocksPackage {
   pname = "luacheck";
-  version = "0.23.0-1";
+  version = "0.24.0-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luacheck-0.23.0-1.src.rock";
-    sha256 = "0akj61c7k1na2mggsckvfn9a3ljfp4agnmr9gp3mac4vin99a1cl";
+    url    = "https://luarocks.org/luacheck-0.24.0-2.src.rock";
+    sha256 = "0in09mnhcbm84ia22qawn9mmfmaj0z6zqyii8xwz3llacss0mssq";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua argparse luafilesystem ];
 
   meta = with lib; {
-    homepage = "https://github.com/mpeterv/luacheck";
+    homepage = "https://github.com/luarocks/luacheck";
     description = "A static analyzer and a linter for Lua";
     license.fullName = "MIT";
   };
 };
+
 luacov = buildLuarocksPackage {
   pname = "luacov";
-  version = "0.14.0-1";
+  version = "0.15.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luacov-0.14.0-1.src.rock";
-    sha256 = "18wj4l55wxwvaimvmkg3g5c6amzz9czdpl57z56wmdb284454kca";
+    url    = "https://luarocks.org/luacov-0.15.0-1.src.rock";
+    sha256 = "14y79p62m1l7jwj8ay0b8nkarr6hdarjycr6qfzlc4v676h38ikq";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
@@ -913,12 +965,13 @@ luacov = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 luadbi = buildLuarocksPackage {
   pname = "luadbi";
   version = "0.7.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luadbi-0.7.2-1.src.rock";
+    url    = "https://luarocks.org/luadbi-0.7.2-1.src.rock";
     sha256 = "0mj9ggyb05l03gs38ds508620mqaw4fkrzz9861n4j0zxbsbmfwy";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -930,12 +983,13 @@ luadbi = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luadbi-mysql = buildLuarocksPackage {
   pname = "luadbi-mysql";
   version = "0.7.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luadbi-mysql-0.7.2-1.src.rock";
+    url    = "https://luarocks.org/luadbi-mysql-0.7.2-1.src.rock";
     sha256 = "1f8i5p66halws8qsa7g09110hwzg7pv29yi22mkqd8sjgjv42iq4";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -947,12 +1001,13 @@ luadbi-mysql = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luadbi-postgresql = buildLuarocksPackage {
   pname = "luadbi-postgresql";
   version = "0.7.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luadbi-postgresql-0.7.2-1.src.rock";
+    url    = "https://luarocks.org/luadbi-postgresql-0.7.2-1.src.rock";
     sha256 = "0nmm1hdzl77wk8p6r6al6mpkh2n332a8r3iqsdi6v4nxamykdh28";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -964,12 +1019,13 @@ luadbi-postgresql = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luadbi-sqlite3 = buildLuarocksPackage {
   pname = "luadbi-sqlite3";
   version = "0.7.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luadbi-sqlite3-0.7.2-1.src.rock";
+    url    = "https://luarocks.org/luadbi-sqlite3-0.7.2-1.src.rock";
     sha256 = "17wd2djzk5x4l4pv2k3c7b8dcvl46s96kqyk8dp3q6ll8gdl7c65";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -981,12 +1037,13 @@ luadbi-sqlite3 = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luadoc = buildLuarocksPackage {
   pname = "luadoc";
   version = "3.0.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luadoc-3.0.1-1.src.rock";
+    url    = "https://luarocks.org/luadoc-3.0.1-1.src.rock";
     sha256 = "112zqjbzkrhx3nvavrxx3vhpv2ix85pznzzbpa8fq4piyv5r781i";
   };
   propagatedBuildInputs = [ lualogging luafilesystem ];
@@ -997,15 +1054,16 @@ luadoc = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luaepnf = buildLuarocksPackage {
   pname = "luaepnf";
-  version = "0.3-1";
+  version = "0.3-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luaepnf-0.3-1.src.rock";
-    sha256 = "12z7radxk1dkyjqflr85sghywgc82xdg4mzb9mbwbrrqbnjw8mp5";
+    url    = "https://luarocks.org/luaepnf-0.3-2.src.rock";
+    sha256 = "01vghy965hkmycbvffb1rbgy16fp74103r2ihy3q78dzia4fbfvs";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua lpeg ];
 
   meta = with lib; {
@@ -1014,12 +1072,13 @@ luaepnf = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 luaevent = buildLuarocksPackage {
   pname = "luaevent";
   version = "0.4.6-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luaevent-0.4.6-1.src.rock";
+    url    = "https://luarocks.org/luaevent-0.4.6-1.src.rock";
     sha256 = "0chq09nawiz00lxd6pkdqcb8v426gdifjw6js3ql0lx5vqdkb6dz";
   };
   disabled = (luaOlder "5.1");
@@ -1031,15 +1090,16 @@ luaevent = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 luaexpat = buildLuarocksPackage {
   pname = "luaexpat";
-  version = "1.3.0-1";
+  version = "1.3.3-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luaexpat-1.3.0-1.src.rock";
-    sha256 = "15jqz5q12i9zvjyagzwz2lrpzya64mih8v1hxwr0wl2gsjh86y5a";
+    url    = "https://luarocks.org/luaexpat-1.3.3-1.src.rock";
+    sha256 = "0ahpfnby9qqgj22bajmrqvqq70nx19388lmjm9chljfzszy0hndm";
   };
-  disabled = (luaOlder "5.1");
+  disabled = (luaOlder "5.0");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
@@ -1049,6 +1109,7 @@ luaexpat = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luaffi = buildLuarocksPackage {
   pname = "luaffi";
   version = "scm-1";
@@ -1066,13 +1127,14 @@ luaffi = buildLuarocksPackage {
     license.fullName = "BSD";
   };
 };
+
 luafilesystem = buildLuarocksPackage {
   pname = "luafilesystem";
-  version = "1.7.0-2";
+  version = "1.8.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luafilesystem-1.7.0-2.src.rock";
-    sha256 = "0xhmd08zklsgpnpjr9rjipah35fbs8jd4v4va36xd8bpwlvx9rk5";
+    url    = "https://luarocks.org/luafilesystem-1.8.0-1.src.rock";
+    sha256 = "1kqr1vwazrysgxamx9x89vn3fparfffx986bq9a452ajayjp0qjp";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
@@ -1080,67 +1142,70 @@ luafilesystem = buildLuarocksPackage {
   meta = with lib; {
     homepage = "git://github.com/keplerproject/luafilesystem";
     description = "File System Library for the Lua Programming Language";
-    maintainers = with maintainers; [ flosse vcunat ];
+    maintainers = with maintainers; [ flosse ];
     license.fullName = "MIT/X11";
   };
 };
+
 lualogging = buildLuarocksPackage {
   pname = "lualogging";
-  version = "1.3.0-1";
+  version = "1.5.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lualogging-1.3.0-1.src.rock";
-    sha256 = "13fm1vlig3zmbfkmlq1vk3xfqhlvv5xf24b0p4k4d08395y858vc";
+    url    = "https://luarocks.org/lualogging-1.5.1-1.src.rock";
+    sha256 = "1c98dnpfa2292g9xhpgsrfdvm80r1fhndrpay1hcgnq0qnz1sibh";
   };
   propagatedBuildInputs = [ luasocket ];
 
   meta = with lib; {
-    homepage = "https://github.com/Neopallium/lualogging";
+    homepage = "https://github.com/lunarmodules/lualogging";
     description = "A simple API to use logging features";
     license.fullName = "MIT/X11";
   };
 };
+
 luaossl = buildLuarocksPackage {
   pname = "luaossl";
-  version = "20190731-0";
+  version = "20200709-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luaossl-20190731-0.src.rock";
-    sha256 = "0gardlh547hah5w4kfsdg05jmxzrxr21macqigcmp5hw1l67jn5m";
+    url    = "https://luarocks.org/luaossl-20200709-0.src.rock";
+    sha256 = "0y6dqf560j2bq2rjlm5572m82pj627fd2p9mjc5y6fbram764vga";
   };
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
     homepage = "http://25thandclement.com/~william/projects/luaossl.html";
     description = "Most comprehensive OpenSSL module in the Lua universe.";
-    maintainers = with maintainers; [ vcunat ];
     license.fullName = "MIT/X11";
   };
 };
+
 luaposix = buildLuarocksPackage {
   pname = "luaposix";
-  version = "34.1.1-1";
+  version = "35.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luaposix-34.1.1-1.src.rock";
-    sha256 = "1l9pkn3g0nzlbmmfj12rhfwvkqb06c21ydqxqgmnmd3w9z4ck53w";
+    url    = "https://luarocks.org/luaposix-35.0-1.src.rock";
+    sha256 = "1da27fsz6v2asxifr4yv0r8rp80g6bg021piqrabqk9lq23hvjks";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
-  propagatedBuildInputs = [ bit32 lua ];
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
+  propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/luaposix/luaposix/";
+    homepage = "http://github.com/luaposix/luaposix/";
     description = "Lua bindings for POSIX";
     maintainers = with maintainers; [ vyp lblasc ];
     license.fullName = "MIT/X11";
   };
 };
+
 luarepl = buildLuarocksPackage {
   pname = "luarepl";
   version = "0.9-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/luarepl-0.9-1.rockspec";
+    url    = "https://luarocks.org/luarepl-0.9-1.rockspec";
     sha256 = "1409lanxv4s8kq5rrh46dvld77ip33qzfn3vac3i9zpzbmgb5i8z";
   }).outPath;
 
@@ -1158,13 +1223,14 @@ luarepl = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luasec = buildLuarocksPackage {
   pname = "luasec";
-  version = "0.9-1";
+  version = "1.0.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luasec-0.9-1.src.rock";
-    sha256 = "00npxdwr3s4638i1jzmhyvss796rhbqk43zrzkb5lzzhqlxpsz5q";
+    url    = "https://luarocks.org/luasec-1.0.1-1.src.rock";
+    sha256 = "0384afx1w124ljs3hpp31ldqlrrgsa2xl625sxrx79yddilgk48f";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua luasocket ];
@@ -1176,12 +1242,13 @@ luasec = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 luasocket = buildLuarocksPackage {
   pname = "luasocket";
   version = "3.0rc1-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luasocket-3.0rc1-2.src.rock";
+    url    = "https://luarocks.org/luasocket-3.0rc1-2.src.rock";
     sha256 = "1isin9m40ixpqng6ds47skwa4zxrc6w8blza8gmmq566w6hz50iq";
   };
   disabled = (luaOlder "5.1");
@@ -1193,23 +1260,27 @@ luasocket = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 luasql-sqlite3 = buildLuarocksPackage {
   pname = "luasql-sqlite3";
-  version = "2.5.0-1";
+  version = "2.6.0-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/luasql-sqlite3-2.5.0-1.rockspec";
-    sha256 = "1r0x21i6n18x6915iaj9n309lqqqk1b30bg9h2a6y8jzk839hk09";
+    url    = "https://luarocks.org/luasql-sqlite3-2.6.0-1.rockspec";
+    sha256 = "0w32znsfcaklcja6avqx7daaxbf0hr2v8g8bmz0fysb3401lmp02";
   }).outPath;
 
   src = fetchgit ( removeAttrs (builtins.fromJSON ''{
   "url": "git://github.com/keplerproject/luasql.git",
-  "rev": "5496d60185db0c4578e8abe0c74343e99b799311",
-  "date": "2019-06-14T10:54:41-03:00",
-  "sha256": "1jdm1abj2ngklg7syq1ijj142ai9nmdl9370dk2bgamzlxc41pqm",
-  "fetchSubmodules": true
+  "rev": "8c58fd6ee32faf750daf6e99af015a31402578d1",
+  "date": "2020-09-16T13:25:07+01:00",
+  "path": "/nix/store/62g3f835iry7la34pw09dbqy2b7mn4q5-luasql",
+  "sha256": "0jad5fin58mv36mdfz5jwg6hbcd7s32x39lyqymn1j9mxzjc2m2y",
+  "fetchSubmodules": true,
+  "deepClone": false,
+  "leaveDotGit": false
 }
- '') ["date"]) ;
+ '') ["date" "path"]) ;
 
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
@@ -1221,12 +1292,13 @@ luasql-sqlite3 = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 luassert = buildLuarocksPackage {
   pname = "luassert";
   version = "1.8.0-0";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/luassert-1.8.0-0.rockspec";
+    url    = "https://luarocks.org/luassert-1.8.0-0.rockspec";
     sha256 = "1194y81nlkq4qmrrgl7z82i6vgvhqvp1p673kq0arjix8mv3zyz1";
   }).outPath;
 
@@ -1244,12 +1316,13 @@ luassert = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
 luasystem = buildLuarocksPackage {
   pname = "luasystem";
   version = "0.2.1-0";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luasystem-0.2.1-0.src.rock";
+    url    = "https://luarocks.org/luasystem-0.2.1-0.src.rock";
     sha256 = "091xmp8cijgj0yzfsjrn7vljwznjnjn278ay7z9pjwpwiva0diyi";
   };
   disabled = (luaOlder "5.1");
@@ -1261,30 +1334,32 @@ luasystem = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
 luautf8 = buildLuarocksPackage {
   pname = "luautf8";
-  version = "0.1.2-2";
+  version = "0.1.3-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luautf8-0.1.2-2.src.rock";
-    sha256 = "1q0qpr87alfzwwx5x0v9cggnz5fqi20jlqdh1a3i5cijjaj6xwdn";
+    url    = "https://luarocks.org/luautf8-0.1.3-1.src.rock";
+    sha256 = "1yp4j1r33yvsqf8cggmf4mhaxhz5lqzxhl9mnc0q5lh01yy5di48";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/starwing/luautf8";
+    homepage = "http://github.com/starwing/luautf8";
     description = "A UTF-8 support module for Lua";
     maintainers = with maintainers; [ pstn ];
     license.fullName = "MIT";
   };
 };
+
 luazip = buildLuarocksPackage {
   pname = "luazip";
   version = "1.2.7-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luazip-1.2.7-1.src.rock";
+    url    = "https://luarocks.org/luazip-1.2.7-1.src.rock";
     sha256 = "1yprlr1ap6bhshhy88qfphmmyg9zp1py2hj2158iw6vsva0fk03l";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -1296,30 +1371,13 @@ luazip = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
-lua-yajl = buildLuarocksPackage {
-  pname = "lua-yajl";
-  version = "2.0-1";
 
-  src = fetchurl {
-    url    = "mirror://luarocks/lua-yajl-2.0-1.src.rock";
-    sha256 = "0bsm519vs53rchcdf8g96ygzdx2bz6pa4vffqlvc7ap49bg5np4f";
-  };
-  disabled = (luaOlder "5.1");
-  propagatedBuildInputs = [ lua ];
-
-  meta = with lib; {
-    homepage = "https://github.com/brimworks/lua-yajl";
-    description = "Integrate the yajl JSON library with Lua.";
-    maintainers = with maintainers; [ pstn ];
-    license.fullName = "MIT/X11";
-  };
-};
 luuid = buildLuarocksPackage {
   pname = "luuid";
   version = "20120509-2";
 
   src = fetchurl {
-    url    = "mirror://luarocks/luuid-20120509-2.src.rock";
+    url    = "https://luarocks.org/luuid-20120509-2.src.rock";
     sha256 = "08q54x0m51w89np3n117h2a153wsgv3qayabd8cz6i55qm544hkg";
   };
   disabled = (luaOlder "5.2") || (luaAtLeast "5.4");
@@ -1331,13 +1389,14 @@ luuid = buildLuarocksPackage {
     license.fullName = "Public domain";
   };
 };
+
 luv = buildLuarocksPackage {
   pname = "luv";
-  version = "1.30.0-0";
+  version = "1.41.1-0";
 
   src = fetchurl {
-    url    = "https://luarocks.org/luv-1.30.0-0.src.rock";
-    sha256 = "1z5sdq9ld4sm5pws9qxpk9cadv9i7ycwad1zwsa57pj67gly11vi";
+    url    = "https://luarocks.org/luv-1.41.1-0.src.rock";
+    sha256 = "0l1v07nhrkzsddbcc4bak382b5flyw6x8g4i394ylbfl25zwcmai";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
@@ -1348,30 +1407,32 @@ luv = buildLuarocksPackage {
     license.fullName = "Apache 2.0";
   };
 };
+
 lyaml = buildLuarocksPackage {
   pname = "lyaml";
-  version = "6.2.5-1";
+  version = "6.2.7-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/lyaml-6.2.5-1.src.rock";
-    sha256 = "00pnz27sqi84arwkzjabz9v7w37h7xvwb5njk690cfmaknb1dfz6";
+    url    = "https://luarocks.org/lyaml-6.2.7-1.src.rock";
+    sha256 = "1sh1q84n109j4sammgbzyr69ni7fxnrjfwqb49fsbrhhd49vw7ca";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
-    homepage = "https://github.com/gvvaughan/lyaml";
+    homepage = "http://github.com/gvvaughan/lyaml";
     description = "libYAML binding for Lua";
     maintainers = with maintainers; [ lblasc ];
     license.fullName = "MIT/X11";
   };
 };
+
 markdown = buildLuarocksPackage {
   pname = "markdown";
   version = "0.33-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/markdown-0.33-1.src.rock";
+    url    = "https://luarocks.org/markdown-0.33-1.src.rock";
     sha256 = "01xw4b4jvmrv1hz2gya02g3nphsj3hc94hsbc672ycj8pcql5n5y";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
@@ -1383,12 +1444,13 @@ markdown = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 mediator_lua = buildLuarocksPackage {
   pname = "mediator_lua";
   version = "1.1.2-0";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/mediator_lua-1.1.2-0.rockspec";
+    url    = "https://luarocks.org/mediator_lua-1.1.2-0.rockspec";
     sha256 = "0frzvf7i256260a1s8xh92crwa2m42972qxfq29zl05aw3pyn7bm";
   }).outPath;
 
@@ -1406,12 +1468,32 @@ mediator_lua = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
+
+moonscript = buildLuarocksPackage {
+  pname = "moonscript";
+  version = "0.5.0-1";
+
+  src = fetchurl {
+    url    = "https://luarocks.org/moonscript-0.5.0-1.src.rock";
+    sha256 = "09vv3ayzg94bjnzv5fw50r683ma0x3lb7sym297145zig9aqb9q9";
+  };
+  disabled = (luaOlder "5.1");
+  propagatedBuildInputs = [ lua lpeg alt-getopt luafilesystem ];
+
+  meta = with lib; {
+    homepage = "http://moonscript.org";
+    description = "A programmer friendly language that compiles to Lua";
+    maintainers = with maintainers; [ arobyn ];
+    license.fullName = "MIT";
+  };
+};
+
 mpack = buildLuarocksPackage {
   pname = "mpack";
   version = "1.0.8-0";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/mpack-1.0.8-0.rockspec";
+    url    = "https://luarocks.org/mpack-1.0.8-0.rockspec";
     sha256 = "0hhpamw2bydnfrild274faaan6v48918nhslnw3kvi9y36b4i5ha";
   }).outPath;
 
@@ -1427,30 +1509,13 @@ mpack = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
-moonscript = buildLuarocksPackage {
-  pname = "moonscript";
-  version = "0.5.0-1";
 
-  src = fetchurl {
-    url    = "mirror://luarocks/moonscript-0.5.0-1.src.rock";
-    sha256 = "09vv3ayzg94bjnzv5fw50r683ma0x3lb7sym297145zig9aqb9q9";
-  };
-  disabled = (luaOlder "5.1");
-  propagatedBuildInputs = [ lua lpeg alt-getopt luafilesystem ];
-
-  meta = with lib; {
-    homepage = "http://moonscript.org";
-    description = "A programmer friendly language that compiles to Lua";
-    maintainers = with maintainers; [ arobyn ];
-    license.fullName = "MIT";
-  };
-};
 nvim-client = buildLuarocksPackage {
   pname = "nvim-client";
   version = "0.2.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/nvim-client-0.2.2-1.src.rock";
+    url    = "https://luarocks.org/nvim-client-0.2.2-1.src.rock";
     sha256 = "0bgx94ziiq0004zw9lz2zb349xaqs5pminqd8bwdrfdnfjnbp8x0";
   };
   disabled = (luaOlder "5.1");
@@ -1462,38 +1527,39 @@ nvim-client = buildLuarocksPackage {
     license.fullName = "Apache";
   };
 };
+
 penlight = buildLuarocksPackage {
   pname = "penlight";
-  version = "1.8.0-1";
+  version = "1.10.0-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/penlight-1.8.0-1.src.rock";
-    sha256 = "05x00dgsa79wzq187ww6i8j0s74nh2c852awni7xfshxgihwhc42";
+    url    = "https://luarocks.org/penlight-1.10.0-1.src.rock";
+    sha256 = "1awd87833688wjdq8ynbzy1waia8ggaz573h9cqg1g2zm6d2mxvp";
   };
   propagatedBuildInputs = [ luafilesystem ];
 
   meta = with lib; {
-    homepage = "http://tieske.github.io/Penlight";
+    homepage = "https://lunarmodules.github.io/penlight";
     description = "Lua utility libraries loosely based on the Python standard libraries";
-    maintainers = with maintainers; [ alerque ];
     license.fullName = "MIT/X11";
   };
 };
+
 plenary-nvim = buildLuarocksPackage {
   pname = "plenary.nvim";
   version = "scm-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/plenary.nvim-scm-1.rockspec";
+    url    = "https://luarocks.org/plenary.nvim-scm-1.rockspec";
     sha256 = "1cp2dzf3010q85h300aa7zphyz75qn67lrwf9v6b0p534nzvmash";
   }).outPath;
 
   src = fetchgit ( removeAttrs (builtins.fromJSON ''{
   "url": "git://github.com/nvim-lua/plenary.nvim",
-  "rev": "8bae2c1fadc9ed5bfcfb5ecbd0c0c4d7d40cb974",
-  "date": "2021-07-12T11:07:18-04:00",
-  "path": "/nix/store/djp9yacizsxs9hiz786fb900fri0m2l8-plenary.nvim",
-  "sha256": "1axvjv6n77afkjqk914dpc020kxd7mig6m5sr916k1n1q35jc4ny",
+  "rev": "4a30ce31e3132bc268dee6879b20cad28c0fe8fa",
+  "date": "2021-08-02T15:17:10-04:00",
+  "path": "/nix/store/1qfg23iylmj9j2kfs7px1nknm81saw7i-plenary.nvim",
+  "sha256": "0iwrw88vjsnkij1mdm1d7pg1wwksssd6jpngps2qb5cddh43d2c0",
   "fetchSubmodules": true,
   "deepClone": false,
   "leaveDotGit": false
@@ -1509,13 +1575,14 @@ plenary-nvim = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 rapidjson = buildLuarocksPackage {
   pname = "rapidjson";
-  version = "0.6.1-1";
+  version = "0.7.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/rapidjson-0.6.1-1.src.rock";
-    sha256 = "106zdkmqspwjw6ywzi7ya9zss52p9zggh53rg0i36sk19z0xmp6j";
+    url    = "https://luarocks.org/rapidjson-0.7.1-1.src.rock";
+    sha256 = "010y1n7nlajdsm351fyqmi916v5x8kzp5hbynwlx5xc9r9480w81";
   };
   disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
@@ -1526,29 +1593,31 @@ rapidjson = buildLuarocksPackage {
     license.fullName = "MIT";
   };
 };
+
 readline = buildLuarocksPackage {
   pname = "readline";
-  version = "2.6-0";
+  version = "3.0-0";
 
   src = fetchurl {
-    url    = mirror://luarocks/readline-2.6-0.src.rock;
-    sha256 = "1fvz7nqvkdazp30wn5n62n8i97qrfgznbykdpf8cnflqfpd1shms";
+    url    = "https://luarocks.org/readline-3.0-0.src.rock";
+    sha256 = "0qpa60llcgvc5mj67a2w3il9i7700lvimraxjpk0lx44zkabh6c8";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
+  disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
   propagatedBuildInputs = [ lua luaposix ];
 
   meta = with lib; {
-    homepage = "http://www.pjb.com.au/comp/lua/readline.html";
+    homepage = "http://pjb.com.au/comp/lua/readline.html";
     description = "Interface to the readline library";
     license.fullName = "MIT/X11";
   };
 };
+
 say = buildLuarocksPackage {
   pname = "say";
   version = "1.3-1";
 
   knownRockspec = (fetchurl {
-    url    = "mirror://luarocks/say-1.3-1.rockspec";
+    url    = "https://luarocks.org/say-1.3-1.rockspec";
     sha256 = "0bknglb0qwd6r703wp3hcb6z2xxd14kq4md3sg9al3b28fzxbhdv";
   }).outPath;
 
@@ -1566,12 +1635,13 @@ say = buildLuarocksPackage {
     license.fullName = "MIT <http://opensource.org/licenses/MIT>";
   };
 };
-std__debug = buildLuarocksPackage {
+
+std-_debug = buildLuarocksPackage {
   pname = "std._debug";
   version = "1.0.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/std._debug-1.0.1-1.src.rock";
+    url    = "https://luarocks.org/std._debug-1.0.1-1.src.rock";
     sha256 = "1qkcc5rph3ns9mzrfsa1671pb3hzbzfnaxvyw7zdly2b7ll88svz";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
@@ -1583,16 +1653,17 @@ std__debug = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
-std_normalize = buildLuarocksPackage {
+
+std-normalize = buildLuarocksPackage {
   pname = "std.normalize";
   version = "2.0.3-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/std.normalize-2.0.3-1.src.rock";
+    url    = "https://luarocks.org/std.normalize-2.0.3-1.src.rock";
     sha256 = "00pq2y5w8i052gxmyhgri5ibijksnfmc24kya9y3d5rjlin0n11s";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
-  propagatedBuildInputs = [ lua std__debug ];
+  propagatedBuildInputs = [ lua std-_debug ];
 
   meta = with lib; {
     homepage = "https://lua-stdlib.github.io/normalize";
@@ -1600,12 +1671,13 @@ std_normalize = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 stdlib = buildLuarocksPackage {
   pname = "stdlib";
   version = "41.2.2-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/stdlib-41.2.2-1.src.rock";
+    url    = "https://luarocks.org/stdlib-41.2.2-1.src.rock";
     sha256 = "1kricll40xy75j72lrbp2jpyxsj9v8b9d7qjf3m3fq1bpg6dmsk7";
   };
   disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
@@ -1618,15 +1690,16 @@ stdlib = buildLuarocksPackage {
     license.fullName = "MIT/X11";
   };
 };
+
 vstruct = buildLuarocksPackage {
   pname = "vstruct";
-  version = "2.0.2-1";
+  version = "2.1.1-1";
 
   src = fetchurl {
-    url    = "mirror://luarocks/vstruct-2.0.2-1.src.rock";
-    sha256 = "05k1685618wh7vg8av92mh1i1rjqg15x12gifbp9kyqzc2nk3kzq";
+    url    = "https://luarocks.org/vstruct-2.1.1-1.src.rock";
+    sha256 = "0hdlq8dr27k32n5qr87yisl14wg0k0zqd990xqvjqdxrf8d7iypw";
   };
-  disabled = (luaOlder "5.1") || (luaAtLeast "5.3");
+  disabled = (luaOlder "5.1");
   propagatedBuildInputs = [ lua ];
 
   meta = with lib; {
@@ -1635,6 +1708,6 @@ vstruct = buildLuarocksPackage {
   };
 };
 
-}
-/* GENERATED */
 
+}
+/* GENERATED - do not edit this file */
diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix
index 288f4fc078b..33a4b26d82d 100644
--- a/pkgs/development/lua-modules/overrides.nix
+++ b/pkgs/development/lua-modules/overrides.nix
@@ -347,4 +347,8 @@ with super;
       sourceRoot=./readline-2.6
     '';
   });
+
+
+  # aliases
+  cjson = super.lua-cjson;
 }