summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthieu Coudron <886074+teto@users.noreply.github.com>2023-10-14 22:03:12 +0200
committerMatthieu Coudron <886074+teto@users.noreply.github.com>2023-10-14 22:03:12 +0200
commit64b50c6f930324745e9836e6bf9fe71c3a26feb0 (patch)
tree7343092cf4204bab8bd23bb680416ffa51e966ab
parent54ca335a15e1c2d3d7d76f9c111191f5fab91bfd (diff)
downloadnixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar.gz
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar.bz2
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar.lz
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar.xz
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.tar.zst
nixpkgs-64b50c6f930324745e9836e6bf9fe71c3a26feb0.zip
luaPackages: introduce an alias mechanism
so that we can deprecate modules
-rw-r--r--pkgs/development/interpreters/lua-5/default.nix8
-rw-r--r--pkgs/development/lua-modules/aliases.nix42
2 files changed, 49 insertions, 1 deletions
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 {
+}