From 64b50c6f930324745e9836e6bf9fe71c3a26feb0 Mon Sep 17 00:00:00 2001 From: Matthieu Coudron <886074+teto@users.noreply.github.com> Date: Sat, 14 Oct 2023 22:03:12 +0200 Subject: luaPackages: introduce an alias mechanism so that we can deprecate modules --- pkgs/development/interpreters/lua-5/default.nix | 8 ++++- pkgs/development/lua-modules/aliases.nix | 42 +++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/lua-modules/aliases.nix diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix index 51d44e7f1e0..2fda54bef53 100644 --- a/pkgs/development/interpreters/lua-5/default.nix +++ b/pkgs/development/interpreters/lua-5/default.nix @@ -1,5 +1,5 @@ # similar to interpreters/python/default.nix -{ stdenv, lib, callPackage, fetchFromGitHub, fetchurl, fetchpatch, makeBinaryWrapper }: +{ stdenv, config, lib, callPackage, fetchFromGitHub, fetchurl, fetchpatch, makeBinaryWrapper }: let @@ -39,7 +39,13 @@ let selfHostHost = luaOnHostForHost.pkgs; selfTargetTarget = luaOnTargetForTarget.pkgs or {}; }; + + aliases = final: prev: + lib.optionalAttrs config.allowAliases + (import ../../lua-modules/aliases.nix lib final prev); + extensions = lib.composeManyExtensions [ + aliases generatedPackages overriddenPackages overrides diff --git a/pkgs/development/lua-modules/aliases.nix b/pkgs/development/lua-modules/aliases.nix new file mode 100644 index 00000000000..52adbc18986 --- /dev/null +++ b/pkgs/development/lua-modules/aliases.nix @@ -0,0 +1,42 @@ + +lib: self: super: + +### Deprecated aliases - for backward compatibility +### +### !!! NOTE !!! +### Use `./remove-attr.py [attrname]` in this directory to remove your alias +### from the `luaPackages` set without regenerating the entire file. + +with self; + +let + # Removing recurseForDerivation prevents derivations of aliased attribute + # set to appear while listing all the packages available. + removeRecurseForDerivations = alias: with lib; + if alias.recurseForDerivations or false + then removeAttrs alias ["recurseForDerivations"] + else alias; + + # Disabling distribution prevents top-level aliases for non-recursed package + # sets from building on Hydra. + removeDistribute = alias: with lib; + if isDerivation alias then + dontDistribute alias + else alias; + + # Make sure that we are not shadowing something from node-packages.nix. + checkInPkgs = n: alias: + if builtins.hasAttr n super + then throw "Alias ${n} is still in generated.nix" + else alias; + + mapAliases = aliases: + lib.mapAttrs (n: alias: + removeDistribute + (removeRecurseForDerivations + (checkInPkgs n alias))) + aliases; +in + +mapAliases { +} -- cgit 1.4.1